自从2013 年 5 月 2 日每隔 5 分钟就会有某种机器人访问我的网站。
大多数情况下,它会调用这个不存在的 URL:
/viewtopic.php?f=3&t=849
始终使用此用户代理
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727)
(= IE 6,Windows XP)
它不仅严重扭曲了访问者统计数据,甚至没有被识别为机器人,所以我猜它是一种垃圾邮件发送者。
我的问题这里,这个客户端做了什么以及为什么它会不断调用这个页面? - 我该如何防止这种情况发生?
我正在使用带有 Linux Debian 的 vServer。
答案1
这个客户是做什么的?
很难知道,但只是出于好奇,我在该 URL 上设置了一个 PHP 脚本来和你的朋友一起玩:
- 获取客户端 IP 地址并立即扫描(打开端口、反向地址、网络块上的 whois 信息)
- 转储 HTTP 标头以查看它们。如果它发送了引用者,则可能是来自其他地方。寻找其他有趣的东西。
- 使用 HTTP 重定向回复到您管理的某个 URL,看看它是否遵循该 URL。只是想知道...
- 回复一些 Javascript 并查看它是否执行
- 如果你有足够的带宽,请尝试用几千兆字节的垃圾回复:)
- (同时,测量一下他消化数据的速度)
- 当你厌倦了和他一起玩的时候,就去 tarpitting 他(如果你有足够的资源):每次它连接时,在完成 HTTP 回复之前进入一段较长的 sleep()。让他消耗更多的资源。
为什么它会不断调用这个页面?
您是否尝试询问 Google?似乎腾讯旅行家是中国最受欢迎的浏览器之一。也许有人用它访问了您的网站,或者试图访问您网站上的无效 URL,也许软件公司运行的蜘蛛试图索引/扫描/缓存其浏览器用户访问的网站。或者可能只是一个无聊的中国男孩,或者可能是一台受感染的 PC,或者……谁知道呢,您也应该直接问他,但您需要知道他是谁。
我该如何防止这种情况发生?
实际上防止如果他尝试这样做,您应该向对他有权威的人/事物举报他是一个垃圾邮件发送者。通常这是负责其 IP 范围的 AS 的技术联系人(或 tech-c、abuse 或他们称之为的任何内容)。您可以从 whois 中找到该信息。
如果预防无法成功并且它继续执行这些请求,您可以通过多种方式阻止它们:
如果它们来自单个子网并且您对该公众不感兴趣,请在 IP 级别阻止整个子网(例如,如果它来自中国 /8 子网并且您不介意阻止中国客户端,只需删除整个子网的流量)
如果没有已知的合法用户拥有相同的 User-Agent,则阻止所有在 HTTP 级别与该 User-Agent 匹配的请求。
为什么这些攻击性机器人总是来自中国或俄罗斯?
啊哈,如果这是真的的话生活就会更轻松了 ;)
它严重扭曲了访客统计数据
您说的是每 5 分钟一次点击,或大约每秒 0.003 次点击 - 应该远低于本底噪声。请重新表述您的问题并解释您所说的“扭曲”是什么意思。
答案2
你可以使用mod_setenvif匹配 UserAgent 的已知部分(例如,TencentTraveler),然后阻止它
BrowserMatchNoCase TencentTraveler bad_bot
Order Deny,Allow
Deny from env=bad_bot
答案3
安装 fail2ban 并配置 jail.conf 以允许 apache jailing。然后在 apache 部分添加一个 failregex 匹配,如下所示:
failregex = [[]client (?P<host>\S*)[]] File does not exist: .*\.phpf=3&t=849