Web Unlocker 与住宅代理与移动代理:何时需要哪种

我们从数据中心服务器、通过普通住宅代理和通过网络解锁器获取了相同的URL。有些网站不需要任何东西,有些只需要一个住宅IP,有些只为解锁器打开。以下是每一层修复的内容,以及移动层的适用范围。

住宅代理更改请求的来源。web unlocker 还会更改请求的外观:它在真实浏览器 TLS 指纹下发送请求,在新 IP 上重试,并在出现 JavaScript 挑战时运行无头浏览器。只有在干净的住宅 IP 仍被阻止时,您才需要 unlocker。否则,代理就足够了。

这就是理论。为了验证这一点,我们在2026年9月29日用三种方式获取了相同的URL,并按站点保存了结果。有些页面完全不需要任何东西,有些只需要一个住宅IP,有些则只为解锁器打开。下表显示了哪个是哪个。

我们的测试方法

每个 URL 在 2026 年 9 月 29 日以三种方式获取。首先,从法兰克福的数据中心服务器使用 Chrome User-Agent 进行普通 curl 请求。其次,通过 QuantumProxies.io 住宅代理使用美国出口(Leboncoin 使用法国出口)进行相同的普通 curl 请求。第三,通过 Web Unlocker 转发代理在住宅层进行请求,使用相同的出口国家。状态是客户端看到的最终 HTTP 状态。时间是一个 unlocker 请求的墙钟时间。

每一层解决的问题

现代的机器人墙在发送页面之前会检查几个方面,每个工具解决不同的子集。知道您遇到的是哪种墙可以告诉您该购买什么。

墙网站检查的内容普通住宅代理Web Unlocker(住宅)Web Unlocker,移动层
IP 信誉IP 所属的网络及其历史解决数据中心范围的阻止住宅出口,每次重试使用新 IP4G/5G 运营商 IP,由许多手机共享
TLS 和 HTTP 指纹握手、HTTP/2 设置和头部顺序无变化:仍然是您的客户端浏览器指纹,重试时旋转与住宅相同
JavaScript 挑战客户端是否运行页面的脚本并保留其 cookie否升级到无头浏览器与住宅相同

第一行是大多数爬虫开始的地方,也是住宅代理物有所值的地方。托管范围很容易识别,许多网站直接拒绝它们。第二行说明了为什么一个干净的IP有时还不够:curl、Python或Node的TLS握手与Chrome的完全不同,Cloudflare将JA3/JA4指纹记录为识别客户端的一种方式。我们的TLS指纹指南对此进行了深入介绍。第三行需要一个真实的JavaScript引擎。

反机器人墙按顺序堆叠,IP声誉、TLS指纹和JavaScript挑战,住宅代理和网络解锁器的覆盖范围与它们相对比。
住宅代理清除了第一道墙。解锁器清除了所有三道墙。

不需要任何代理的网站

从这里开始,因为这是最便宜的结果。这些页面从数据中心服务器的普通请求中响应。通过其他任何东西发送它们都会增加成本和延迟,而没有任何收益。

网站普通,数据中心服务器普通,住宅代理Web Unlocker
docs.python.org200200200, 1.6 s
books.toscrape.com200200200, 1.9 s
news.ycombinator.com200200200, 4.1 s
en.wikipedia.org200200200, 1.9 s
github.com(存储库页面)200200200, 2.0 s
bbc.com(技术)302 重定向302 重定向200, 1.4 s

BBC 302 是重定向,而不是阻止。我们的测试客户端没有跟随重定向,任何跟随重定向的客户端都会到达页面。

普通住宅代理足够的地方

网站普通,数据中心服务器普通,住宅代理Web Unlocker
Zillow(奥斯汀房源)403,PerimeterX '访问此页面已被拒绝'200,真实房源页面200,1 次尝试,2.7 s
Leboncoin(搜索,法国出口)403,验证码页面200,真实结果页面200,1 次尝试,1.4 s
Amazon(产品页面)200,产品页面200,产品页面200,2 次尝试 + 浏览器,10.2 s

Zillow 和 Leboncoin 是为住宅代理而建的案例。数据中心 IP 被拒绝,而来自家庭 IP 的相同请求得到了页面。unlocker 也有效,但它没有增加您需要的东西。

Amazon 是警示行。此运行中,两个普通客户端都获得了产品页面,但 unlocker 需要两次尝试和一个浏览器才能返回,并花费了 10.2 秒。unlocker 计费每个移动的字节,包括重试和浏览器加载。在不需要的页面上,您为额外的工作付费。这是一天内的一个请求,所以不要将其视为关于 Amazon 的规则。将其视为关于首先测试普通的规则。

只有 web unlocker 通过的地方

网站普通,数据中心服务器普通,住宅代理Web Unlocker
Indeed(工作搜索)403,'安全检查' 页面403,'启用 JavaScript 和 cookies 以继续'200,1 次尝试,2.6 s
Glassdoor(公司评论)403,带验证码的'安全'页面403,'启用 JavaScript 和 cookies 以继续'200,2 次尝试 + 浏览器,17.2 s
Walmart(搜索)307 重定向,无结果页面307 重定向,无结果页面200,1 次尝试,4.8 s
Best Buy(笔记本电脑类别)连接失败,无响应连接失败,无响应200,1 次尝试,6.3 s

仅靠住宅IP在这里没有帮助。Walmart、Best Buy和Indeed在解锁器的第一次TLS尝试中返回了真实页面,而没有使用浏览器。然而,普通的住宅列已经有一个干净的家庭IP,但失败了,显而易见的剩余区别是请求的外观。Glassdoor更进一步:它需要JavaScript,因此解锁器需要两次TLS尝试,然后是一个无头浏览器,这就是为什么花了17.2秒。

