面向拒绝你的爬虫的页面的 Web Unlocker API

你发来 URL,我们带回那个回了 403 的页面:住宅 IP、真实浏览器的 TLS 指纹、每次被拒即换新出口、站点要求 JavaScript 时启用真实浏览器。响应里带有状态、尝试次数、耗时和费用,你永远知道发生了什么。

2026-11-11 由我们自己的 canary 实测:81 次调用中 72 次成功。验证码演示页会运行但不计入,因为交互式验证码不会被破解。

QuantumProxies Web Unlocker:向 /api/v1/scraper/unlock 发送一次带 URL 和国家的 POST,请求从住宅 IP 以浏览器 TLS 指纹重放,真实浏览器待命,那个曾回 403 的页面以 200 OK 返回,并附带状态、blocked 标志、获胜层级和尝试日志。

从 403 到 200,实测

你的客户端得到的

403

不是页面,而是 403、安全检查或 JavaScript 挑战,无论 IP 多干净、User-Agent 怎么设。

Web Unlocker 在 2026-11-11 返回的

200

对 27 个受保护目标的 81 次调用中,88.9% 以真实页面返回:中位 4.1 秒,p95 28.8 秒。

这是我们自己的 canary,不是宣传册上的数字:同样的目标,各运行 3 轮。运行会重复,本页每个数字都从其文件重新生成。

按反爬虫系统划分的成功率

由 2026-11-11 的 canary 运行生成,对相同目标运行 3 轮。交互式验证码页面已排除。

反爬虫系统成功率中位耗时调用数
Cloudflare100%8.9 s9
DataDome91.7%10.4 s12
Akamai75%2.4 s12
PerimeterX / HUMAN100%1.8 s9
Kasada100%16.1 s6
F5 BIG-IP100%3.4 s6
Imperva83.3%7.4 s6
AWS WAF66.7%14.3 s6
Amazon66.7%4.1 s3
Google66.7%7.5 s3
Other sites100%2.0 s6
Reddit100%1.7 s3

我们如何测量

这些数字来自我们自己的 canary,即在相同页面上反复进行的运行。客户流量从不计入其中。

最近一次运行:2026-11-11。27 个页面,各运行 3 轮:81 次调用,72 次返回真实页面(88.9%)。

你需要哪个产品

三个产品共用同一张住宅网络。该调用哪个,取决于目标站点对你的请求做了什么。

Web Unlocker

页面以 403、安全检查或挑战拒绝你的客户端:一次调用带回真实响应,任意方法、你自己的头和正文、固定在同一出口的登录或购物车,按 GB 从预付余额计费。

住宅代理

你的客户端本就能通过,只是需要另一个 IP:以同样的用户名语法(国家、州、城市、会话)通过 HTTP 或 SOCKS5 使用住宅出口。

Extract API

你想要 Markdown、文本或 JSON 形式的页面,用不着原始响应、POST 或自己的 cookie jar。

用哪个端点

三扇门后是同一个引擎。按你的代码已经会说的方式来选;代码片段与仪表盘用你自己的凭据填充的完全相同。

REST API

你可以改代码:一次 JSON 请求进,一次 JSON 响应出,无需安装证书。

POST https://app.quantumproxies.io/api/v1/scraper/unlock

curl -X POST https://app.quantumproxies.io/api/v1/scraper/unlock \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/", "country": "us"}'

代理(CONNECT)

你已有会说代理的爬虫:用 unlocker 的用户名和密码指向主机和端口,CA 只装一次。

http://unlock.quantumproxies.io:9000

# once: curl -o unlocker-ca.pem https://app.quantumproxies.io/api/v1/scraper/unlock/ca
curl --proxy http://unlock.quantumproxies.io:9000 \
  --proxy-user "USER:PASS" \
  --cacert unlocker-ca.pem \
  https://example.com/

直连模式

不装证书的代理:经代理把请求发到 http://unlock/,并在 x-qp-url 头里指明目标。

http://unlock.quantumproxies.io:9000, then http://unlock/

curl --proxy http://unlock.quantumproxies.io:9000 \
  --proxy-user "USER:PASS" \
  -H "x-qp-url: https://example.com/" \
  http://unlock/

浏览器操作、批量、缓存和现成的客户端

抓取前的浏览器操作

在 REST 调用中,你可以列出浏览器在抓取页面之前要做的事:点击、输入、滚动、等待。

最多 100 个 URL 的批量

一次批量最多发送 100 个 URL,完成后会收到 webhook。

有效期由你决定的缓存

页面在缓存中保留多久由你设置。在缓存有效期内,再次请求同一页面不产生费用。

两个可下载的客户端和一张迁移表

文档中有两个单文件客户端,分别用于 Node.js 和 Python,还有一张迁移表,供为其他 unlocker 编写的代码使用。

打开 Web Unlocker 文档

视频:仪表盘中的 Web Unlocker

带你浏览仪表盘的 Web Unlocker 页面:购买 GB、选择接入方式并发送第一个请求。英文,附字幕。

Web Unlocker 的工作方式

