unit-testing - 基于IP的城市检测(和测试)

标签 unit-testing proxy geolocation ip-geolocation maxmind

测试城市检测的最佳、最有效的方法是什么?我通过 www.maxmind.com 实现了基于 IP 的位置检测,但现在我想测试它的准确性。

我知道有各种代理服务,例如 https://www.geoedge.com/和各种类似的网站,但大多数这些服务的代理服务器数量非常有限。如果有一个自动化解决方案可以迭代数百甚至数千个代理服务器,点击测试页面并将结果制成表格,那就太好了。我确信还有其他人也不得不应对同样的挑战。测试这个的事实上的方法是什么?例如,是否有可能通过 cURL 来欺骗 IP 地址?

注意:许多人认为,由于 IP 地址缺乏可靠性,在城市检测方面永远无法达到完美的准确性,我也知道这一点 ( http://www.maxmind.com/en/city_accuracy )。我仍然想要一种出于理智/维护目的进行测试的方法。谢谢!

相关:How do sites like Groupon segment geolocation based on the cities they have deals in?

最佳答案

为了清楚起见,我将这个答案分为两部分。

IP 地理位置

您可能想坚持使用 MaxMind,除非您有非常充分的理由质疑 MaxMind 数据。我建立了一个与您几年前描述的服务非常相似的服务,并且像您一样,想要一种方法来验证 MaxMind 的准确性。我评估了 10 多个运行整个范围的 IP 地理定位解决方案;用于以企业为中心的数据库订阅的免费 JSON API。很快我们就发现,大多数平台要么直接使用 MaxMind,要么将 MaxMind 数据与其他来源的元数据相结合。 ISP 元数据的拼写、大小写和常见缩写

This paper尽管已经有几年的历史,但也颇具说服力。作者通过将一些 IP 地理定位工具(包括 MaxMind)的结果与他们称为“ISP Groundtruth”的数据集进行比较,确定了少数 IP 地理定位工具(包括 MaxMind)的准确性,该数据集是欧盟 ISP 路由器数据和路由器实际 GPS 坐标的混搭。论文对市级定位数据不准确的问题提出了技术解释。


代理扫描

关于自动代理扫描,我强烈建议查看 nmap及其 Lua-based scripting engine (国家安全局)。以下是一些您可能会觉得有用的脚本和库:

关于unit-testing - 基于IP的城市检测(和测试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16681470/

相关文章:

javascript - 比较数组时 Chai 断言错误

Android 单元测试 Xml.newSerializer() 始终返回 null

java - 在单元测试中比较不同类的两个对象中的所有属性

mysql - 我应该多准确地存储纬度和经度?

scala - 在 Play 框架 2.5 (Scala) 中使用 CSRF token 测试请求

android - Charles 代理不显示来自 Nexus 7 的流量

linux - Kubernetes kuberadm 不使用代理

authentication - Grails代理身份验证错误

iphone - 如何获取iPhone map 中当前位置的坐标值?

java - 查找地理区域内的对象