测试
1 GB
US$2.63
US$2.63/GB
- 先检查一个城市的一个 ISP
- ASN、州、城市和 ZIP 定向
- HTTP、HTTPS、SOCKS5
用例 · QA 和支持
有些工单只在某个网络上才有意义。在固定无线上失败,显示错误的城市,或某个有线电视提供商上的图像过期。该网络上的住宅 IP 将工单转变为可重复的测试。
快速回答
如何复现只在某个互联网服务提供商上出现的 bug?
网络 bug 复现是指在与客户相同类型的连接上重现其故障:同一提供商、同一城市,最好同一时段。Broadband Proxies 按 ASN 和城市为 QA 与支持团队提供美国住宅 IP。粘性会话持续 最长 30 分钟(IP 可能提前更换,例如家庭设备离线时)。1 GB 套餐价格为 US$2.63;无需 KYC,支持加密货币支付。
| 常见工单 | 仅在固定无线网络上失败、检测到错误的城市或州、某一网络上内容过期、被标记为可疑而拦截 |
|---|---|
| 定向 | ASN 加州、城市或 ZIP,例如 USERNAME-country-us-state-az-city-phoenix-asn-22773(凤凰城的 Cox 网络) |
| 粘性会话 | 最长 30 分钟(IP 可能提前更换,例如家庭设备离线时) |
| 协议 | HTTP、HTTPS(CONNECT)和 SOCKS5 |
| 需要记录的内容 | 请求的定位、出口 IP、来源 ASN、UTC 时间窗口、会话 ID |
| 无法复制的内容 | 客户的路由器、Wi-Fi、设备和本地 DNS 设置 |
| 价格 | US$2.63 1 GB,US$5.94 10 GB,每个项目可创建子用户 |
住宅出口为你的服务提供客户网络的公网 IP。任何基于该 IP 的逻辑都会表现得与客户处一致。四类工单经常出现。
代理复制的是公网 IP 及其网络,而不是整个连接。客户的路由器、Wi-Fi、浏览器扩展和设备无法触及。请客户提供浏览器版本和截图以覆盖这些方面。
DNS 是另一个限制。通过代理时,域名可能由代理网络而非 ISP 的解析器解析,因此仅涉及 DNS 的 bug 需要其他方法。
IPv6 也需注意。下面的检查使用 api.ipify.org,它仅通过 IPv4 响应。如果 bug 仅在 IPv6 下出现,代理测试可以排除或确认 IPv4 路径。你仍需要一条原生 IPv6 线路来确认其余部分。
收集网络信息
询问 ISP 名称、城市或 ZIP、故障时间及错误文本。像我们的出口 IP 指南这样的查询可以获取 ASN,无需共享密码或路由器访问权限。
构建一个粘性用户名
对于凤凰城的 Cox 客户:USERNAME-country-us-state-az-city-phoenix-asn-22773-session-bug4521-ttl-30。
确认并记录出口
运行下面的脚本。它会记录出口 IP、来源 ASN 和前缀,然后监控 IP 变化。
在会话内复现
在浏览器或测试运行器中使用相同的用户名。在会话窗口内完成,并记录任何 IP 变化。
运行对照网络
在同一城市的另一个 ASN 上重复步骤。如果 bug 消失,说明网络是原因之一。
# Keep one sticky exit for a bug reproduction and write a record for the ticket.
import json
import time
from datetime import datetime, timezone
import requests
GATEWAY = "gw.broadbandproxies.com"
PORT = 7777
TARGET = "country-us-state-az-city-phoenix-asn-22773" # Cox network in Phoenix
SESSION = "bug4521"
USERNAME = "USERNAME-" + TARGET + "-session-" + SESSION + "-ttl-30"
PASSWORD = "PASSWORD"
proxy = "http://%s:%s@%s:%d" % (USERNAME, PASSWORD, GATEWAY, PORT)
proxies = {"http": proxy, "https": proxy}
def now():
return datetime.now(timezone.utc).isoformat(timespec="seconds")
def exit_ip():
r = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
r.raise_for_status()
return r.json()["ip"]
def origin(ip):
r = requests.get(
"https://stat.ripe.net/data/prefix-overview/data.json",
params={"resource": ip, "sourceapp": "bug-repro"},
timeout=30,
)
r.raise_for_status()
data = r.json()["data"]
return [a["asn"] for a in data.get("asns", [])], data.get("resource")
ip = exit_ip()
asns, prefix = origin(ip)
record = {"target": TARGET, "session": SESSION, "start_utc": now(), "exit_ip": ip,
"origin_asns": asns, "prefix": prefix, "ip_changes": []}
# Reproduce the bug in the browser now, with the same username.
# This loop only checks every 5 minutes that the exit IP has not moved.
for _ in range(5):
time.sleep(300)
current = exit_ip()
if current != ip:
record["ip_changes"].append({"time_utc": now(), "new_ip": current,
"origin_asns": origin(current)[0]})
ip = current
record["end_utc"] = now()
print(json.dumps(record, indent=2))| 字段 | 示例 | 为什么重要 |
|---|---|---|
| 请求的定位 | country-us-state-az-city-phoenix-asn-22773 | 同事之后可以运行相同的测试 |
| 出口 IP | 203.0.113.24(文档范围) | 在服务器和 CDN 日志中搜索它 |
| 来源 ASN 和前缀 | AS22773,来自 RIPEstat | 证明是网络问题,而不仅仅是请求 |
| UTC 时间窗口 | 2026-10-18 14:05 至 14:30 UTC | 跨时区匹配日志行 |
| 会话 ID 和 TTL | bug4521,30 分钟 | 显示 IP 是否保持不变 |
| 结果 | /checkout/ 上出现 HTTP 403 | 该 bug 是否被复现 |
| 对照 | AS209 上的同一城市:无错误 | 将网络原因与代码原因区分开 |
测试你自己的网站、应用或 API,或所有者已授权你测试的系统。复现一个工单应该只需少量请求,而不是爬取。我们的可接受使用政策禁止对未经所有者许可的系统进行洪水攻击和扫描。
不要在用户名和会话 ID 中包含客户数据。使用工单号,例如 bug4521,绝不要使用电子邮件或姓名。银行、政府和支付门户网站已在所有套餐中被屏蔽,因此无法通过网关测试支付提供商的页面。
一次复现通常只需几次页面加载,加上脚本中的检查。1 GB(US$2.63)涵盖在一个 ISP 和城市上的试用。10 GB(US$5.94)适合每位测试人员一个子用户的 QA 团队。流量永不过期。
1 GB
US$2.63
US$2.63/GB
5 GB
US$3.75
US$0.75/GB
10 GB
US$5.94
US$0.59/GB
每个套餐都包含: 协议: HTTP、HTTPS、SOCKS5 · 定向: 美国境内支持 ASN(ISP)、州、城市和 ZIP;其他地区支持国家;城市可用性因地区而异 · 会话: 轮换或粘性(最长 30 分钟) · 身份验证: 用户名和密码,或 IP 白名单(最多 10 个 IP) · 流量有效期: 永不过期
可以,在粘性会话内:最长 30 分钟(IP 可能提前更换,例如家庭设备离线时)。将 -session-<id>-ttl-<minutes> 放在用户名末尾,并在每个工具中复用同一 id。在开始时和结束时记录出口 IP。如果发生了变化,请在工单中说明,因为新 IP 可能位于不同的前缀。
通常可以。针对 T-Mobile Home Internet 定位 AS21928,或针对 Verizon 5G Home 定位 AS22394。这些网络上的出口通常与其他用户共享地址,就像客户的线路一样。Broadband Proxies 无法判断给定出口是家庭网关还是手机,因此请记录 ASN 而非设备类型。
如这里所示,不覆盖。示例使用 api.ipify.org 检查出口,而该服务仅通过 IPv4 响应。如果客户的故障仅在 IPv6 下发生,代理测试会告诉你 IPv4 路径是否正常。请从原生 IPv6 连接确认 IPv6 侧的情况。
ISP 名称、城市或 ZIP、故障发生时间、浏览器和确切错误。ASN 最有帮助:查询页面无需任何登录即可显示。绝不要索取密码、路由器访问权限或对客户设备的远程控制。测试网络侧不需要这些。
可以。为每位测试人员或项目创建一个子用户。每个子用户都有自己的凭据、流量上限和用量总计。你还可以允许最多 10 个 IP 代替密码,这适合具有固定地址的 CI runner。流量来自你购买的那一个套餐。
ASN 可用性因网络、城市和一天中的时段而异;结账时显示在线可用的选项,且不公布每个 ISP 的 IP 数量。先去掉 ZIP,再去掉城市,保留 ASN 和州。较小的提供商可能只在某些时段在线,因此在客户报告的时间点重试。请在工单中注明你使用的定位级别。
1 GB US$2.63 · 含 ASN · 无需 KYC
开始使用