如何使用ip地址查找位置

How to find location using ip address

我的网站托管在 pythonanywhere.com 上,我可以从访问日志中获取网站访问者的 IP 地址。我的问题是

您可以从访问者的 IP 地址获取访问者的位置。这是一个称为地理定位的过程。

既然你需要得到准确的位置,你必须知道它的准确性取决于多种因素,所有的地理定位 API 都不是同样准确的。我设法通过 Abstract API 获得了最佳结果(它有免费和商业计划)。您使用 get 请求对其进行查询,并收到包含纬度、经度、国家/地区、城市...

的 JSON 响应

如你问题下的评论所述,有些访问者可以通过使用VPN服务隐藏他们的真实IP,而在JSON回复中,这个API可以告诉你该IP是否属于VPN 服务,这样您就可以知道访问者是否隐藏了他的位置和 IP。

您可以为此使用某些 API 服务。

例如https://apiip.net,他们的API提供了很多关于IP的信息,如果需要你也可以请求XML回复。

简单的 GET 调用:

https://apiip.net/api/check?ip=67.250.186.196&accessKey={your_api_key}

回复:

{
  "ip": "67.250.186.196",
  "continentCode": "NA",
  "continentName": "North America",
  "countryCode": "US",
  "countryName": "United States",
  "countryNameNative": "United States",
  "city": "New York",
  "postalCode": "10001",
  "latitude": 40.8271,
  "longitude": -73.9359,
  "capital": "Washington D.C.",
  "phoneCode": "1",
  "countryFlagEmoj": "",
  "countryFlagEmojUnicode": "U+1F1FA U+1F1F8",
  "isEu": false,
  "languages": {
    "en": {
      "code": "en",
      "name": "English",
      "native": "English"
    }
  },
  "currency": {
    "code": "USD",
    "name": "US Dollar",
    "symbol": "$",
    "number": "840",
    "rates": {
      "EURUSD": 1.11
     }
  },
  "timeZone": {
    "id": "America/New_York",
    "currentTime": "10/26/2021, 2:54:10 PM",
    "code": "EDT",
    "timeZoneName": "EDT",
    "utcOffset": -14400
  },
  "connection": {
    "asn": 12271,
    "isp": "Charter Communications Inc"
  },
  "security": {
    "isPublicProxy": false,
    "isResidentialProxy": false,
    "isTorExitNode": false,
    "network": "67.250.176.0/20"
  }
}