我有一些网络爬虫,某个特定网站似乎在一段时间后会暂时阻止流量。问题是,即使所有客户端都有相同的外部 IP 地址(它们通过相同的网关访问互联网),它也会阻止特定机器进入我的网络。也就是说,这不是简单的 IP 地址阻止。
怎么会发生这种情况?可以制定什么样的规则(在 Web 服务器或防火墙等上)来实现此行为?规则可以基于 MAC 地址或其他特定于机器的数据吗?
答案1
这句话可能有点太明显了,但阻止行为必须基于远程服务器所掌握的信息。这包括:
源 IP 地址
源 TCP 端口,该端口应该是临时的,并且会随着每次请求而变化
可能存在对客户端 IP 堆栈的被动指纹识别
请求资源的 URL
HTTP 请求标头的内容,包括 Cookie、User-Agent 字符串以及“Accept:”标头的指纹
如果将 Javascript 引入其中,那么就可以执行各种客户端指纹识别。
您提到了 MAC 地址,值得指出的是,MAC 不会离开本地网络。边缘路由器是沿途唯一会接收客户端计算机 MAC 地址的设备。
我倾向于怀疑他们正在使用 User-Agent 字符串,并且可能正在对“Accept:”标头进行指纹识别。