I am LAZY bones ? all linux

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;

最后修改时间: 2009年12月02日 12:45

本文章发表于: 2009年10月31日 22:10 | 所属分类:流水帐. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

42 个评论 关于: “nginx 禁止某个 User_Agent 的方法”

  1. 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比迅雷还快……

  2. TualatriX 在 2009年10月31日 22:34 说:回复

    我也很好奇,是IE 6.0不?

  3. est 在 2009年10月31日 22:39 说:回复

    那个UA是迅雷。

  4. 土也 在 2009年10月31日 22:41 说:回复

    对,封杀迅雷。

  5. oldherl 在 2009年10月31日 22:49 说:回复

    凡是出现MSIE的一律封掉就可以了

    • 依云 在 2009年11月01日 00:21 说:回复

      支持!Ubuntu 的源要 IE 之辈掺和个啥?

    • muzuiget 在 2009年11月01日 00:41 说:回复

      同意封掉。

  6. 老犁 在 2009年11月01日 07:56 说:回复

    不查IP?这样一棒子打死,不把用户惹毛了才怪。
    打击UA还是小心为上吧,除非逼不得已。

    • bones7456 在 2009年11月01日 10:17 说:回复

      查IP不管用,迅雷用户的IP都各不相同的。

  7. nomyself 在 2009年11月01日 09:54 说:回复

    nginx有一些很好用的变量……

  8. 无限 在 2009年11月01日 13:58 说:回复

    以后下载整用户名和密码就是 如果某个用户把自己的用户名和密码给别人用 那就禁了他
    base64 验证的那个就o 了

    • bones7456 在 2009年11月01日 16:25 说:回复

      这不可能啊,人家apt-get的时候,还让人家输密码不成?

      • kangkang 在 2009年11月01日 20:28 说:回复

        apt没有ua?抓下试试呗。

  9. 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,但是浏览器也要能访问才好啊,不然出问题都不知道是不是源的问题了。

  10. ubuntulover 在 2009年11月01日 21:39 说:回复

    骨头辛苦了!

  11. 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掉也是无所谓的我想……

  12. shan 在 2009年11月02日 08:32 说:回复

    能否将MSIE限速2K。

    • bones7456 在 2009年11月02日 12:06 说:回复

      这个倒挺好的,但是怎么搞呢??我去找找看~

  13. zerox 在 2009年11月11日 08:59 说:回复

    我看迅雷迟早会加入自定义UA功能……

  14. I am LAZY bones ? : LinuxDeepin的ISO镜像和试用笔记 在 2009年12月02日 12:47 说:回复

    […] LinuxDeepin (简称 Deepin)由原先的 Hiweed Linux 项目更名而来;原项目不再继续。 我本人对之前的Hiweed和DeepinXP都有比较好的印象,至今虚拟机里还是跑着DeepinXP,所以对这个发行版很看好。 看到之前的下载页面只有一个国外的HTTP下载地址,而且速度非常慢,就用我那源服务器给再做了个国内的镜像,对大多数人来说,速度应该不错的(请勿使用迅雷下载)。我那下载地址已经让Hiweed加到现在的下载页面了。 下面贴几张我在vbox里试用的截图,UI还是相当不错的哦,可以点击查看大图: 更多关于此版本的软件包之类的信息可以查看官方介绍页面,再此,也希望大家给新的Deepin更多的关注。 […]

  15. druggo 在 2009年12月04日 13:32 说:回复

    UA不可靠啊。。。

    • bones7456 在 2009年12月04日 16:21 说:回复

      呵呵,不需要很可靠,够用就行~

  16. 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 说:回复

        呵呵,那也好办啊,不彻底屏蔽的话,就限速好了。

  17. ManofPhysics 在 2009年12月08日 21:21 说:回复

    可以研究一下NginxHttpAccessKeyModule,他可以封杀迅雷。

  18. 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; } } […]

  19. monface 在 2010年06月10日 19:44 说:回复

    怎么我用这个无效呢

  20. Zhaofeng Li 在 2011年01月18日 12:22 说:回复

    封UA没用的,谁知迅雷这个流氓以后会不会发随机UA?

  21. Nginx屏蔽迅雷 在 2011年08月23日 22:06 说:回复

    […] 扩展阅读:nginx 禁止某个 User_Agent 的方法 Comments (0) […]

  22. 安装nginx | 我的博客 在 2012年01月09日 22:10 说:回复

    […] nginx 禁止某个 User_Agent 的方法 […]

  23. Ubuntu下安装Nginx | 翔腾苍穹 在 2013年09月02日 21:10 说:回复

    […] nginx 禁止某个 User_Agent 的方法 […]

  24. pagina web 在 2014年12月04日 00:04 说:回复

    pagina web

    I am LAZY bones ? : nginx 禁止某个 User_Agent 的方法

  25. NeWorldNginx – Ubuntu中文 | | NeWorld 在 2015年09月11日 14:45 说:回复

    […] nginx 禁止某个 User_Agent 的方法 […]

发表评论