Walmart 需要一个单独的说明。我们没有记录其 307 重定向指向哪里。我们只知道普通客户端没有收到结果页面,而 unlocker 收到了。

在住宅出口上使用 Web Unlocker

移动层的适用场景

移动运营商将许多手机放在每个公共 IP 后面(运营商级 NAT),因此阻止运营商地址的网站有可能阻止真实客户。这就是为什么运营商 IP 往往比住宅范围更受信任的原因。我们在 为什么移动代理受信任:CGNAT 中解释了这一机制。

Web Unlocker有一个移动层,运行相同的逻辑(浏览器指纹、重试、浏览器升级、阻止报告)在4G/5G运营商出口。您可以在代理用户名中选择-tier-mobile,或在REST端点上选择"tier": "mobile"。它有自己的预付GB余额。它适用于也拒绝住宅范围的网站,这正是住宅层上的access_denied阻止所暗示的。

Python 中的成本意识升级梯子

表格指向一个规则:只爬到网站强迫您爬的高度。此函数按顺序尝试每个阶梯,并在第一个返回真实页面的地方停止。只有在住宅层报告 access_denied 阻止时才移动到移动层。HEADERS 和 looks_blocked() 是我们 Python 中的 web unlocker API 教程 中的助手。

import os
import requests
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

RESIDENTIAL = os.environ["QP_RESIDENTIAL_PROXY"]   # http://USER:PASS@HOST:PORT from your residential plan
UNLOCK_USER = os.environ["QP_UNLOCK_USER"]         # unlock-XXXXXXXX
UNLOCK_PASS = os.environ["QP_UNLOCK_PASSWORD"]


def unlocker(extra: str = "") -> dict:
    u = f"http://{UNLOCK_USER}-country-us{extra}:{UNLOCK_PASS}@unlock.quantumproxies.io:9000"
    return {"http": u, "https": u}


LADDER = [
    # name,              proxies,                                      verify, timeout
    ("plain",            {},                                           True,   30),
    ("residential",      {"http": RESIDENTIAL, "https": RESIDENTIAL},  True,   30),
    ("unlocker",         unlocker(),                                   False, 120),
    ("unlocker-mobile",  unlocker("-tier-mobile"),                     False, 120),
]


def climb(url: str):
    last = None
    for name, proxies, verify, timeout in LADDER:
        try:
            r = requests.get(url, headers=HEADERS, proxies=proxies, verify=verify, timeout=timeout)
        except requests.RequestException:
            continue                        # no response at all counts as a block
        last = r
        if not name.startswith("unlocker"):
            if not looks_blocked(r):
                return name, r
            continue
        if "x-qp-unlocker-blocked" not in r.headers:
            return name, r
        if r.headers.get("x-qp-block-class") != "access_denied":
            break                           # a different IP will not fix this wall
    return "blocked", last

在生产中,一旦您知道每个域的阶梯,请记住它,这样您就不会在每次请求时为失败的阶梯付费。unlocker 还可能发送一个 x-qp-hint 头部,提供建议,值得在阻止类旁边记录。

抓取器的升级梯子:普通请求,然后是住宅代理,然后是住宅出口上的 web unlocker,然后是移动层,测试中的网站放在它们首次返回页面的阶梯上
只爬到网站强迫你爬的程度。

如何决定,五个问题

  1. 您的服务器的普通请求是否返回真实页面?那么您不需要任何一个。停在那里。
  2. 从数据中心 IP 失败但从住宅 IP 工作吗?购买 住宅代理 并保留您自己的客户端。
  3. 从干净的住宅 IP 仍然失败,出现 403、'Just a moment' 或 'Enable JavaScript' 页面,或连接中断?这是 unlocker 的工作。
  4. unlocker 在住宅出口上报告 access_denied 吗?在承诺流量之前在该网站上测试移动层。

常见问题

我应该购买住宅代理还是使用 web unlocker?

首先测试您的目标。如果来自住宅 IP 的普通请求返回真实页面,如我们 2026 年 9 月 29 日测试中的 Zillow 和 Leboncoin,住宅代理就足够且运行成本更低。如果干净的住宅 IP 仍然得到 403 或 JavaScript 挑战,如 Indeed 和 Glassdoor,您需要 unlocker。

我需要住宅代理,还是任何代理都可以?

这取决于网站。在我们的测试中,Wikipedia、GitHub 和 Hacker News 回应了普通数据中心请求,因此不需要代理。Zillow 和 Leboncoin 拒绝了数据中心 IP 并接受了住宅 IP。数据中心代理共享第一个问题,因为托管范围很容易被网站识别和拒绝。

移动代理是否比住宅代理更可靠用于网络抓取?

运营商IP通过CGNAT由许多手机共享,因此网站更不愿意阻止它们,这有助于对抗IP声誉阻止。它们不会自行更改您的TLS指纹或解决JavaScript挑战。

移动代理是否减少验证码?

它们可以减少由IP声誉触发的验证码,因为运营商地址看起来像许多普通手机用户。

web unlocker 与住宅代理的计费方式有何不同?

两者都按 GB 计费。unlocker 计算它为您移动的每个字节,包括重试、阻止页面和浏览器的页面加载,并使用其自己的每层预付余额:住宅出口和移动运营商出口。当前每 GB 的价格显示在仪表板中。

住宅代理修复请求的来源。网络解锁器还修复了它的外观以及是否可以运行JavaScript。移动层再次更改IP以应对拒绝住宅范围的网站。购买目标接受的最低级别,并让阻止类告诉您何时攀升。

比较 Web Unlocker 层

拒绝住宅范围的目标?查看 Web Unlocker 在移动出口。