1 · 你的请求以浏览器的身份发出

客户端发送的身份头(User-Agent、Accept、Sec-Fetch-*)被替换为与真实浏览器 TLS 握手一致的一组。Authorization、cookie、content type 和自定义头原样通过。

2 · 被拒后换一个新的住宅出口重试

遇到挑战或 403 就在新出口以另一族指纹重试,最多三次 TLS 尝试,全部在同一个时间预算内:默认 60 秒,用 timeout_ms 最多 120 秒。

3 · 仍被拦?真实浏览器接手

当 TLS 层持续被挑战时,真实浏览器打开页面并应答 JavaScript 挑战。使用粘性会话时,取得的 clearance 会被保留,并在你对该站点的后续请求中重放。

Web Unlocker API 面向普通 HTTP 客户端拿不到的页面:反爬虫层在读到任何一个头之前就先给 TLS 握手和 HTTP/2 设置打分的那些页面。fetch 或 requests 调用无论设置什么 User-Agent,都带着运行时的签名。unlocker 在传输层修正它,源站拒绝时换新的住宅出口重试,需要 JavaScript 时打开真实浏览器,并交回源站的原始响应:任意方法、你自己的头和正文、固定在同一出口 IP 上的登录或购物车。

web unlocker 能做而代理做不到的事

轮换住宅代理改变的是请求从哪里来,改变不了请求长什么样:TLS 握手、HTTP/2 帧顺序和头集合仍然在说 Python 或 Node,而现代反爬墙打分的正是这些。web unlocker 把请求改写成真实浏览器会发出的样子,源站拒绝时换另一个指纹重试,源站要求 JavaScript 时切换到真实浏览器。你保留代理接口,unlocker 加上判断力。

真实浏览器的 TLS 指纹

每次尝试都以真实浏览器的 TLS 配置文件发出,身份头也改写得与之匹配,因为带着 Firefox User-Agent 的 Chrome 握手比两者单独任何一个都更显眼。站点期待特定配置时可以固定(Chrome、Firefox、Safari、Safari iOS、Edge、Brave,REST 端点还有移动版 Safari);不固定时重试在 Chrome、Firefox 和 Brave 之间轮换,烧掉一个握手的站点会遇到另一个。Authorization、Cookie、Content-Type 和自定义 X-* 头原样转发,重放抓取到的 App 请求时 keepHeaders 会原封不动发送你的头。

模式、格式与时间预算

默认的 mode auto 逐级爬梯:先走 TLS 层,被拒就换新出口,站点持续挑战时请出浏览器。mode tls 从不打开浏览器;mode browser 一开始就在浏览器里。format 以 html、markdown 或 text 返回正文,render png 则截图。整次调用含重试与渲染都落在一个预算内:默认 60 秒,用 timeout_ms 最多 120 秒;max_bytes 给单次调用可移动的流量封顶。响应会说明哪一层获胜(tier_served),逐条列出每次尝试的层级、配置、出口国家、结果、毫秒和字节(attempt_log),并按你所在层级的单价给出字节和美元费用。

拦截会被如实报告,绝不伪装成成功

每个响应在到达你之前都会被分类。分类器读取反爬系统在页面上留下的签名,同时指出系统(Cloudflare、DataDome、Akamai、PerimeterX 等)和拦截类别:js_challenge、captcha、access_denied、rate_limited、fingerprint、geo 或 timeout。在 REST 端点,仍被拦截的页面以 200 返回并把 blocked 置为 true、附上页面本身供检查;设置了 fail_on_block 则返回 424 target_blocked。在正向代理上,源站状态连同 x-qp-unlocker-blocked 头一起转发。交互式验证码不会被破解:它们以 captcha 标记返回。

会话、地理定向与按站点记忆

传入国家,以及网络覆盖的州或城市,就从该市场出口。留空时出口国家先取自目标的顶级域名,再取自你账户所在国家,美国只是最后的兜底。粘性会话 id 在 3 到 1,440 分钟内让多次调用保持同一出口 IP,登录、购物车或分页列表因此停留在同一身份上。unlocker 还会按域名记住最近哪一层和哪一族指纹通过了,下次从那里开始,并把站点刚拒绝的出口隔离,不再向该站点提供。

Premium 与 Mobile 层级,按 GB 预付

Web Unlocker 运行在两个出口池上:住宅 IP 的 Premium 和 4G/5G 运营商 IP 的 Mobile,各自拥有独立的预付 GB 余额,在仪表盘从 1 GB 起用银行卡、PayPal、加密货币或账户余额购买。用量按移动的字节计量,含重试与浏览器渲染;余额用尽时返回带充值链接的 402,而不是静默失败。各层级的每 GB 价格显示在仪表盘的 Web Unlocker 页面购买按钮旁。没有订阅,没有最短期限。

一份错误目录,并告诉你下一步

