您的位置:首页 > 其它

图片防盗链常用方法

2011-02-16 16:54 447 查看
很多朋友在问:图片防盗链是什么?其实就是不想自己的图片被别人盗取使用,且消耗的是自己的服务器流量,采取一种防止外链的方法来控制图片盗取使用。图片防盗链是困难的,完美的图片防盗几乎是不可能,有很多方法可以破解。但还是有很多方法能够减少图片盗用,现在就防盗链问题列举以下方法:隐藏图片使用空白图片覆盖真实图片,ASP图片防盗链,图片防盗链程序,CSS代码防盗链等。

隐藏图片使用空白图片覆盖真实图片

这个方法可以让别人无法获取真实的图片,除非查看源代码。

你可以把真实的图片做为背景图片,而使用一张透明图片匹配尺寸并覆盖到真实图片上面。这样,当别人使用右键查看或保存图片的时候,得到的是这张透明图片。这里是2个 JavaScript框架可以实现这种图片防盗链方法:

dwProtector for MooTools(http://davidwalsh.name/mootools-image-protector-dwprotector)

dwProtector for jQuery(http://davidwalsh.name/image-protector-plugin-for-jquery)

p{text-indent:2em;}

自动截切图片

Super Simple Image Tiles(http://supersimple.org/imagetiles/)

这是一个非常有效的图片防盗链方法。它支持两种方案:

让用户下载到的是被裁切过的图片;让用户下载到的是打上水印的图片;当用户尝试下载图片的时候,它就会进行截切或添加水印操作,但是这个方法也有很大的劣势:造成太多的服务器请求负荷,对网站整体性能影响不好你将拥有许多的图片文件。

使用带水印的图片 (预先生成)

预先给图片添加水印也是个防止图片被盗的有效方法,就算别人要盗,至少也为你免费宣传了一下自己的网站。但缺点也来了:图片会看的不清楚或不美观了(这对于图片展示类的网站尤其重要,但又正是该类网站特尤其图片防盗)。

可以下载然后裁剪水印(当然,如果你是那种把水印放在图片中间或水印有图片这么1/3大的家伙,就不用担心这个问题了),要手动添加水印的话,可以使用PhotoShop,GIMP,轻松水印等软件。也可以选择下面的一些在线图片水印工具:

PicMarkr(详细介绍)(http://parandroid.com/picmarkr-online-add-to-the-picture-watermarking-services/)

WatermarkTool(http://www.watermarktool.com/)

使用水印 (服务器端生成)

使用服务器端自动为图片添加水印,是件省心的事情。只是需要一些脚本知识。下面是一些相关的各种脚本语言的示例方案:

Asido: PHP Image Processing Library(http://asido.info/)

Asido 是一个PHP图像处理库,可以运行于 GD2, Magick Wand 和 Image Magick.

其它PHP程序解决方案:

Put watermark on images using PHP(http://www.phpjabbers.com/put-watermark-on-images-using-php-php20.html)

Watermark your images with PHP 5 and GD(http://www.litewebsite.com/?c=19)

Watermark images on the fly in PHP(http://www.sitepoint.com/article/watermark-images-php/)

ASP.NET程序防盗链解决方案:

Thumbnail and watermark images on the fly with ASP.NET(http://www.dmxzone.com/ShowDetail.asp?NewsId=10287)

Watermarking Images in ASP.NET with an HttpHandler(http://blog.donnfelker.com/post/Watermarking-Images-in-ASPNET-with-an-HttpHandler.aspx)

CoolWatermark (paid)(http://www.imagecomponent.net/products/coolwatermark.aspx)

Ruby 解决方案:

RMagick(http://rmagick.rubyforge.org/)

Watermarking your images with RMagick(http://snippets.dzone.com/posts/show/6014)

P.S:俺偶尔良心发现的时候,会考虑一下版权问题: 这种自动添加水印的方法是为每一张力图片都添加水印,但是否有权利为每张图片都添加水印呢?除非所有的图片是自己原创。或许这也是国外给图片打水印的网站比较少的原因之一。

使用Flash来显示图片

swfIR (详细介绍)(http://parandroid.com/swfir-to-increase-your-web-page-picture-variety-of-special-effects/)

swf image replacement 可以让图片显示于Flash内部,让右键下载变的不可能。并且,图片仍然可以使用CSS进行样式化。缺点可想而知: 拖慢网页载入速度。

基于浏览器的图片防盗

禁用右键菜单(http://www.dynamicdrive.com/dynamicindex9/noright.htm)

通过JavaScript来禁用点键菜单 是图片防盗的一个方法,但它仅仅是对于网络菜鸟来说,中等点的网民可以很轻松的查看到代码获取图片地址,再高等点的可以轻松破解,禁用你的禁用!

所以这并不是一个好方法,更重要的是它是极不利于用户浏览体验的。这有一个折中的方法,你可以通过一个jQuery 插件 来实现仅仅禁用保存功能。

禁用IE6的图像工具条

在IE6下,当鼠标悬浮在一张图片上时,会出现工具条,上面有保存功能,你可以使用下面的代码禁用:

meta http-equiv="imagetoolbar" content="no"

图片防盗链方法CSS代码

相信很多和我一样空间有限的朋友很怕图片被盗链,就那么几个连接数给别人一盗自己的网站就完了。其实实现防止盗链的方法很简单,在CSS中添加以下代码:

程序代码

img {

filter:expression(

this.不能去掉 ? "" :

(

(!this.complete) ? "" :

this.runtimeStyle.filter = ("progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'#\'" + "http://blog.51cto.com/viewpic.php?refimg=" + this.src + "')") +

String(this.不能去掉 = true).substr(0, 0) +

("http://blog.51cto.com/viewpic.php?refimg=" + this.src=\'#\'" 0)

)

);

}

以上就是我们常见的图片防盗链方法,大家可以选择适合自己的方法使用,减少图片外链,节约服务器的流量,提高访问速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: