2013-10-12 109 views
18

我正在寻找一个好的免费API,至少会返回IP的国家。 我发现了几个将工作,但他们似乎是不可靠的。 主要问题是我必须每天提出约50000-100000个请求。良好的地理定位API由IP

是否有一些很好的脚本可以安装在我的服务器上并使用它来代替API? 谢谢

+1

使用的https://geoip-db.com IPV4和IPv6支持的服务。 –

+0

IPLocate.io提供了一个免费的API:['https://www.iplocate.io/api/lookup/8.8.8.8'](https://www.iplocate.io/api/lookup/8.8.8.8) - 免责声明:我运行这项服务。 – ttarik

+6

您可以尝试免费的IP地理定位API:https://geoipify.whoisxmlapi.com/ – user121196

回答

13

您可以尝试使用IPInfoDB,因为我发现它很有用。

的API返回的IP地址(国家,地区,城市,邮编 ,纬度,经度)和XML格式 相关的时区的位置。您可以使用PHP,Javascript,Ruby, Python和ASP查找以下代码示例。


有,我可以安装在我的服务器上,并用它 的API,而不是一些好的剧本?

来自同一个站点

ASP例如

<% 
    'Get visitor IP 
    Dim UserIPAddress 
    UserIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
    If UserIPAddress = "" Then 
    UserIPAddress = Request.ServerVariables("REMOTE_ADDR") 
    End If 
%> 
<% 
    'Set API key 
    api_key = "<your_api_key>" 
%> 
<% 
    'Get info and print 
    myxml="http://api.ipinfodb.com/v3/ip-city/?key="&api_key&"&ip=" &UserIPAddress&"&format=xml" 
    set xml = server.CreateObject("MSXML2.DOMDocument.6.0") 
    xml.async = "false" 
    xml.resolveExternals = "false" 
    xml.setProperty "ServerHTTPRequest", true 
    xml.load(myxml) 
    response.write "<p><strong>First result</strong><br />" 
    for i=0 to 10 
     response.write xml.documentElement.childNodes(i).nodename & " : " 
     response.write xml.documentElement.childNodes(i).text & "<br/>" 
    NEXT 
    response.write "</p>" 
%> 

还检查了Maxmind

+0

ipinfodb的链接返回404,请参阅https://ipdata.co我们是一个更多的数据点更近的服务。 – Jonathan

4

您可以检出的MaxMind为GEOIP数据库:\他们提供IP到地理检测不同级别的粒度,例如IP到国家,IP到地区等。您可以通过他们的API使用它们,也可以下载整个IP到地理映射数据库。

最简单和最便宜的方式是购买GeoIP国家数据库http://www.maxmind.com/en/country,您可以将它们保存为本地文件,然后可以使用您的语言风格喜欢的任何软件包查询。

下面是Ruby的一个例子宝石读取GeoIP的数据:https://github.com/cjheath/geoip

+3

这不符合海报的“免费”要求:[费用](https://www.maxmind.com/zh/geoip2-precision-services)。 – 10basetom

+1

他们有免费版本。 –