gpt4 book ai didi

java - 通过 Java 中的包含检查爬虫 IP 列表的最快方法

转载 作者:行者123 更新时间:2023-11-30 09:52:07 25 4
gpt4 key购买 nike

我从以下网站获得了爬虫列表:http://www.karavadra.net/blog/2010/list-of-crawlers-bots-and-their-ip-addresses/#respond

如果您知道更好的定期更新的 IP 列表,请告诉我。

现在我创建了对象:

 private static final HashSet<String> list = new HashSet<String>(){{
add("66.249.71.248");
add("66.249.66.38");
add("66.249.65.142"); // 331 more entires
}};

我正在通过这种方法检查列表:

public static boolean isCrawler(String ip){
return list.contains(ip);
}

请建议如何改进它,使其成为更快、更优雅的解决方案。我使用 spring,所以 beans 也是一种选择。

我想在列表中集成更新服务,但我没有找到有用的可下载 IP 列表,并且通过 Jsoup 解析网站从来都不是理想的解决方案。

最佳答案

如果我对你的理解是正确的,我想让你的 contains() 检查更快。

尽管我相信 HashSet 的 contains() 无论如何都能正常工作,但我认为在您的情况下您可以稍微改进一下。

您将 IP 地址存储为字符串。 IP地址实际上是数字。将 IP 转换为数字并将结果放入集合中。这有望更快地发挥作用。

这里是如何将 IP 转换为数字:

public static Long ipToInt(String addr) {
String[] addrArray = addr.split("\\.");

long num = 0;
for (int i=0;i<addrArray.length;i++) {
int power = 3-i;

num += ((Integer.parseInt(addrArray[i])%256 * Math.pow(256,power)));
}
return num;
}

我从 http://teneo.wordpress.com/2008/12/23/java-ip-address-to-integer-and-back/ 中获取了这段代码

关于java - 通过 Java 中的包含检查爬虫 IP 列表的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com