无法阻止SemrushBot频繁扫描?求解决方案及安全风险判断
问题
近日监控网站日志时发现SemrushBot频繁扫描网站,扫描间隔仅5-10秒。已尝试在robots.txt中添加拦截规则,但1-2小时后仍无效果,Bot持续扫描。请问该如何阻止它?这是否意味着有人在对网站实施恶意操作?
已添加的robots.txt规则
User-agent: * Allow: / User-agent: SemrushBot Disallow: /
日志示例
185.191.171.11 - - [07/Nov/2022:11:38:59 +0200] "GET /example_store.php?id_class=123&id_product=1234&watch=20670906 HTTP/1.1" 500 5225 "-" "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
解决方案与说明
一、robots.txt拦截无效的原因
SemrushBot并非严格遵守robots.txt规则,若扫描任务已启动,可能需要数小时才会读取新规则,部分场景下甚至会直接忽略规则。
二、有效阻止SemrushBot的方法
服务器UA拦截
在Nginx或Apache配置中直接匹配SemrushBot的用户代理字符串拦截请求,配置后重启服务器即可生效:- Nginx示例:
if ($http_user_agent ~* "SemrushBot") { return 403; } - Apache示例:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} SemrushBot [NC] RewriteRule ^ - [F]
- Nginx示例:
IP段封禁
从日志提取SemrushBot的IP(如示例中的185.191.171.11),查询其所属IP段后,在服务器防火墙或安全组中直接封禁该段IP,这种方式不受UA伪装影响,拦截更彻底。WAF规则拦截
若使用网站防火墙(WAF),添加规则匹配SemrushBot的UA或IP,直接拦截请求,同时可持续监控后续访问行为。
三、是否属于恶意操作?
SemrushBot本身是SEO工具的爬虫,主要用于抓取网站SEO数据,常规高频扫描不属于恶意操作,但会占用服务器资源影响网站运行。不过存在攻击者伪装成SemrushBot扫描的可能,建议结合日志请求路径判断:若请求均为常规页面,大概率是正常爬虫;若包含异常参数、不存在的页面或攻击特征路径,则需警惕恶意扫描。
内容的提问来源于stack exchange,提问作者user9172014
相关产品推荐
相关产品推荐

