查找属于特定 ISP 的所有 IP 范围

10 ip isp whois ip-blocking web-crawler

我遇到了某个人不断以激进的方式抓取我的网站的问题;浪费带宽和CPU资源。我已经实现了一个系统,它跟踪我的 Web 服务器访问日志,将每个新 IP 添加到数据库中,跟踪从该 IP 发出的请求数量,然后,如果相同的 IP 超过特定的请求阈值在某个时间段内,它被 iptables 阻止。这听起来可能很复杂,但据我所知,不存在旨在将某个 IP 限制为一定数量的带宽/请求的预制解决方案。

这对大多数爬虫来说都很好,但是一个非常执着的人每次被阻止时都会从他/她的 ISP 池中获取一个新 IP。我想完全阻止 ISP,但不知道如何去做。

对几个示例 IP 进行 whois,我可以看到它们都共享相同的“网络名”、“mnt-by”和“来源/AS”。有没有办法可以使用相同的 mnt-by/AS/netname 查询所有子网的 ARIN/RIPE 数据库?如果没有,我还能如何获取属于该 ISP 的每个 IP?

谢谢。

vor*_*aq7 6

whois [IP address](或whois -a [IP Address]) 通常会给您一个 CIDR 掩码或属于相关公司/提供商的地址范围,但解析结果留给读者作为练习(至少有 2 种常见的 whois 输出格式)。

请注意,这种批量阻止也可能会淘汰合法用户。在采取这种方法之前,您应该联系相关 ISP 的滥用服务台(通常列在whois他们的 netblock 或 DNS 域的信息中,否则滥用@ 是一个不错的起点),看看是否可以通过外交而不是技术来解决这种情况.


还要注意,一些预先做好的解决方案,以每秒限制的请求通过IP -看看MOD的QoS或您的系统的防火墙/流量整形capibilities。


小智 6

我自己想出来的。有点。

robtex.com 列出了给定 AS 的所有公布的 IP 范围:http ://www.robtex.com/as/as123.html#bgp

仍然不知道 robtex 如何或从何处检索此信息。如果其他人想插话并解释数据的来源,那就太好了。

  • 它是从他们从连接的路由器看到的 BGP 公告中获取的。 (2认同)