Robots.txt是搜索引擎爬虫访问网站时第一个查看的文件,通过合理配置该文件,可以禁止特定爬虫抓取敏感目录。这是最基础且必须设置的第一道防线。

操作步骤:
1. 登录服务器文件管理器或使用FTP工具,进入迅睿CMS的网站根目录。
2. 查找是否存在robots.txt文件。如果不存在,新建一个。
3. 编辑robots.txt文件,写入以下配置内容。该配置禁止所有爬虫访问后台、API接口及缓存目录,同时放行主要抓取路径。
注意事项:
配置完成后,使用浏览器访问https://你的域名/robots.txt确认内容已生效。此方法仅对遵守Robots协议的爬虫有效,对于恶意爬虫无效,需配合后续方法使用。
恶意爬虫通常通过特定的User-Agent特征进行识别。在Nginx配置文件中添加规则,可以直接在服务器层面拒绝请求,减少PHP资源消耗。这是最高效的拦截方式。
操作步骤:
1. 打开Nginx配置文件。通常路径为/www/server/panel/vhost/nginx/你的域名.conf(宝塔环境)或/etc/nginx/sites-available/你的域名。
2. 在server块中的location / { ... }之前,添加以下代码块。
3. 保存文件后,检查Nginx配置是否正确。
```bash nginx -t ```4. 若输出syntax is ok,则重载Nginx配置使规则生效。
配置解析:
上述规则使用了正则匹配,凡是包含Scrapy、Python、Java等关键词的User-Agent请求,将直接返回403 Forbidden状态码。这能有效拦截绝大多数基于脚本编写的简易爬虫。
爬虫往往具有极高的并发请求频率。通过限制同一IP在单位时间内的请求次数,可以有效防止由于高频抓取导致的网站卡死或数据库崩溃。
操作步骤:
1. 在Nginx配置文件的http块中(通常在nginx.conf主配置文件中),定义限流区域。建议添加在http块的开头部分。
2. 回到网站对应的server块配置文件中,在location / { ... }内部添加限流规则。
3. 测试配置并重载Nginx。
```bash nginx -t nginx -s reload ```参数详解:
zone=my_limit: 调用刚才定义的限流区域。
burst=5: 设置桶的大小为5。允许用户在不超过1r/s的基础上,瞬间并发5个请求。
nodelay: 超过burst限制的请求不进行延迟处理,直接拒绝。这对于防御恶意爬虫非常关键,因为爬虫不需要排队等待,直接拒绝能节省服务器连接资源。
迅睿CMS后台自带了IP黑名单功能,对于已经确认的恶意抓取IP,可以直接在系统后台进行封禁,无需操作服务器配置文件。
操作步骤:
1. 登录迅睿CMS后台管理界面,默认地址为/admin.php。
2. 点击顶部菜单栏的【系统】,进入【系统设置】。
3. 在左侧菜单中找到【安全设置】选项卡。
4. 找到【IP黑名单】配置项。在此处输入需要禁止访问的IP地址。
5. 输入格式支持单个IP或IP段,每行一个。例如:
```text 192.168.1.100 192.168.1.0/24 10.0.0.0/8 ```6. 点击底部的【保存】按钮。
注意:
此功能主要针对HTTP层的请求拦截。如果攻击者使用了CDN或高匿代理,真实IP可能被隐藏,此时该方法效果有限,需结合Nginx层的$http_x_forwarded_for参数进行配置,但这需要更复杂的Nginx规则。
为了防止某些穿透了Nginx规则的请求(例如Nginx配置错误或未生效),在PHP入口文件增加最后一道检测代码是必要的。迅睿CMS的入口文件是index.php。
操作步骤:
1. 打开网站根目录下的index.php文件。
2. 在标签之后的第一行,粘贴以下代码:
3. 保存文件。
原理说明:
这段代码会在任何PHP程序执行前运行。它获取请求头中的User-Agent,如果发现UA为空(通常是非浏览器的脚本)或者包含预定义的敏感词(如bot, spider),则直接输出403错误并退出。这能阻止针对PHP动态页面的恶意请求。
配置完成后,必须进行验证以确保规则已生效且未误伤正常用户。
测试步骤:
1. 测试正常访问: 使用浏览器打开网站首页,确保能正常访问。
2. 测试UA拦截: 使用Linux终端或Postman发送请求,模拟恶意爬虫。
```bash 模拟一个包含Python关键词的UA curl -I -A "Python/3.9 https://你的域名" ```预期结果:返回HTTP/1.1 403 Forbidden。
3. 测试空UA拦截:
```bash 模拟空UA curl -I -A "" https://你的域名 ```预期结果:返回HTTP/1.1 403 Forbidden。
4. 测试频率限制: 使用ab工具进行压力测试。
```bash 安装httpd-tools后执行,发送100个并发请求 ab -n 100 -c 100 https://你的域名/ ```预期结果:在请求达到一定数量后(根据Nginx配置的burst值),开始出现大量的403或503错误,证明限流生效。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图