将迅雷拒于Linux服务器门外

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
头像
midoriumi
帖子: 40
注册时间: 2009-02-24 13:07
联系:

将迅雷拒于Linux服务器门外

#1

帖子 midoriumi » 2009-10-13 22:28

首次发贴,如有考虑不周之处还请版主指出。

本文最先发布在我自己的博客上,不过考虑到那边人少,看到的人不多,为了让更多人知道如何对付迅雷,就转到这里来了。此外,为了避免广告嫌疑,我把原文中的一些不太重要的自家链接和说明都去掉了。

发此文的另一个目的是,希望有牛人能看到libantixunlei并为pureftpd之外的其他FTP服务器软件加上反迅雷的功能。
----------------------------------

在Apache上屏蔽迅雷

在 HTTP协议上识别迅雷是通过迅雷的用户代理(User Agent)字串来进行识别的。我对我自己的网站的IIS访问日志以及一个评分系统的评分记录里面记录的用户字串进行了分析,之后发现迅雷使用的几个用户代理应该是唯一的,在访问日志中,除了下载文件的记录,只发现了极少量使用了和迅雷相同的用户代理的记录,这可能是个别用户出于杂七杂八的目使用迅雷下载普通网页而留下的日志。

有了这个分析结果,就可以保证通过用户代理来识别迅雷不会误杀普通用户了。但通过用户代理来识别迅雷有一个问题,如果以后迅雷把自己的用户代理改成和IE的用户代理一样的话怎么办?没关系,至少到现在为止(09年国庆),我还没有发现迅雷做此举动,等迅雷有动作了再想对策也不迟。另外,这里还有一个“脏数据”的方法(题外话,链接删掉了),如果迅雷很不厚道地把自己伪装成IE的话,我们就只好也很不厚道地使用脏数据方法先反击一下迅雷。虽然脏数据对屏蔽迅雷没有什么帮助,至少可以出出气,让非最新版迅雷用户下载不到正确的内容,就这点应该够迅雷受的了,用户体验大受打击,我想大多数用户都不会追着使用最新版的。

于是,我在废话里面说了,使用Apache的mod_rewrite模块就可以很容易地屏蔽迅雷,因为这个模块的重写规则可以将用户代理作为判断条件。我们只要把用户代理和迅雷是一样的连接请求重定向到一个错误页面,或者干脆直接返回403,就可以在HTTP协议上屏蔽迅雷了。

到目前为止,我们观察到的迅雷使用的用户代理有以下几个:

代码: 全选

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; )      
Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 3.5.20706)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
放心,根据网站访问日志和评分系统的日志,这些用户代理应该都是迅雷特有的,在.htaccess文件里面把带有这些用户代理的请求重定向到错误页面就可以了。

当然对于普通网页来说,是没有必要屏蔽迅雷的,所以我们只需要屏蔽访问大文件的请求就可以了,于是.htaccess里面的内容就像下面这样:

代码: 全选

RewriteEngine On

#Anti Thunder
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1\)$  [NC,OR]
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$  [NC,OR]
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/5\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0\)$  [NC,OR]
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ \)$   [NC,OR]
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.0;\ \.NET\ CLR\ 3\.5\.20706\)$  [NC,OR]
RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla/4\.0\ \(compatible;\ MSIE\ 6\.0;\ Windows\ NT\ 5\.1;\ SV1;\ \.NET\ CLR\ 1\.1\.4322;\ \.NET\ CLR\ 2\.0\.50727\)$  [NC]
RewriteRule  ^.*\.(gif|jpg|bmp|zip|rar|exe|mp3|swf)$   /   [NC,F]  
如果你想制定更复杂的重写规则,可以参考Apache手册中mod_rewrite的部分,见: http://lamp.linux.gov.cn/Apache/ApacheM ... write.html

对于其他Web服务器软件,多多少少都能提供一些可将用户代理作为判断条件的网址重写模块或插件,参照上面Apache的设置方法对这些软件进行设置,都能达到屏蔽迅雷的效果。

在FTP协议上反迅雷

在 FTP上反迅雷就比较麻烦,这需要获得每一个FTP会话的会话唯一标识和客户端发送的每一条FTP指令。因为这样的需求很少见,所以Linux下的FTP 软件很少有提供相应的接口供我们使用。不过还好,Linux下的FTP软件大多都是开源的,我们可以自己修改源码。于是我就写了 libantixunlei,然后针对不同的FTP软件,就套用libantixunlei来修改其源码,然后编译安装就可以了。

因为要修改FTP服务器软件的源码,这对技术的要求就比较高了,不见得每个服务器管理员都会C语言,所以对大多数服务器管理员来说目前还是只能等待别人为FTP软件写插件(如果支持的话),或者发布经过修改的FTP服务器软件源码。

于是,如果你想为某个FTP软件加入反迅雷的功能,请访问 http://code.google.com/p/libantixunlei 。如果对libantixunlei的用法不太清楚的话,请给我发邮件,我会告诉你FTP协议上屏蔽迅雷的原理和应该使用libantixunei的哪些接口来识别迅雷。

