做网站的,谁愿意自己辛辛苦苦的成果就被别人轻松转载,如果是文字的,一般也就禁鼠标右键,再没什么好办法(当然,名人好打官司另说),但如果是图片,影音的文件,大可以利用http协议的header信息进行控制,这就是大多数web服务器日志要记录的referer。 公司新进一测试客户,就要求CDN方配合做防盗链。
公司自然有规范,直接ctrl+c、ctrl+v就搞定。但这些句子,还是值得细细研究一下的。 相关语句如下:
acl test_domain dstdomain .test.com
acl null_referer referer_regex .
acl right_referer referer_regex -i ^http://test.com ^http://.*.test.com
http_access allow test_domain !null_referer
http_access deny test_domain !right_referer
第一关键点,是第一行的那个“.”,“.”匹配的是除了“n”以外的任何一个字符。那么!null_referer也就是“n”,也就是说第一条access定义的,是允许referer为空行;
第二关键点,是access的“!”,“!”就是非,那么!right_referer定义的就是一切除了test.com以外的域名,也就是说第二条access定义的,是不允许所有其他网站。
这样的结果,也就是只有从test自己的网站,或者直接在浏览器地址栏里输入完整url,才能看到文件(linux上常用的wget、curl,默认的referer也是空,所以也可以。我又试试迅雷,其referer也是空,那么估计下载工具也都是这样)
(比较奇怪的一点是:squid的日志里,空不显示为“ ”,而是“-”,很能迷惑人呀!)
于是我想到新浪和百度呀这些博客之间转来转去的图片,一般都显示一个空图,但点开来(或许还要再刷一次)也一样能看。可见防盗链都是这么做的。
如果真就狠到了连直接url查看也不让,那就把null_referer的定义删除掉,自然也就可以了……
试到这里,发现另一个问题:nagios的监控,一般也是空referer的,如果真这么狠的要求,这个监控也得改了。 因为不管是curl还是wget,都可以伪装referer。 两个的伪装语法分别是: curl -e “http://www.test.com” -x $squidip:80 http://www.test.com/test.gif wget http://www.test.com/test.gif –refer=”http://www.test.com” -e “http_proxy=$squidip”
我对nagios不熟,不知道里面具体是用什么去check的,大概也差不离吧? 最后,像新浪百度这样的盗链显示图片怎么做的?也就是一句话的事,如下:
deny_info http://www.test.com/你盗链啦.gif
right_referer
用过Apache的朋友都知道mod_rewrite可以用来进行处理防盗链,Lighttpd也有同样的功能,而且总的来说, lighttpd.conf配置文件比httpd.conf更简单明了。 原来一直使用Apache来处理防盗链,今天修改了服务器上Lighttpd的配置,直接实现了防盗链,下面是防盗链部分的代码。
$HTTP["referer"] !~ "^($|http://.*/.(toplee/.com|8zone/.cn))" {
$HTTP["url"] =~ "/.(jpg|jpeg|png|gif|rar|zip|mp3)$" {
url.redirect = (".*" => "http://www.toplee.com/blog/")
}
}
相关推荐
学习心得,分享出来供大家学习。docker镜像构建,中间件mysql、lighttpd、Nginx、squid配置和启动、dubbo服务部署
squid和nginx配置正向代理访问API接口
squid文件上传大小配置
linux下的squid代理服务器配置详情。。。
目录 ...1.Net-snmp 获取与安装 1 2.Net-snmp 的配置 1 3.Net-snmp 常用命令 2 二、Squid 3 1.检查linux是否存在squid老版本 3 2.Squid 获取与安装 3 3.Squid 配置 4 4.Squid 测试 4 ...10.Squid 排错 12
Linux搭建Squid透明代理及squid+icap环境
squid代理服务器、iptables防火墙(安全)的设置和各自的功能
基于linux的开源精神,为了大家对squid的使用,我们可以学习下.这是一个基于java的squid的用户和一些基本配置的web管理界面.
1.2 Squid的简明历史 1.3 硬件和操作系统要求 1.4 squid是开源的 1.5 Squid的Web主页 1.6 获取帮助 1.6.1 FAQ 1.6.2 邮件列表 1.6.3 职业支持 1.7 启动Squid 第2章 获取Squid 2.1 版本和发布 2.2 ...
Squid中文权威指南 Squid中文权威指南 Squid中文权威指南
SQUID-MIB.mib. Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,...
squid可充当代理服务器,而对sian,netEase等大型的站点,squid又充当web加速器。我也是在网上找了很长一阵子才找到的,希望能给想学习squid的哥们有点帮助。
Squid is the most popular Web caching software in use today, and it works on a variety of platforms including Linux, FreeBSD, and Windows. Written by Duane Wessels, the creator of Squid, Squid: The ...
Squid 是自由软件和合作项目。假如你觉得squid 有用,请考虑以下面一种或几种方法来回报该项目: 1.参与squid 用户讨论列表,回答问题和帮助新用户。 2.测试新版本,报告bug 或其他问题。 3.致力于在线文档和FAQ...
本人在工作中维护着数台Squid服务器,多次参阅Duane Wessels(他也是Squid的创始人)的这本书,原书名是"Squid: The Definitive Guide",由O'Reilly出版。我在业余时间把它翻译成中文,希望对中文Squid用户有所帮助...
公司项目部署需要在服务器上部署,部署的时候要求离线操作,不能联网,所以不能yum install squid来安装squid 于是从网上下了最新版本的squid离线包,进行离线安装,这是我参照了网上的安装方法,解决了安装中的一些...
Squid是一个应用级代理,在保证客户端主机和服务器主机网络连通后,需要客户端软件做相应的设置后才能使用,比如给Internet Explorer设置代理服务器地址、端口等。 WEB缓存功能对于一个规模较大、访问繁忙的...
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享...
squid配置实用教程 squid配置实用教程