在Discuz!系统中屏蔽特定爬虫可通过多维度防护策略实现,以下是具体操作方案:
一、User-Agent拦截方案
1. 服务器层拦截(Apache)
在.htaccess文件中添加:
- RewriteEngine On
- RewriteCond %{HTTP_USER_AGENT} (PanguBot|GPT-AI) [NC]
- RewriteRule ^.* - [F,L]
复制代码
2. Nginx配置拦截
在server配置段添加:
- if ($http_user_agent ~* (PanguBot|GPT-AI)) {
- return 403;
- }
复制代码
二、IP段防御方案
需将IP段转换为CIDR格式:
- 110.41.0.0/16(覆盖110.41.0.0-110.41.255.255)
- 113.45.0.0/16(覆盖113.45.0.0-113.45.255.255)
- 单个IP直接添加110.41.65.235、113.45.167.52
1. Discuz!后台设置
路径:【后台】->【安全】->【IP禁止】
输入格式:
110.41.0.0/16
113.45.0.0/16
110.41.65.235
113.45.167.52
2. 防火墙层拦截(以iptables为例):
- iptables -A INPUT -s 110.41.0.0/16 -j DROP
- iptables -A INPUT -s 113.45.0.0/16 -j DROP
复制代码
三、深度防御组合方案
1. 内容干扰策略
在模板文件template/default/forum/viewthread.htm中插入干扰码:
- <!--{if !IS_ROBOT}-->
- 真实内容
- <!--{else}-->
- <meta name="robots" content="noindex,nofollow">
- <script>setTimeout(function(){location.href='/404.html'},2000);</script>
- <!--{/if}-->
复制代码
2. 访问频率限制
在config/config_global.php中增加:
- $_config['security']['attackevasive'] = '2|4|60';
复制代码
四、注意事项
1. 建议优先采用服务器层拦截方案,降低系统负载
2. 定期更新IP黑名单(建议每周维护一次)
3. 启用Discuz!自带防水墙增强防护
4. 对疑似爬虫IP进行访问日志分析(日志路径:/data/log/)
可通过在robots.txt中增加禁止规则增强防护效果:
- User-agent: PanguBot
- Disallow: /
复制代码
以上方案采用分层防御架构,从网络层到应用层实现立体防护,可有效阻断指定爬虫的抓取行为。实施后建议通过模拟测试验证防护效果:
- curl -A "PanguBot" http://yourdomain.com
复制代码
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |