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

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

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

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

- **不需要代理：**docs.python.org、books.toscrape.com、Hacker News、Wikipedia 和 GitHub 从数据中心服务器的普通请求中响应。
- **住宅代理足够：** Zillow 和 Leboncoin 阻止了数据中心服务器，但通过普通住宅代理提供了真实页面。
- **只有 unlocker 通过：** Indeed、Glassdoor、Walmart 和 Best Buy 拒绝了普通客户端，并通过 unlocker 返回了页面。

## 我们的测试方法

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

## 每一层解决的问题

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

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

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

![三种客户端分别面对三道反机器人墙（IP 信誉、TLS 指纹和 JavaScript 挑战）的实测结果：普通数据中心请求一道也过不了，住宅代理能通过第一道，而 Web Unlocker 通过轮换浏览器指纹并升级到无头浏览器，三道全部通过。](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1790752444/blog/generated/qp-unl-g2-diag1.png)
*住宅代理清除了第一道墙。解锁器清除了所有三道墙。*

## 不需要任何代理的网站

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

| 网站 | 普通，数据中心服务器 | 普通，住宅代理 | Web Unlocker |
| --- | --- | --- | --- |
| docs.python.org | 200 | 200 | 200, 1.6 s |
| books.toscrape.com | 200 | 200 | 200, 1.9 s |
| news.ycombinator.com | 200 | 200 | 200, 4.1 s |
| en.wikipedia.org | 200 | 200 | 200, 1.9 s |
| github.com（存储库页面） | 200 | 200 | 200, 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](https://quantumproxies.io/web-unlocker/residential)

## 移动层的适用场景

移动运营商将许多手机放在每个公共 IP 后面（运营商级 NAT），因此阻止运营商地址的网站有可能阻止真实客户。这就是为什么运营商 IP 往往比住宅范围更受信任的原因。我们在 [为什么移动代理受信任：CGNAT](https://quantumproxies.io/blog/cgnat-why-mobile-proxies-trusted) 中解释了这一机制。

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

## Python 中的成本意识升级梯子

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

```python
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 和移动层级，2026年9月29日测试中的网站按首次返回页面的那一级排列：Wikipedia 和 GitHub 用普通请求即可，Zillow 和 Leboncoin 需要住宅代理，Indeed、Glassdoor 和 Best Buy 需要 Web Unlocker。](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1790750868/blog/generated/qp-unl-g2-diag2.png)
*只爬到网站强迫你爬的程度。*

## 如何决定，五个问题

1. 您的服务器的普通请求是否返回真实页面？那么您不需要任何一个。停在那里。
2. 从数据中心 IP 失败但从住宅 IP 工作吗？购买 [住宅代理](https://quantumproxies.io/residential-proxies) 并保留您自己的客户端。
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 层](https://quantumproxies.io/web-unlocker)

拒绝住宅范围的目标？查看 [Web Unlocker 在移动出口](https://quantumproxies.io/web-unlocker/mobile)。
