« 关于mysql判断字符串的诡异事件 Discuz!基础SEO优化之路径分析 »

Apache防盗链的使用和破解

今天一个朋友问到Apache防盗链的效果以及破解Apache防盗链的问题,于是决定就写一写Apache的防盗链。我凸,突然发现自己做优化做习惯了,文章前端必定要重复关键字几次,罪过啊罪过!

下面是引用木头同学的:

位置一般情况下在 /usr/local/apache/conf/httpd.conf
或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
添加

  1. SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref=1
  2. SetEnvIfNoCase Referer "^http://ccvita.com" local_ref=1
  3. <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
  4. Order Allow,Deny
  5. Allow from env=local_ref
  6. </filesmatch>

其中粗体的是您的网址,如果有多个,就加多行
斜体的是您需要防盗链的文件后缀,中间用|隔开

还一种写法,是用正则的,这种写法在各个版本的apache比较通用。
写法是

  1. SetEnvIfNoCase Referer "^<strong>http://.*\.yourdomin\.com</strong>" local_ref=1
  2. SetEnvIfNoCase Referer "<strong>.*\.yourdomin\.com</strong>" local_ref=1
  3. <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
  4. Order Allow,Deny
  5. Allow from env=local_ref
  6. </filesmatch>

其中粗体的部分有一点区别,用正则写法, \ 符号代表转义,因为.本身在正则中有自己的作用。

上面说的是Apache防盗链的使用,现在来说Apache防盗链的破解,说简单点Apache防盗链是通过来路来确定用户是否盗链的,如果自己写采集程序的话,我们完全可以利用php的curl_setopt函数中CURLOPT_REFERER和CURLOPT_USERAGENT这个两个函数去模拟referer和useragent的。

突然发现灯已经被媳妇关了,所以我要睡觉了,有空继续告诉大家如何用curl_setopt来做一些很有意思的事情哦。在《file_get_contents函数不能使用的解决方法》中我已经对curl_setopt这个函数有过利用了,大家可以先看看。

闪人,如果你有比较好的方式去模拟referer和useragent一定要告诉我,我对采集和模拟浏览器比较有兴趣

“Apache防盗链的使用和破解”

5条回复
  1. 恩 不错 期待你的下一篇关于防盗链的文章

  2. 正则的话try:
    ^(ssl|http|https)://(.+\.)?yourdomain\.com

    这两个
    “^http://.*\.yourdomin\.com” , “.*\.yourdomin\.com”
    都不能匹配 http://yourdomain.com的情况

  3. 有一些浏览器,比如 firefox 支持扩展插件来保护用户的隐私信息
    从而在请求 Web页面的时候,总是发送空的 referer.

    还有 Opera这个浏览器,不需要任何插件,浏览器本身有选项让用户
    决定是否发送 referer.

    在这两种情况下,用户是正常访客,但是却被Apache误以为是盗链
    而Deny

    建议还是加上
    SetEnvIf Referer “^$” local_ref=1

  4. 我考,好贴,真是难得一见的好贴。

回复留言

*
To prove you're a person (not a spam script), type the security word shown in the picture.
Anti-Spam Image

你可以使用XHTML标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>