下面让我们使用一个简单的方法就能搞定。
首先我们都明白,所谓防盗的原理也就是判断图片引用来源。所以,只要我们在这上面做文章就行了
实现思路,使用<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>
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)}
这相示例是我处理新浪图片时做的
哈,搞定,就是这么简单。。。
