跳到正文

DApp 测试代理:用目标国家 IP 测前端与地区规则

每个测试国家一条固定出口:地区规则、翻译或 RPC 报错,在测试里先暴露,而不是等海外用户反馈。

为什么测 dApp 要用代理

国内团队测出海 dApp,第一步就卡在网络:GreatFire 显示 app.uniswap.org、polymarket.com 这类 dApp 在中国大陆打不开,国内网络里看不到海外用户看到的页面,测试流量必须从目标国家出去。

dApp 会按国家给出不同结果。以 Polymarket 为例,它公开了地区检测接口,返回识别到的 IP、国家和地区,列出前端和 API 全面限制或只允许平仓的地区,并要求开发者下单前先核对位置。你的 dApp 如果有类似规则,只能用各地区的 IP 实测。

Playwright 支持给整个浏览器或每个上下文单独设置代理,一次运行就能测多个国家;用户名密码只对 HTTP(S) 代理生效,所以生成 IP 时协议选 HTTP。MetaMask 这类钱包插件只能在持久化上下文启动的 Chromium 里加载。静态机房 IP 租期内不变,同一个国家每次都从同一个地址测,结果可以对比。

DApp 测试推荐配置

可使用方向键横向滚动,阅读完整内容。

DApp 测试推荐配置
比较项目选择原因
产品静态机房代理固定 IP、速度快,按 IP 计费
计费方式按 IP 和租期租期内地址不变
买几条 IP每个测试国家一条每个地区固定一个出口
国家你服务或限制的每个市场Web3 场景不会自动预选国家,每个国家各买一条
协议HTTP(默认)Playwright 只对 HTTP(S) 代理发送用户名密码
IP 会变吗租期内不变到「我的资产」续费,测试结果才能前后对比

下面的「配置 DApp 测试代理」按钮会打开 Web3 场景的静态机房代理,按 IP 和租期计费、默认 HTTP。付款前选好地区、租期和「数量」(一次最多 100 个 IP)。

买哪种 Proxy302 代理

可使用方向键横向滚动,阅读完整内容。

买哪种 Proxy302 代理
比较项目静态 ISP动态住宅静态机房
你得到什么一条租期内固定归你的家庭宽带 IP真实家庭宽带 IP:在所选国家保持粘性会话,低价线路也可全球轮换机房固定 IP,控制台里速度最快、价格最低的一档
价格按 IP 和租期计费,付款前以 PTC 显示(1 PTC = US$1)按流量:低价线路 US$1.50/GB、优质线路 US$5.00/GB,1 GB 起按 IP 和租期计费,付款前以 PTC 显示
最适合 dApp 测试必须从家庭宽带地址发起的检查按流量计费,抽查很多国家或城市CI 里的自动化测试,每个国家一条固定 IP

价格以美元计,用 PTC 余额支付(1 PTC = US$1)。先充值钱包,再购买需要的线路。自动续费暂未开放,静态 IP 请在到期前到「我的资产」手动续费。

5 步配好 dApp 测试代理

  1. 国内网络先开辅助工具

    代理要在海外网络下才能连上。在中国大陆,登录 Proxy302 控制台 → 连接工具 → 辅助工具,下载并运行,使用代理期间保持开着;工具和脚本里用辅助工具显示的本地地址和端口代替代理的主机和端口,用户名密码不变。已有能连海外的 VPN 也可以。

  2. 选择开发配置

    点「配置 DApp 测试代理」打开「静态机房代理」,使用场景已选 Web3。在「连接配置」里选地区和租期,协议保持 HTTP,点「确认费用并生成」。每次购买对应一个地区,测试矩阵里的每个国家各买一次;同一国家要多个 IP 就改「数量」(一次最多 100 个)。

    预期结果 「当前配置」显示按 IP 和租期、Web3、地区和协议。

  3. 复制连接信息

    付款后控制台会打开「我的资产」。在新代理上点「查看凭据」,复制出口地址(主机:端口)、用户名和密码。

  4. 把出口写进测试配置

    每个国家的主机、端口、用户名和密码存进 CI 密钥,不要提交到仓库。在 Playwright 里作为浏览器或上下文的 proxy 参数传入,写法见下方示例。国内 CI 机器直连代理通常会超时,自动化测试请放在海外的 CI 上跑。

  5. 按国家逐个跑

    同一套流程在每个出口上跑一遍:先读出口国家,再看页面状态码,每个国家留一张截图,方便对比差异。

    预期结果 每次运行都输出出口国家、页面状态和截图。

同一个测试按国家逐个跑(Playwright)

可使用方向键横向滚动,阅读完整内容。

// Save as geo-test.mjs and run: node geo-test.mjs
// npm i -D playwright && npx playwright install chromium
import { chromium } from 'playwright'

const DAPP_URL = 'https://app.example.org/' // your dApp
const exits = {
  US: { server: 'http://US_HOST:PORT', username: 'USERNAME', password: 'PASSWORD' },
  DE: { server: 'http://DE_HOST:PORT', username: 'USERNAME', password: 'PASSWORD' },
}

