快速回答
如何检查我的代理 IP 位于哪个城市?
通过代理向 ipinfo.io 等 IP 查询服务发送一次请求,并读取 city、region 和 org(ASN)字段;然后在目标网站使用的数据库中检查同一 IP。使用 MetroProxies(自 US$0.50/GB 起支持城市定向,2026 年 10 月),将结果与你发送的 city- 区段进行比对。无需 KYC;支持加密货币。
我应该检查什么,按什么顺序?
- 代理是否可用:你能收到响应,且 IP 不是你自己的。
- 州:几乎所有数据库都一致。州不对意味着请求有误(检查
state-区段)。 - 城市或都市区:城市作业中最有用的检查。郊区通常被标为核心城市。
- 网络(ASN):它告诉你该 IP 来自哪家家庭宽带提供商,并让你用
asn-使其保持不变。 - 目标自身的视角:许多网站会在页面上显示检测到的位置(门店选择器、“配送至”一行、本地货币或税费)。那才是算数的位置。
在每条结果旁记录 IP、城市、地区和 ASN,以便日后解释异常数据点。
curl -s --max-time 30 \
-x http://USERNAME-country-us-state-or-city-portland:[email protected]:7777 \
https://ipinfo.io/json如何在脚本中检查多个城市?
下面的 Python 示例为每个城市请求一个 IP,打印每个出口的定位位置并标记不匹配。它使用 requests(pip install requests),为每个城市打开新连接,使每个城市获得自己的 IP,并在出错时停止而不是循环重试。将 USERNAME 和 PASSWORD 替换为你在仪表板中的代理凭据。
import requests
GATEWAY = "gw.metroproxies.com:7777"
USER, PASSWORD = "USERNAME", "PASSWORD"
# (state code, city segment, city name as lookup services usually spell it)
CITIES = [("or", "portland", "Portland"), ("tx", "san_antonio", "San Antonio"), ("fl", "tampa", "Tampa")]
def exit_info(state: str, city: str) -> dict:
user = f"{USER}-country-us-state-{state}-city-{city}"
proxy = f"http://{user}:{PASSWORD}@{GATEWAY}"
with requests.Session() as s: # a fresh session = a fresh connection = a fresh IP
r = s.get("https://ipinfo.io/json", proxies={"http": proxy, "https": proxy}, timeout=30)
r.raise_for_status()
return r.json()
for state, segment, expected in CITIES:
try:
info = exit_info(state, segment)
except requests.RequestException as e:
print(f"{segment}: request failed ({e.__class__.__name__}); widen to the state or retry later")
continue
city, region, org = info.get("city"), info.get("region"), info.get("org")
flag = "ok" if city == expected else "check"
print(f"{segment:12} -> {info.get('ip')} {city}, {region} {org} [{flag}]")
// save as check.mjs, then: npm install undici && node check.mjs
import { ProxyAgent, fetch } from 'undici';
const gateway = 'http://gw.metroproxies.com:7777';
const user = 'USERNAME-country-us-state-co-city-colorado_springs';
const token = 'Basic ' + Buffer.from(`${user}:PASSWORD`).toString('base64');
const agent = new ProxyAgent({ uri: gateway, token });
const res = await fetch('https://ipinfo.io/json', { dispatcher: agent, signal: AbortSignal.timeout(30000) });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const info = await res.json();
console.log(info.ip, info.city, info.region, info.org);
await agent.close();
如果城市不匹配怎么办?
不匹配很常见,通常无害;先弄清是哪一类。
- 邻近城市或郊区(Mesa 报告为 Phoenix,Hialeah 报告为 Miami):各数据库对城市边界的划分不同。检查目标自身的视角;如果它显示正确的都市区,就没问题。
- 都市区正确,州不对(Kansas City 属于 Kansas 还是 Missouri):使用州区段并与目标的视角比对;都市区会跨越州界。
- 完全不同的地区:用新连接重试一次。如果重复出现,请将 IP、时间和你的用户名(绝不要密码)发送给支持团队。
不要逐个挑选 IP,直到某个数据库一致为止:数据库每周都在变化。确定哪个数据库对你的作业重要,并接受它会把一小部分 IP 定位到别处。
接下来该去哪里?
先用 将你的 IP 切换到另一个城市 获取 IP,用 按城市粘性会话 保持它,并在 准确的城市级代理 中了解数据库为何不一致。所有指南都在 指南页面;代码在 curl 和 Python 文档中。
关于位置检查,人们还会问什么?
我应该使用哪个 IP 查询服务?
使用最接近你目标的服务:如果你测试的网站使用某个特定的地理定位提供商,就用该提供商检查。对于一般检查,ipinfo.io 及类似服务会在一次 JSON 响应中返回城市、地区和 ASN。遵守每个服务的速率限制。
我能在 Google 上检查位置吗?
不能用脚本。Google 的条款禁止无视 robots.txt 的自动访问,而 google.com/robots.txt 不允许 /search。请在设置为该代理的浏览器中手动检查,或对大批量使用经批准的数据提供商。
为什么我的浏览器仍显示我的真实时区?
因为代理只更改 IP 地址。浏览器的时区、语言和保存的位置来自你的设备。如果你测试的页面会读取它们,请将其设置为与城市匹配(对于 Portland,为 America/Los_Angeles)。