Code笔记 之:防盗链(图片)
图片防盗和图片防盗链有什么区别呢?
图片防盗: 是不想自己的图片被别人使用。
图片防盗链: 是不想自己的图片被别人使用,且消耗的是自己的服务器流量。
图片防盗是困难的,完美的图片防盗那几乎是不可能的。但还是有很多方法能够减少图片盗用,下面是10种,选一种你喜欢的吧。
隐藏图片
使用空白图片覆盖真实图片
这个方法可以让别人无法获取真实的图片,除非查看源代码。
你可以把真实的图片做为背景图片,而使用一张透明图片匹配尺寸并覆盖到真实图片上面。
例如:
<div id="image1" style="background-image: url(originalImage.jpg);">
<img src="blank.gif" height="250px" width="300px">
</div>
这样,当别人使用右键查看或保存图片的时候,得到的是这张透明图片。
这里是2个 javascript框架可以实现这种图片防盗链方法:
dwProtector for MooTools
dwProtector for jQuery
自动截切图片
Super Simple Image Tiles
这是一个非常有效的图片防盗链方法.
它支持两种方案:
让用户下载到的是被裁切过的图片。
让用户下载到的是打上水印的图片。
当用户尝试下载图片的时候,它就会进行截切或添加水印操作,但是这个方法也有很大的劣势:
造成太多的服务器请求负荷,对网站整体性能影响不好
你将拥有许多的图片文件
使用带水印的图片 (预先生成)
预先给图片添加水印也是个防止图片被盗的有效方法,就算别人要盗,至少也为你免费宣传了一下自己的网站。
但缺点也来了:
图片会看的不清楚或不美观了(这对于图片展示类的网站尤其重要,但又正是该类网站特尤其图片防盗)
可以下载然后裁剪水印(当然,如果你是那种把水印放在图片中间或水印有图片这么1/3大的家伙,就不用担心这个问题了)
要手动添加水印的话,可以使用photoshop,GIMP,轻松水印等软件。也可以选择下面的一些在线图片水印工具:
PicMarkr(详细介绍)
WatermarkTool
延伸阅读: 8款为图片添加水印的软件
使用水印 (服务器端生成)
使用服务器端自动为图片添加水印,是件省心的事情。只是需要一些脚本知识。
下面是一些相关的各种脚本语言的示例方案:
Asido: PHP Image Processing Library
Asido 是一个PHP图像处理库,可以运行于 GD2, Magick Wand 和 Image Magick.
这里 是 Asido 为图片添加水印的详细说明.
其它PHP 解决方案:
Put watermark on images using PHP
Watermark your images with PHP 5 and GD
Watermark images on the fly in PHP
ASP.NET 解决方案:
Thumbnail and watermark images on the fly with ASP.NET
Watermarking Images in ASP.NET with an HttpHandler
CoolWatermark (paid)
Ruby 解决方案:
RMagick
Watermarking your images with RMagick
P.S:俺偶尔良心发现的时候,会考虑一下版权问题: 这种自动添加水印的方法是为每一张力图片都添加水印,但是否有权利为每张图片都添加水印呢?除非所有的图片是自己原创。或许这也是国外给图片打水印的网站比较少的原因之一。
使用Flash来显示图片
swfIR (详细介绍)
swf image replacement 可以让图片显示于Flash内部,让右键下载变的不可能。
并且,图片仍然可以使用CSS进行样式化。
缺点可想而知: 拖慢网页载入速度。
基于浏览器的图片防盗
禁用右键菜单
通过JavaScript来禁用点键菜单 是图片防盗的一个方法,但它仅仅是对于网络菜鸟来说,中等点的网民可以很轻松的查看到代码获取图片地址,再高等点的可以轻松破解,禁用你的禁用!
所以这并不是一个好方法,更重要的是它是极不利于用户浏览体验的。
这有一个折中的方法,你可以通过一个jQuery 插件 来实现仅仅禁用保存功能.
禁用IE6的图像工具条
在IE6下,当鼠标悬浮在一张图片上时,会出现工具条,上面有保存功能,你可以使用下面的代码禁用:
<meta http-equiv="imagetoolbar" content="no">
//php图片防盗链功能
$ADMIN[defaulturl] = "img/no.gif";//盗链返回的地址
$okaysites = array("http://www.5v6.com/","http://t.5v6.com/"); //白名单
$ADMIN[url_1] = "http://t.5v6.com/";//下载地点1
$ADMIN[url_2] = "";//下载地点2,以此类推
$reffer = $HTTP_REFERER;
if($reffer) {
$yes = 0;
while(list($domain, $subarray) = each($okaysites)) {
if (ereg($subarray,"$reffer")) {
$yes = 1;
}
}
$theu = "url"."_"."$site";
if ($ADMIN[$theu] AND $yes == 1) {
header("Location: $ADMIN[$theu]/$file");
} else {
header("Location: $ADMIN[defaulturl]");
}
} else {
header("Location: $ADMIN[defaulturl]");
}
?>
--------------------------------------------------------------
由于个人对技术知识的表达不是很专业,还望各位看官
多多见谅,多多评论,多多指导!
不吝赐教~(~_~)
---------------------------------------------------------------
撰写日期:2016-06-14 11:01:25
更新时间:2016-06-20 11:01:04
Code笔记 之:防盗链(图片)的更多相关文章
- Nginx防盗链的3种方法 文件防盗链 图片防盗链 视频防盗链 linux防盗链
Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品,目前Web服务器调查显示Apache下降Ngni ...
- 部分网站允许空白referer的防盗链图片的js破解代码
Reference: http://www.114390.com/article/27125.htm Javascript源码: 复制代码代码如下: function showImg( url ) { ...
- nginx配置图片防盗链
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${ expires 30d; access_log off; valid_referers none blocked ...
- HTTP 笔记与总结(6)referer 头与防盗链
在百度贴吧(或 QQ 空间等)中找到一张图片,复制图片地址,在站外通过 img src 引用,会发现: 此外,在一些统计软件中,统计访客的来路(直接访问.外部链接.搜索引擎),都用到了 HTTP 协议 ...
- Java破解图片防盗链
前言 今天想下载几张好看的壁纸,然后发现了一张是自己比较喜欢的额.然后点进去看看,WOW!好多好看的壁纸呀,于是我就起了贪念.哈哈!想把他们这一组图片打包下载,小白的方法就是一张一张下载,那样对于我们 ...
- nginx防盗链配置
Ps:防盗链的意义就是保证自己的版权,不免网站的流量流失,为他人做嫁衣.下面是网上看到的三种方法: 修改 /usr/local/nginx/conf/nginx.conf 这个配置文件.找到locat ...
- 05 referer头与防盗链
像上图中的这个效果,当我们在网页里引用站外图片时,常出现这样的情况. ??? 服务器是怎么样知道,这个图片是在站外被引用的呢? 还有在网站的统计结果,统计用户从何而来,如下图 ??? 统计时,是如何得 ...
- php防盗链技术
在Http协议中,头信息里,有一个重要的选项: Referer Referer: 代表网页的来源,即上一页的地址 如果是直接在浏览器上输入地址,回来进来,则没有Referer头. 这也是: 为什么服务 ...
- Nginx跨域访问场景配置和防盗链
跨域访问控制 跨域访问 为什么浏览器禁止跨域访问 不安全,容易出现CSRF攻击! 如果黑客控制的网站B在响应头里添加了让客户端去访问网站A的恶意信息,就会出现CSRF攻击 Nginx如何配置跨域访问 ...
- PHP及相关服务器防盗链
服务器防盗链 假设域名为www.localhost.com 1.apache配置httpd.conf SetEnvIfNoCase Referer "^http://www.localhos ...
随机推荐
- C#微信开发小白成长教程一(公众平台的工作原理与调试环境部署,附视频)
黑夜给了我黑色的眼睛,我决定录视频到天明.半年前的现在,我还在苦逼着加着班,半年后的今天我依旧苦逼着加着班.不过现在的是为自己加班,作为一个资深程序小白,一个月前我光荣的成了一个不称职的资本家,不称职 ...
- 网页中三角切边还半透明,现在的设计师越来越牛,css也要跟上啊
需求 今天在群里看到一个需求,啊这种三角形缺角怎么做啊,还带半透明阴影的. 分析 要实现这个,可以用css做三角,网上找一下代码,像这样. 由于以前没有试过border能不能带透明,所以需要试验一下. ...
- .net程序员转行做手游开发经历(三)
这次就主要讲讲我们开发的过程. 策划是我们团队的一个人成员专门负责,我们几个算是出谋划策.我这边的理解是,策划首先需要对所做的事情一定要有一定的把握,意思是尽可能的想到这件事情的影响范围,类似项目管理 ...
- 【BZOJ1001】狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 7530 Solved: 1724[Submit][S ...
- word2vec 实践
关于word2vec,这方面无论中英文的参考资料相当的多,英文方面既可以看官方推荐的论文,也可以看gensim作者Radim Řehůřek博士写得一些文章.而中文方面,推荐 @licstar的< ...
- hdu1754 I hate it线段树模板 区间最值查询
题目链接:这道题是线段树,树状数组最基础的问题 两种分类方式:按照更新对象和查询对象 单点更新,区间查询; 区间更新,单点查询; 按照整体维护的对象: 维护前缀和; 维护区间最值. 线段树模板代码 # ...
- EXCEL时间日期转换为常规字符显示
当我们做报表导入的时候,我们不得不思考这样一个问题,遇到的数据是时间格式的,而在EXCEL中,时间格式的单元格实际上是以1900年以后来计算的,例如,1900年是闰年(显然可以被4整除),那么1900 ...
- Alpha版本冲刺现场演示和阶段验收的总结
一共15个组.有13个组参加了今天的现场演示,分别是YZH.Radio Group.FZU5BOYS.静静看.Clean Code.Mod4.F4.For the Dream.Journey of C ...
- Java文件拷贝
package com.lxm.demos; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io. ...
- Mybatis 异常: The content of elements must consist of well-formed character data or markup
原因很简单:在ibatis的配置文件中不能出现小于号(>) <delete id="deleteByPrimaryKey" parameterType=&quo ...