const browser = await chromium.launch()
for (const [expected, proxy] of Object.entries(exits)) {
  const context = await browser.newContext({ proxy })
  const page = await context.newPage()
  await page.goto('https://ipinfo.io/country')
  const seen = (await page.locator('body').innerText()).trim()
  const response = await page.goto(DAPP_URL, { waitUntil: 'domcontentloaded' })
  console.log(`${expected}: exit ${seen}, status ${response?.status()}`)
  await page.screenshot({ path: `dapp-${expected}.png`, fullPage: true })
  await context.close()
}
await browser.close()

Playwright 支持按浏览器上下文分别设置代理,一次运行测完多个国家。主机和密码放进 CI 密钥,DAPP_URL 换成你的 dApp。在中国大陆本机调试时,server 填辅助工具显示的本地地址和端口。

常见问题速查

所有国家结果都一样

检查 每个上下文里 ipinfo.io 返回的是预期国家吗?

处理 确认每个上下文都设置了自己的 proxy,且 IP 确实买在该国家;只用一个出口重跑来定位。

报 407 Proxy Authentication Required

检查 用户名和密码是否作为单独字段填写、与「查看凭据」完全一致,IP 是否按 HTTP 生成?

处理 像示例那样在 server 旁边填 username 和 password,到「我的资产」重新复制。

测试里钱包插件加载不出来

检查 启动的是不是持久化上下文的 Chromium,而不是 Google Chrome 或 Edge?

处理 用 Playwright 自带的 Chromium 和 launchPersistentContext,并在同一组启动参数里传入 proxy。

DApp 测试代理常见问题

国内能直接测出海 dApp 吗?

很多 dApp 前端在国内打不开,看到的结果也不是海外用户的结果。本机调试先开辅助工具,再用目标国家的代理;自动化测试放在海外 CI 上跑。

测试用机房 IP 还是住宅 IP?

自动化测试用机房:每个国家一条固定、便宜的 IP。要抽查很多国家或城市用动态住宅;必须从家庭宽带地址发起的检查用静态 ISP。

测试里能带上 MetaMask 吗?

可以,用 Chromium:Playwright 只在持久化上下文里加载扩展,浏览器的代理同样覆盖 MetaMask 的流量。只用测试钱包和测试币。

怎么测 dApp 的地区限制是否生效?

受限流程分别用每个受限国家和一个允许国家的 IP 跑,对比结果。Polymarket 的文档就是这个思路:下单前用地区检测接口返回国家和地区。

需要买几条 IP?

测试矩阵里每个国家一条。同一国家的并行任务可以共用这条 IP,只要不超过 dApp 和 RPC 服务商的限额。

来源与验证

7
  1. GreatFire 检测:dApp 网站在中国大陆的访问情况

    第三方来源 · 核对于:

    2026-10-18 读取:app.uniswap.org 在最近一次有效测试(2026-09-24)中被封锁;polymarket.com 在最近一次测试(2026-03-25,之后未再测试)中被封锁。

    第三方连通性测试,个别网络可能不同。

  2. Polymarket 文档:地区限制

    官方文档 · 核对于:

    公开了 GET https://polymarket.com/api/geoblock 接口,返回是否受限以及识别到的 IP、国家和地区;列出全面限制、前端和 API 只允许平仓、仅前端只允许平仓的地区;要求开发者下单前先核对位置。

  3. Playwright 文档:HTTP 代理

    官方文档 · 核对于:

    说明代理可以设置给整个浏览器,也可以给每个浏览器上下文单独设置,字段为 server、username、password;支持 HTTP(S) 和 SOCKSv5,可选的用户名密码只针对 HTTP(S) 代理说明。

  4. Playwright 文档:Chrome 扩展

    官方文档 · 核对于:

    扩展只能在以持久化上下文启动的 Chromium 中使用;Google Chrome 和 Microsoft Edge 已移除旁加载扩展所需的命令行参数。

  5. Proxy302 静态机房(Web3 场景)配置

    产品观察 · 核对于:

    2026-10-18 核对控制台源码:Web3 场景下的静态机房页面按 IP 和租期计费,协议可选 HTTP 或 SOCKS5、默认 HTTP,地区不会自动预选,「自动续租 IP」显示「暂未开放」,并注明静态 IP 不参与轮换。页面上的 Web3 提示为「开发与工具联网:按 IP · 默认 HTTP CONNECT · 1 个固定出口 · 协议与租期自行选择」。2026-10-19 起「数量」可填 1–100,控制台逐个下单、分别扣费。

  6. Proxy302 价格说明

    产品观察 · 核对于:

    价格页公布:动态住宅低价线路 US$1.50/GB、优质线路 US$5.00/GB,均 1 GB 起;账户以 PTC 结算,1 PTC = US$1.00;静态 ISP 与机房 IP 的租金取决于地区、数量和租期,付款前显示(2026-10-09 已与生产环境商品目录核对)。

  7. Proxy302 辅助工具使用教程

    产品观察 · 核对于:

    教程说明:在中国大陆,代理要在海外网络下才能连上;在控制台「连接工具 → 辅助工具」下载并运行免费的辅助工具,再把它显示的本地地址和端口填进指纹浏览器、浏览器插件或手机,账号密码不变;已有能连海外的 VPN 也可以。

准备好接入了吗?

注册账号、一次充值,即可选择动态住宅、静态 ISP 或数据中心出口。动态住宅覆盖 195+ 国家与地区。