![网站如何检测代理或公司网络后面的机器人](https://linux22.com/image/681092/%E7%BD%91%E7%AB%99%E5%A6%82%E4%BD%95%E6%A3%80%E6%B5%8B%E4%BB%A3%E7%90%86%E6%88%96%E5%85%AC%E5%8F%B8%E7%BD%91%E7%BB%9C%E5%90%8E%E9%9D%A2%E7%9A%84%E6%9C%BA%E5%99%A8%E4%BA%BA.png)
大型网站(例如维基百科)如何处理位于其他 IP 掩蔽器后面的机器人?例如,在我的大学里,每个人都搜索维基百科,这给它带来了很大的负担。但据我所知,维基百科只能知道大学路由器的 IP,所以如果我设置了一个“释放式”机器人(请求之间只有很短的延迟),维基百科是否可以禁止我的机器人而不禁止整个组织?网站真的可以禁止组织网络后面的 IP 吗?
答案1
不,他们会禁止公共 IP,并且通过 NAT 连接到该 IP 的每个人都会被禁止。
尽管至少在 Stack,如果我们认为我们要禁止一所大学或类似的东西,我们会联系他们的滥用联系人,让他们追踪违法者并制止这个问题。
答案2
网站不能直接禁止位于 NAT 后面的 IP。它可以对通过非匿名 HTTP 代理传递的 IP 采取行动 - 当此类代理转发请求时,它通常会将该地址附加到 X-Forwarded-For 标头,因此如果来自您的私有网络的访问实际上必须通过此类代理,则内部 IP 可能会暴露;但是大多数网站(包括维基百科)无论如何都不会信任该标头中的信息,因为它很容易被欺骗以牵连无辜的 IP 或逃避禁令。
不过,还有其他技术试图独立于 IP 地址来唯一地识别用户。你可以询问 Web 浏览器以获取有关它及其运行系统的大量信息,例如用户代理、屏幕分辨率、插件列表等 - 请参阅https://github.com/carlo/jquery-browser-fingerprint举一个实际的例子。您可以使用此类指纹来控制访问,但根据网站设计,您可能无需参与指纹识别过程即可与其交互,即使您不能,如果您知道存在这种保护措施,机器人也可以提供虚假和随机的数据,以避免获得一致的指纹。这种控制方法也存在误报的风险,尤其是在移动设备上,可能会有大量客户端在相同的库存硬件上运行相同的库存客户端(例如,大多数使用特定型号的 iPhone 并运行特定版本的 iOS 的人可能会获得相同的指纹)。像这样的指纹识别通常仅用于用户跟踪,而不是强制控制,但我知道有些地方确实使用指纹识别来实施禁令,因为人们担心 IP 阻止范围太广,并且可能对幼稚的机器人有效。
答案3
通常,IP 地址不足以提供正确禁止的充分信息。因此,高级网络在网络堆栈的较高位置运行。
拒绝服务 (DoS) 攻击(您担心会造成这种攻击)通常通过限制初始 TCP 连接设置的速率来处理。这意味着愿意等待的合法用户将获得通过,而那些只是试图消耗服务器资源的用户将受到限制,直到无害。这就是 DoS 演变为分布式 DoS (DDoS) 攻击的地方。
一旦连接到服务器,您就可以发出任意数量的请求,Web 服务器管理员可以配置要处理的请求数量。
无论如何,Web 服务器可能比您的本地网关处理更多的容量,这可能是您使用案例的限制因素。我敢打赌,您的大学网络管理员会比维基百科先来敲您的门。
成为一名优秀的网络公民非常重要,因此我会为机器人添加速率限制代码。
还应该指出的是,维基百科提供了数据转储,因此搜索该网站并不是真正必要的。