前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx通过判断User-Agent禁止爬虫采集并返回炸弹

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

原创
作者头像
软件UP
修改2021-05-22 17:21:16
2K1
修改2021-05-22 17:21:16
举报

caddy 有个http.nobots

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

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

类如php返回炸弹

代码语言:javascript
复制
<?php
header('Content-Encoding: gzip');
echo file_get_contents('1G.gzip');

如何制造炸弹

代码语言:javascript
复制
插件中未提供炸弹,因此您必须创建一个炸弹。在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添加配置

代码语言:javascript
复制
location / {
  #UA BOMB
  if ($http_user_agent ~* "(zhadan|bomb)") {
    rewrite ^/.*  /bomb.php last;
  }
}

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

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

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

只需要下面这些

代码语言:javascript
复制
  #UA BOMB
  if ($http_user_agent ~* "(zhadan|bomb)") {
    rewrite ^/.*  /bomb.php last;
  }

当然你也可以返回410

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

代码语言:javascript
复制
if ($http_user_agent ~* (SemrushBot|Semrush) ) {
    return 410;
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 类如php返回炸弹
  • 如何制造炸弹
  • Nginx添加配置
  • 当然你也可以返回410
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档