不过先不要失望,现在已经有了可以反迅雷的Linux上的FTP服务器软件了,在我写这篇文章的时候我已经给pure-ftpd 1.0.22版本成功地打上了反迅雷补丁,补丁文件请到: http://code.google.com/p/libantixunlei/downloads/list 去下载,下载回来以后给纯净的pure-ftpd-1.0.22版本打上这个补丁(进入pureftpd/src目录后使用patch命令),然后编译安装就支持反迅雷了。对于其他版本的 pure-ftpd我没有试验过是否能使用这个补丁,不知道能否正常使用。另外在此提醒一下没有自己编译安装过软件的管理员,pureftpd的一些功能需要在./configure的时候加上一些参数才能使用,具体请看源码根目录下面的说明文件,偷懒的话可以 ./configure –with-everything,不过印象中官方并不推荐使用这个参数。

另外,因为我很懒,所以把一些特性写死在程序里面了,是否屏蔽使用迅雷的IP和屏蔽IP的时间是写死在程序里面的,要改变的话只能重新编译。这两个配置在libantixunlei.h文件里面可以修改。

libantixunlei 使用了pthread库,而在一些平台上编译的时候如果要使用pthread库需要显式指定-lpthread参数,我在PBS服务器上编译的时候没有问题,但是在自家的一台电脑上编译的时候却出错了。如果编译失败的话,点击这个地址查看处理方法: http://code.google.com/p/libantixunlei/ ... anYiShiBai
叫我greensea吧 [@lvhai]

虽然现在这个用户名是midoriumi,但实际上是我把自己注册的greensea的密码给忘记了,于是只好再注册一个midoriumi,字面意思也和greensea一样是緑海(みどりうみ)。所以,叫我greensea或GS吧。
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: 将迅雷拒于Linux服务器门外

#2

帖子 wangdu2002 » 2009-10-13 22:30

:em11 强贴啊,必顶之,学习之。 :em11
打击流氓是件好事,支持楼主首贴即成精华。 :em09
来U坛发贴你是来对了,很快本贴会砌成高楼。 :em05
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: 将迅雷拒于Linux服务器门外

#3

帖子 wzssyqa » 2009-10-13 22:34

还是处贴呢

但是就是个牛贴

得顶
头像
john.wu
帖子: 1006
注册时间: 2007-10-18 17:40

Re: 将迅雷拒于Linux服务器门外

#4

帖子 john.wu » 2009-10-13 22:38

个人电脑,正在等牛人的amule 反迅雷开源补丁。

千帖户,享有论坛特权!
afox800
帖子: 200
注册时间: 2009-08-02 7:44
来自: 圣彼得堡

Re: 将迅雷拒于Linux服务器门外

#5

帖子 afox800 » 2009-10-14 0:03

:em11 :em07 :em12
头像
princelai
帖子: 920
注册时间: 2007-01-06 21:00
联系:

Re: 将迅雷拒于Linux服务器门外

#6

帖子 princelai » 2009-10-14 3:14

wzssyqa 写了:还是处贴呢

但是就是个牛贴

得顶
不会是哪个高人的马甲
onelynx
帖子: 817
注册时间: 2008-11-13 16:03

Re: 将迅雷拒于Linux服务器门外

#7

帖子 onelynx » 2009-10-14 9:31

好帖,牛贴,顶上去
头像
tenzu
论坛版主
帖子: 36924
注册时间: 2008-11-21 20:26

Re: 将迅雷拒于Linux服务器门外

#8

帖子 tenzu » 2009-10-14 9:34

再次帮忙手动置顶 :em11
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: 将迅雷拒于Linux服务器门外

#9

帖子 wzssyqa » 2009-10-14 13:12

princelai 写了:
wzssyqa 写了:还是处贴呢

但是就是个牛贴

得顶
不会是哪个高人的马甲
应该不是,一般马甲的处贴都水了
头像
woaiwojia
帖子: 1355
注册时间: 2007-09-10 20:20
系统: Debian
来自: 南京

Re: 将迅雷拒于Linux服务器门外

#10

帖子 woaiwojia » 2009-10-14 14:36

amule什么时候能antixulei呢
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 将迅雷拒于Linux服务器门外

#11

帖子 delectate » 2009-10-14 14:41

woaiwojia 写了:amule什么时候能antixulei呢
吸血雷真讨厌!

支持lz!处女贴即成为精华! :em09

继续加油,好好干!:em11
头像
AutoXBC
帖子: 1744
注册时间: 2007-10-23 12:54

Re: 将迅雷拒于Linux服务器门外

#12

帖子 AutoXBC » 2009-10-14 16:09

%70%32%73%70%2E%64%6C%6C
头像
Jarson
帖子: 2371
注册时间: 2008-07-21 9:44
来自: 深圳
联系:

Re: 将迅雷拒于Linux服务器门外

#13

帖子 Jarson » 2009-10-14 18:48

强贴,收藏学习 :em11
头像
meteormatt
帖子: 693
注册时间: 2008-02-24 14:15
系统: Ubuntu
来自: 江苏
联系:

Re: 将迅雷拒于Linux服务器门外

#14

帖子 meteormatt » 2009-10-14 19:00

这么NB

怀念以前的老台式机。可惜现在租的地方没条件用了。目前只能用笔记本和手机了。
头像
soge
帖子: 449
注册时间: 2009-05-13 14:31

Re: 将迅雷拒于Linux服务器门外

#15

帖子 soge » 2009-10-14 19:38

:em11 :em11 :em11 :em11

代码: 全选

御风而行
回复