nginx 禁止某个 User_Agent 的方法
由于ubuntu 9.10 的发布,SRT ubuntu源最近的流量可是飙得厉害~ 昨天一天的平均流量是 9.6MB/s ,算算一天就有800GB了。。。
更可恶的是,一分析日志,有一个“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)”的User_Agent(据说是迅雷的),很是夸张,居然占了八成的流量,看我下面的日志分析:
$ tail -n 1000 /var/log/nginx/mirror.access.log | awk -F\" '{A[$(NF-1)]++}END{for(k in A)print A[k],k}' | sort -n | tail 3 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) 4 SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html) 5 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322) 6 Ubuntu APT-HTTP/1.3 (0.7.20.2ubuntu6) 16 Mozilla/4.0 (compatible; MSIE 5.00; Windows 98) 18 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) 39 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) 41 Ubuntu APT-HTTP/1.3 (0.7.23.1ubuntu2) 94 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ) 767 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) |
于是,我不得不想办法禁掉了这个UA,不然也太影响访问了,最近有很多用户都出现访问不畅的状况了。但是网上这方面的资料还真不太好找,于是请教ubuntu-cn的一叶老大,终于找到办法了:
建立一个 /etc/nginx/agent.conf 内容如下(需要注意的是,空格和括弧需要使用“\”进行转义,这也是我摸索了好久得出的结论):
if ($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\)") { return 404; } |
然后在这个site的配置里include这个conf文件,比如 /etc/nginx/sites-enabled/ubuntu-mirror 里添加如下一行: include /etc/nginx/agent.conf;
lfeng 在 2009年10月31日 22:13 说:【 】
我很好奇这个是什么的User_Agent….
kangkang 在 2009年10月31日 22:34 说:【 】
迅雷V5.9,看样子很有必要专门维护一个UA列表,不过那样估计这些软件会更流氓。
为了这破玩意,在apache/lighttpd/nginx/squid上都做UA识别了。做源还好,可以搞成准入的,只允许apt/wget这些,做公共服务真是郁闷。
oldherl 在 2009年10月31日 22:53 说:【 】
以后可以要求网站用户必须使用网站指定的UA(就像是验证码)才能进入。
因为Firefox之类都能手动改UA,哈哈
bones7456 在 2009年11月01日 10:20 说:【 】
这个真是迅雷啊?nnd。。。
Xuander 在 2009年11月01日 17:03 说:【 】
迅雷邪恶的没办法说,我用别的下载一个4G的东西的用几天。迅雷到好5小时,上帝啊,这显然不是一个级别上面的BT更邪恶
muxueqz 在 2009年11月06日 07:26 说:【 】
哈哈,我用aria2c比迅雷还快……
TualatriX 在 2009年10月31日 22:34 说:【 】
我也很好奇,是IE 6.0不?
est 在 2009年10月31日 22:39 说:【 】
那个UA是迅雷。
土也 在 2009年10月31日 22:41 说:【 】
对,封杀迅雷。
oldherl 在 2009年10月31日 22:49 说:【 】
凡是出现MSIE的一律封掉就可以了
依云 在 2009年11月01日 00:21 说:【 】
支持!Ubuntu 的源要 IE 之辈掺和个啥?
muzuiget 在 2009年11月01日 00:41 说:【 】
同意封掉。
老犁 在 2009年11月01日 07:56 说:【 】
不查IP?这样一棒子打死,不把用户惹毛了才怪。
打击UA还是小心为上吧,除非逼不得已。
bones7456 在 2009年11月01日 10:17 说:【 】
查IP不管用,迅雷用户的IP都各不相同的。
nomyself 在 2009年11月01日 09:54 说:【 】
nginx有一些很好用的变量……
无限 在 2009年11月01日 13:58 说:【 】
以后下载整用户名和密码就是 如果某个用户把自己的用户名和密码给别人用 那就禁了他
base64 验证的那个就o 了
bones7456 在 2009年11月01日 16:25 说:【 】
这不可能啊,人家apt-get的时候,还让人家输密码不成?
kangkang 在 2009年11月01日 20:28 说:【 】
apt没有ua?抓下试试呗。
kangkang 在 2009年11月01日 20:33 说:【 】
APT的UA:
User-Agent: Ubuntu APT-HTTP/1.3 (0.7.23.1ubuntu1)
只允许这个吧,不过一般迅雷都是下ISO的,得另想办法。
bones7456 在 2009年11月02日 12:05 说:【 】
对,apt就是这个UA,但是浏览器也要能访问才好啊,不然出问题都不知道是不是源的问题了。
ubuntulover 在 2009年11月01日 21:39 说:【 】
骨头辛苦了!
upsuper 在 2009年11月01日 22:44 说:【 】
推荐一个听来的不错反迅雷的想法吧~
就是你弄个热门资源放自己网站上然后不公开地址(就是其他页面无法链入),然后用迅雷下一次,然后以后就跟踪这个文件的UA就行了~
bones7456 在 2009年11月02日 12:05 说:【 】
只根据UA恐怕阻止不了迅雷,你能保证以后它都老老实实发送自己的UA吗?
upsuper 在 2009年11月05日 22:57 说:【 】
我猜他总归不会发fx或cr的UA……
至于IE的……其实ban掉也是无所谓的我想……
shan 在 2009年11月02日 08:32 说:【 】
能否将MSIE限速2K。
bones7456 在 2009年11月02日 12:06 说:【 】
这个倒挺好的,但是怎么搞呢??我去找找看~
zerox 在 2009年11月11日 08:59 说:【 】
我看迅雷迟早会加入自定义UA功能……
I am LAZY bones ? : LinuxDeepin的ISO镜像和试用笔记 在 2009年12月02日 12:47 说:【 】
[…] LinuxDeepin (简称 Deepin)由原先的 Hiweed Linux 项目更名而来;原项目不再继续。 我本人对之前的Hiweed和DeepinXP都有比较好的印象,至今虚拟机里还是跑着DeepinXP,所以对这个发行版很看好。 看到之前的下载页面只有一个国外的HTTP下载地址,而且速度非常慢,就用我那源服务器给再做了个国内的镜像,对大多数人来说,速度应该不错的(请勿使用迅雷下载)。我那下载地址已经让Hiweed加到现在的下载页面了。 下面贴几张我在vbox里试用的截图,UI还是相当不错的哦,可以点击查看大图: 更多关于此版本的软件包之类的信息可以查看官方介绍页面,再此,也希望大家给新的Deepin更多的关注。 […]
druggo 在 2009年12月04日 13:32 说:【 】
UA不可靠啊。。。
bones7456 在 2009年12月04日 16:21 说:【 】
呵呵,不需要很可靠,够用就行~
DBLobster 在 2009年12月08日 13:09 说:【 】
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
装了 .Net 2.0 和 .Net 1.1 的 XP IE6 就是这个 UA.
真的…
一或九 在 2010年01月13日 03:18 说:【 】
我也想屏不敢屏。。。xp的ie6.。。的确是这个UA。。。。。
bones7456 在 2010年01月13日 08:42 说:【 】
呵呵,那也好办啊,不彻底屏蔽的话,就限速好了。
ManofPhysics 在 2009年12月08日 21:21 说:【 】
可以研究一下NginxHttpAccessKeyModule,他可以封杀迅雷。
I am LAZY bones ? : nginx 对某些 User_Agent 进行限速的方法 在 2010年01月06日 12:07 说:【 】
[…] 本文为nginx 禁止某个 User_Agent 的方法的姊妹篇,不知所云的话,建议先看看这文。 由于之前已经将某个特别疯狂的迅雷的User_Agent给封掉了,所以最近一段时间,我的那源服务器也运行地比较稳定,但是今天,Linux Deepin 9.12正式发布了,由于我给Deepin做了一个iso的镜像,所以服务器又经历了一个访问高峰,如下图: 从这里也可以看出Linux Deepin的受欢迎程度,哈哈。 可以看到从11:00以后,100M的带宽就已经被完全撑满了。。。一看日志,大部分又是迅雷干的,但这次迅雷不是用某个特定的UA来访问了,而是各有变化,但是却都包含MSIE,哈哈。 当然IE用户直接访问的话,也会有这个MSIE,但是没办法,为了保全Ubuntu APT-HTTP的合法权益,只能限制一下MSIE了。 但是怎么限制呢?总不能人家用MSIE的连主页面都打不开吧?哈哈,最好的办法就是限速,于是,有了这个配置: server { listen 80; server_name ubuntu.srt.cn; access_log /var/log/nginx/mirror.access.log; location / { root /data/mirrors; autoindex on; index index.html index.htm; if ($http_user_agent ~ "MSIE") { limit_rate 2k; } if ($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)") { return 404; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www/nginx-default; } } […]
monface 在 2010年06月10日 19:44 说:【 】
怎么我用这个无效呢
Zhaofeng Li 在 2011年01月18日 12:22 说:【 】
封UA没用的,谁知迅雷这个流氓以后会不会发随机UA?
Nginx屏蔽迅雷 在 2011年08月23日 22:06 说:【 】
[…] 扩展阅读:nginx 禁止某个 User_Agent 的方法 Comments (0) […]
安装nginx | 我的博客 在 2012年01月09日 22:10 说:【 】
[…] nginx 禁止某个 User_Agent 的方法 […]
Ubuntu下安装Nginx | 翔腾苍穹 在 2013年09月02日 21:10 说:【 】
[…] nginx 禁止某个 User_Agent 的方法 […]
pagina web 在 2014年12月04日 00:04 说:【 】
pagina web
I am LAZY bones ? : nginx 禁止某个 User_Agent 的方法
NeWorldNginx – Ubuntu中文 | | NeWorld 在 2015年09月11日 14:45 说:【 】
[…] nginx 禁止某个 User_Agent 的方法 […]
Ubuntu安装和配置nginx – NextAI 在 2018年01月03日 00:07 说:【 】
[…] nginx 禁止某个 User_Agent 的方法 […]
Nginx + spawn-fcgi- Ubuntu中文 – 白墨代码网 在 2023年03月11日 18:55 说:【 】
[…] nginx 禁止某个 User_Agent 的方法 […]