微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nginx通过判断User-Agent禁止爬虫采集并返回炸弹

caddy 有个http.nobots

nobots保护你的网站免受网络爬虫和机器人,可以给采集的恶意程序返回特定的数据。

比如实际1G压缩成1M大小的gzip文件(炸弹),对于服务器的话就是发送了1M的文件,恶意程序请求后会自动解包为1G的数据,可以对恶意程序造成很大的压力。

类如PHP返回炸弹

<?PHP
header('content-encoding: gzip');
echo file_get_contents('1G.gzip');

如何制造炸弹

插件中未提供炸弹,因此您必须创建一个炸弹。

在Linux中,这确实很容易,您可以使用以下命令。

dd if=/dev/zero bs=1M count=1024 | gzip > 1G.gzip
dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip
dd if=/dev/zero bs=1M count=1048576 | gzip > 1T.gzip

炸弹(1G.gzip)和PHP(bomb.PHP)文件放在同一个目录下

Nginx添加配置

location / {
  #UA BOMB
  if ($http_user_agent ~* (zhadan|bomb)) {
    rewrite ^/.*  /bomb.PHP last;
  }
}

修改(zhadan|bomb)为恶意UA列表

修改/bomb.PHP为你的炸弹PHP路径

如果本身已经有伪静态配置了,也就是有location / {的配置了,就添加进去就行了。

只需要下面这些

  #UA BOMB
  if ($http_user_agent ~* (zhadan|bomb)) {
    rewrite ^/.*  /bomb.PHP last;
  }

当然你也可以返回410

直接在Nginx的location模块中添加if判断header,返回410错误

if ($http_user_agent ~* (SemrushBot|Semrush) ) {
    return 410;
}

使用以上这个Nginx的配置采集大文件反攻采集,相信可以杜绝掉一些恶意采集的站点程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