任何人拿到新代理后做的第一件事,就是查它到底是从哪儿出来的。今天我们要给这个问题一个更好的答案:IP Info,Shifter 推出的免费 IP 地理定位 API。一次请求即可返回任意公网 IP 的国家、城市、坐标、时区、ISP、ASN 和连接类型。无需注册,无需 API 密钥,不存在用量超出套餐的问题,而且你不必是 Shifter 客户也能使用。
curl http://ip-info.com/json
这就是全部的接入方式。
一个答案,来自为你路由流量的网络
每个 IP 查询服务都基于自己的数据库运行,而这些数据库的结果并不总是一致。这就是为什么一个设置为德国的代理,在一个网站上查出来是荷兰,在另一个网站上又是比利时,也是为什么”我的定位是不是出问题了?”常常问错了方向。真正该问的问题是:你查的是哪个数据库。
IP Info 消除了这种猜测。它运行在 Shifter 自身代理池所使用的同一个 IP 位置与网络数据库之上。 当你查询一个 Shifter 出口节点时,你看到的国家、城市和网络信息,与我们基础设施对其的分类完全一致,也正是我们国家、城市和 ASN 定位所依据的同一份数据。不存在需要对照核实的第二个说法。
企业级数据,没有企业级账单
IP Info 背后的数据不是抓取来的,也不是众包的。它是一个授权的商业 IP 情报数据库,市值数十亿美元的公司都依赖这类数据来做反欺诈、本地化、合规和分析,并且由其提供方每天更新。这种级别的数据通常要经过销售电话和年度合同才能拿到。而在这里,它就在一个 URL 之后。
它还非常详尽。每次响应包含 29 个字段:
- 位置信息: 国家和大洲(代码与名称)、地区、区县、城市、邮编、坐标、时区以及是否属于欧盟成员国
- 归属信息: 以纯数字形式给出的 ASN、AS 名称、ISP 以及使用该 IP 的机构
- 类型信息: 连接类型(Cable/DSL、Cellular、Corporate 等)、用户类型(residential、business、cellular 或 hosting)以及一个 anycast 标记
- 供你自行关联使用: 城市、地区、国家和大洲对应的 GeoNames ID
每个字段在每次响应中都会出现。当数据库中没有对应值时,你得到的是 null,绝不是猜测,这样你的解析器就永远不需要为不同的数据结构做分支处理。
免费,而且打算一直免费下去
在这个市场里,“免费”通常意味着一个试用密钥、一个月度上限,以及尽头处等着你的升级页面。IP Info 没有这些。
- 无需注册,无需 API 密钥。 发送一个
GET请求即可,没有其他需要配置的东西。 - 没有按应用计算的配额。 你可以在脚本、后端、CI 检查和生产产品中使用它,包括商业用途。它是一项共享服务,所以我们的条款要求的是合理使用,而不是某种套餐限制。
- 支持 HTTPS 或普通 HTTP,支持 IPv4 或 IPv6。 HTTP 无需重定向即可使用,这让极简客户端和快速检查都变得简单。
- 可直接从浏览器调用。 响应允许跨域
GET,因此网页可以直接调用它。 - 不保留任何记录。 该 API 不存储任何查询历史。
为 AI 代理而构建
如今越来越多的网络流量来自 AI 代理,而一个执行浏览或抓取任务的代理需要知道自己的请求看起来是从哪里发出的。IP Info 的设计让代理无需任何配置就能使用。
没有需要存储的密钥,没有需要说明的认证流程,也没有需要安装的 MCP 服务器:纯 HTTP 就足够了。该服务发布了 llms.txt、一份完整的纯文本参考文档以及一份 OpenAPI 3.1 schema,因此只要让代理读取其中任意一个,它就能学会整个 API。响应内容是为供模型读取而构建的:数字形式的 ASN、ISO 国家代码以及明确的 null 值,不给模型留下任何需要臆测的空间。
有一条规则值得告知每一个代理:对 /json 的调用描述的是调用方本身,而对代理来说,调用方是它的服务器或它所使用的代理,而不是它所服务的那个人。 要查询某人的 IP,应把该地址提供给代理,让它调用 /json?ip=ADDRESS。代理专用页面提供了可直接粘贴使用的说明,我们的 IP Info 文档也包含一个可直接接入任何函数调用(function-calling)设置的工具定义。
一行命令检查你的 Shifter 代理
对 Shifter 客户来说,最直接的用途就是确认你的定位是否生效。通过你的代理发送请求,并将结果与你所要求的目标进行比对:
curl --proxy http://p.shifter.io:443 \
--proxy-user "customer-USERNAME-country-us-city-new_york:PASSWORD" \
http://ip-info.com/json
一个真实的完整响应示例:
{
"ip": "67.84.10.10",
"city": "New York",
"city_geoname_id": 5128581,
"region": "New York",
"region_code": "NY",
"region_geoname_id": 5128638,
"district": null,
"district_code": null,
"district_geoname_id": null,
"country": "US",
"country_name": "United States",
"country_geoname_id": 6252001,
"is_eu": false,
"continent": "NA",
"continent_name": "North America",
"continent_geoname_id": 6255149,
"loc": "40.7128,-74.006",
"latitude": 40.7128,
"longitude": -74.006,
"postal": "10123",
"timezone": "America/New_York",
"weather_code": "USNY0998",
"asn": 6128,
"as_name": "Cablevision Systems Corp.",
"isp": "Cablevision Systems Corp.",
"org": "Optimum Online (Cablevision Systems)",
"connection_type": "Cable/DSL",
"user_type": "residential",
"is_anycast": false
}
country 应当与你所定位的国家一致,如果你使用了 ASN 定位,asn 应当与该网络一致。user_type 会告诉你该出口节点所处的网络类型。由于 IP Info 与我们的代理池读取的是同一份数据,这里的匹配意味着该出口节点确实位于我们网络所安放的位置。如果你发现任何不匹配,请把该 IP 发给我们,我们会进行调查。
我们也已经把文档和使用指南中的所有代码示例都改为使用 IP Info,因此你从 Shifter 教程中复制的任何内容,现在都会与我们网络所使用的同一份数据进行核对。
IP Info 做不到的事
了解其局限性,也是信任这份答案的一部分。IP 地理定位本质上是近似的:它只能指向一个区域,永远无法精确到街道地址,也永远无法识别具体的人。连接类型和用户类型是数据库层面的分类。它们是有用的参考信息,但并不是 VPN 或代理检测,IP Info 也从未声称具备这种能力。
现在就开始
打开 ip-info.com 查询你自己的 IP 或任意其他 IP,阅读 API 参考文档了解每个字段和错误代码,或者从我们的 IP Info 指南开始,里面有针对 Shifter 代理和 AI 代理的可直接运行的示例。
而当你要查询的 IP 恰好是我们的一个节点时,我们的住宅代理会基于同一份数据为你提供国家、城市和 ASN 定位。