破解使用做了防盗的图片

还在为不能在网页中引用那些做了防盗链的图片发愁吗?
下面让我们使用一个简单的方法就能搞定。
首先我们都明白,所谓防盗的原理也就是判断图片引用来源。所以,只要我们在这上面做文章就行了
实现思路,使用<Iframe>标签替代<IMG>标签,<Iframe>的src指向空白页“about:blank”,然后用脚本创建一个IMG对象,IMG对象的src属性指向原始图片路径,最后把IMG追加到<Iframe>的document内,并隐藏原始图片既可,这样服务器再取到的图片引用路就是空,也就可以显示图片了
我把代码做成了htc文件(htc只支持IE,其它浏览器各位可按此思路处理)
把下面代码Copy到RemotingImage.htc内:
<script language="javascript">
if(element.src.toLowerCase().indexOf("sina.com.cn"> -1)
{
    
var link = null;
    
if (element.parentElement.tagName.toUpperCase() == "A")
    
{
        link 
= element.parentElement.href;
    }

    
var id = "x_" + Math.random().toString().replace(".""");
    
var src = element.src + "?txyule.cn";
    element.outerHTML 
= "<iframe src='about:blank' name='"+ id +"' style='width:1px;height:1px'></iframe>"
    
var doc = window[id].document;
    
var img = doc.createElement("IMG");
    img.src 
= src;
    img.parentWindow 
= id;
    img.onload 
= function()
    
{
        
//window.status = (this.src + "[" + this.width + ":" + this.height + "]");
        var win = window.document.getElementById(this.parentWindow);
        win.style.width 
= this.width;
        win.style.height 
= this.height;
    }

    
if (link == null)
    
{
        doc.appendChild(img);
    }

    
else
    
{
        img.border 
= 0;
        
var a = doc.createElement("A");
        a.href 
= link;
        a.target 
= "_blank";
        a.appendChild(img);
        doc.appendChild(a);
    }

}

</script>

在HTML页面内为IMG定义样式时加上:img{behavior:url(/RemotingImage.htc)}
这相示例是我处理新浪图片时做的
哈,搞定,就是这么简单。。。
来看看我的网站效果吧 http://www.txyule.cn/ 内容都抓自新浪博客,里面的图片也都是引用新浪的图片
怎么样,效果不错吧
Tag标签: 防盗链

posted on 2008-04-16 23:03 ideas 阅读(2558) 评论(26)  编辑 收藏 网摘

Feedback

#1楼 2008-04-16 23:52 大犇[未注册用户]

我晕,看到的图片都是“此图片仅限于新浪博客用户交流与沟通”   回复  引用    

#2楼 2008-04-17 00:25 Clark Zheng      

有点失败。。。   回复  引用  查看    

#3楼 2008-04-17 02:32 饿[未注册用户]

太失败了吧   回复  引用    

#4楼 2008-04-17 02:39 苏州网站建设[未注册用户]

失败是成功之母,继续努力!   回复  引用    

#5楼 2008-04-17 08:42 留恋星空      

MARK   回复  引用  查看    

#6楼 2008-04-17 08:43 zzz[未注册用户]

“此图片仅限于新浪博客用户交流与沟通”

革命尚未成功,同志尚须努力!
  回复  引用    

#7楼 2008-04-17 08:44 Justin      

看来给照片加水印还是最保险的办法   回复  引用  查看    

#8楼 2008-04-17 08:44 david(范德萨)[未注册用户]

呵呵,我能看的到图片啊   回复  引用    

#9楼 2008-04-17 08:47 小庄      

我也能看到图片啊,可是这样是不是会增加sina的访问量?   回复  引用  查看    

#10楼 2008-04-17 08:50 xm[未注册用户]

最终结论:
IE没问题
FF有问题
  回复  引用    

#11楼 2008-04-17 08:54 nfa2dfa      

@xm
人家js并没有做这种考虑。
  回复  引用  查看    

#12楼 2008-04-17 09:15 狼Robot      

学习了.   回复  引用  查看    

#13楼 2008-04-17 09:36 簡簡單單..      

对付这种轻量级的"防盗链", 使用这种方式虽然可行..
但是"防盗链"一旦加上Session验证, 定会失败收场..
  回复  引用  查看    

#14楼 2008-04-17 09:52 杨正祎(阿一)      

个人感觉这个办法不是很好,非常影响网页效率。   回复  引用  查看    

#15楼 2008-04-17 09:59 菜菜灰      

ie7也看不到   回复  引用  查看    

#16楼 2008-04-17 10:13 zzz[未注册用户]

似乎用div span 这类容器都是可以的,我试了下用iframe在firefox下第一张是不行的。。
下面是测试过的代码

<div>
<a href="http://static4.photo.sina.com.cn/bmiddle/3d23130344af09cd46af3">
<img src="http://static4.photo.sina.com.cn/bmiddle/3d23130344af09cd46af3"></img></a>
<img src="http://static4.photo.sina.com.cn/bmiddle/3d23130344af09cd46af3"></img>
<img src="http://static16.photo.sina.com.cn/bmiddle/4b13840544ae669c567ff"></img>
<img src="http://static8.photo.sina.com.cn/bmiddle/4b13840544ae69ed9c617"></img>
</div>
<script type='text/javascript'>
var images = document.images;
for (var i = 0, l = images.length; i < l; i++) {
xxImage(images[i]);
}

function xxImage(img) {
var link, src;
if (img.parentElement && img.parentElement.tagName == 'A')
link = img.parentElement.href;
src = img.src;

var span = document.createElement('span');
img.parentNode.replaceChild(span, img);

var innerImg = document.createElement('img');
img.src = src;
img.style.border = '0px';
img.onload = function() {
span.style.width = this.width;
span.style.height = this.height;
};
if (!link)
span.appendChild(img);
else {
var a = document.createElement('a');
a.href = link;
a.target = '_blank';/*似乎在firefox无效...纳闷了...*/
a.appendChild(img);
span.appendChild(a);
}
}
</script>
  回复  引用    

#17楼 2008-04-17 10:14 zzz[未注册用户]

咋都缩到左边去了。。。   回复  引用    

#18楼 2008-04-17 10:15 隨風.NET      

不错 果然都看到图了   回复  引用  查看    

#19楼[楼主] 2008-04-17 10:20 ideas      

看不到图的刷新一下就行了
这种方法只支持IE。。。

搞着玩玩哈。。。
革命尚未成功,兄弟们一起努力哈。。。
  回复  引用  查看    

#20楼 2008-04-17 10:59 zzz[未注册用户]

不小心弄错了,楼主给把那条删了吧


似乎rssimg.mail.qq.com/readpic?url=这个可以直接用诶
  回复  引用    

#21楼 2008-04-17 11:25 kyorry      

如果不用htc,别的行吗   回复  引用  查看    

#22楼[楼主] 2008-04-17 12:22 ideas      

其实我也是在抓取新浪博客内容时,遇到图片防盗链的问题,很是郁闷,于是就想出此招,拿出来一个思路给大家分享。当然该方法有些不成熟的地方,继续努力,集思广义。。。

to:kyorry
不用htc也可以,你把脚本改改放到页面也是可以的
  回复  引用  查看    

#23楼 2008-04-17 13:31 李战      

http://www.cnblogs.com/Emoticons/yoyocici/223852199.gif" alt="" />路过,继续支持楼主   回复  引用  查看    

#24楼 2008-04-17 14:02 Jim~      

--引用--------------------------------------------------
簡簡單單..: 对付这种轻量级的&quot;防盗链&quot;, 使用这种方式虽然可行..
但是&quot;防盗链&quot;一旦加上Session验证, 定会失败收场..
--------------------------------------------------------
轻量级网站用session还行 但是访问量大的网站也用session 那就挂了
  回复  引用  查看    

#25楼 2008-04-17 16:49 birdshome      

嗯,随便防一下,随便破一下,挺和谐的   回复  引用  查看    

#26楼 2008-04-18 18:14 想酷就要勤[未注册用户]

sina不是好同志
盗链不是好同志
我比较赞同百度空间的做法,百度空间直接盗链有问题,但是访问过一遍的人就可以转载文章的时候可以很容易下载到本地服务器上面
  回复  引用    





发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1157107




相关文章:

相关链接:

My Links

Blog Stats

News

与我联系

搜索

 

常用链接

留言簿

我参加的小组

我的标签

随笔分类

随笔档案

我的朋友

最新评论

阅读排行榜

评论排行榜