REST 与代理共用一份目录。每个错误都给出代码,并说明是否值得重试、是否已计费以及下一步怎么做:带购买链接的 no_credit(402)、带拦截类别和尝试日志的 target_blocked(424)、rate_limited(429,按量付费为每分钟 20 次、并发 10 个,带 Retry-After)、render_failed 与 upstream_failed(503)、timeout_ms 耗尽时的 timeout(504)。带有真实页面的 403 或 429 不算拦截,会原样返回。

常见问题

什么是 web unlocker?

web unlocker 是把一个普通 HTTP 请求像真实浏览器那样送达反爬虫保护站点的服务:从住宅 IP 出发,带浏览器 TLS 指纹和匹配的头,被拒时换新 IP 重试,遇 JavaScript 挑战时打开真实浏览器。它返回源站的原始响应,附带尝试次数和费用。

web unlocker 和住宅代理有什么不同?

代理只改变源 IP。你客户端的 TLS 握手和头集合仍会暴露自动化工具,而这正是现代反爬墙打分的依据。unlocker 把请求改写成浏览器的样子,被拒时换另一个指纹重试,需要 JavaScript 时升级到真实浏览器。如果你的客户端本就能通过,住宅代理才是正确的选择。

Web Unlocker 能破解验证码吗?

它用真实浏览器应答 JavaScript 挑战,并在粘性会话内保留 clearance cookie 供对该站点的后续请求使用。需要真人的交互式验证码,如 hCaptcha、reCAPTCHA 或点击勾选框,不会被破解:响应以 captcha 标记返回并注明厂商,移动的流量按 GB 计费,除非仪表盘另有说明。

Web Unlocker 有免费试用吗?

创建账户免费,一分钟即可,仪表盘的 Web Unlocker 页面有一个 Test a URL 框,显示一次调用的状态、尝试次数、耗时和费用。unlocker 的 GB 按层级从 1 GB 起预付,前几次测试调用的费用写在框旁边。免费住宅试用针对普通住宅代理,不包括 unlocker。

可以用 Python、Node.js、PHP、Go 或 curl 调用吗?

可以。REST 端点是任何语言都会的普通 HTTPS POST;上方标签页里的 curl、Python、Node.js、PHP 和 Go 片段与仪表盘用你的凭据填充的完全相同。Scrapy、Playwright 或任何带代理设置的客户端使用 CONNECT 代理,无法安装证书的环境则用直连模式。

Web Unlocker 是代理还是 API?

两者皆是,同一个账户、同一份余额。能改代码就用 REST:JSON 进、JSON 出,无需证书。爬虫已会说代理就用代理:主机、端口、用户名和密码,CA 装一次。想要不装证书的代理就用直连模式:把请求发到 http://unlock/,并在 x-qp-url 里指明目标。

如果所有尝试后页面仍被拦截会怎样,我要付费吗?

它绝不会被当作静默成功返回。REST 端点把 blocked 置为 true,并在页面旁注明拦截类别和厂商;设置了 fail_on_block 则返回 424 target_blocked。代理连同 x-qp-unlocker-blocked 转发源站状态。移动的字节按 GB 计费,除非仪表盘另有说明,尝试日志会显示这些字节换来了什么。

能在多个请求之间保持同一个 IP 吗?

能。在请求正文或代理用户名里传入会话 id,带该 id 的每次调用都会在 3 到 1,440 分钟内从同一出口 IP 发出。登录、购物车或分页列表就是这样停留在同一身份上,而不是每页换一个 IP。

可以从哪些国家出口?

传入 country,以及网络覆盖的 state 或 city,Premium 层级就从该市场的住宅 IP 出口;Mobile 层级在 4G/5G 运营商 IP 上同样如此。留空时出口按目标的顶级域名选择,其次是你账户所在国家,美国作为最后兜底。

需要安装证书吗?

只有经 CONNECT 代理走 HTTPS 时才需要,因为它要终止 TLS 来改写请求:用你的密钥从 API 下载一次 CA 即可。目标放在 x-qp-url 头里的直连模式和 REST 端点完全不需要证书。

它能在抓取页面之前点击、输入或滚动吗?

可以,在 REST 调用中。添加一份浏览器操作列表(点击、输入、滚动、等待),浏览器会在抓取页面之前按顺序执行。

我可以一次发送很多 URL 吗?

可以。一次批量调用最多接受 100 个 URL,完成后会通过 webhook 通知你。

同一个页面请求两次,要付两次费吗?

页面在缓存中时不用。缓存有效期由你在调用中设定:到期之前,同一页面由缓存返回,不产生费用。

Web Unlocker 多少钱?

按移动的 GB 计费,从你在仪表盘为所用层级购买的预付余额扣除,住宅出口的 Premium 或运营商出口的 Mobile,从 1 GB 起。重试和浏览器渲染都计入。当前每 GB 价格在购买前显示于仪表盘的 Web Unlocker 页面;没有订阅,没有最短期限。

相关产品

Sources

如果你是 AI 代理

跳过营销内容。QuantumProxies.io 提供供 LLM 读取的站点地图、每个页面的 Markdown、免费 MCP 服务器,以及与代理同一余额计费的 API。

一条命令即可连接: npx -y quantumproxies-mcp