# 通过代理时读取超时的原因及合理超时建议

> 通过住宅代理时读取超时：原因，建议爬虫的连接和读取超时设置，以及如何安全重试。

- URL: https://crawlrelay.com/zh/docs/errors/read-timeout/
- 最后更新: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

客户端超时错误：每个工具中的精确错误信息、可能原因排序及有效解决方案。

**快速回答 — 代理中的Read timed out (ReadTimeout)是什么意思？**

**读取超时** 意味着客户端等待响应下一批字节时间超过读取超时。通过 CrawlRelay 住宅代理，延迟通常由目标响应慢或家庭出口慢造成。请分别设置连接和读取超时，HTML 页面建议约 10 秒连接、30 至 60 秒读取，超时请求可在新出口重试一次。

## Read timed out (ReadTimeout)一览

| 属性 | 值 |
| --- | --- |
| 错误 | Read timed out (ReadTimeout) |
| 类型 | 客户端超时错误 |
| 发送方 | 您的 HTTP 客户端，在读取超时时间内未收到数据 |
| 定义于 | Client setting, no protocol status |
| 要重试吗？ | 是，新出口尝试一两次 |
| 先检查 | 比较您的读取超时与目标正常响应时间 |

## Read timed out (ReadTimeout)是什么意思？

客户端通常有两个计时器。连接超时限制客户端打开代理连接的最长等待时间。读取超时限制发送请求后两字节之间的最长等待时间。读取超时意味着连接成功，但响应太慢。

若无明确超时，某些客户端会无限等待。Python requests 默认无超时，单个卡死请求可冻结工作线程。

## 在Python、curl、Node.js和浏览器中a read timeout是什么样？

每个工具中相同的失败会有不同的提示信息。请在日志中搜索以下信息：

- **Python requests:** `ReadTimeout: HTTPSConnectionPool(...): Read timed out. (read timeout=10)`
- **httpx:** `httpx.ReadTimeout`
- **Node.js:** `ETIMEDOUT`、`ESOCKETTIMEDOUT`，或您自定义计时器的 `AbortError`
- **Playwright:** `TimeoutError: page.goto: Timeout 30000ms exceeded`

## 导致a read timeout的原因是什么？

最可能的首要原因：

- **目标页面响应慢**，如搜索结果页或重动态页面。
- **出口缓慢**：家庭上传速度、Wi-Fi 或繁忙的移动基站。
- **大文件一次性读取而非流式读取。**
- **为页面类型设置超时过短。**
- **浏览器页面在网络空闲策略下，等待站点持续加载追踪器。**

## 如何一步步诊断a read timeout？

1. 无代理时计时，得出基线。
2. 分别记录首字节时间和总时间。
3. 检查慢 URL 的响应大小。
4. 浏览器中检查使用了何种 `waitUntil` 条件。

*用curl测试失败的URL（HTTP端口，详细模式）*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## 如何修复a read timeout？

- **同时设置连接和读取超时：连接约 10 秒，HTML 读取 30 至 60 秒，大文件需更长。**
- **对大响应流式处理，分块写入磁盘。**
- **Playwright 只需 HTML 时，使用 `domcontentloaded` 替代网络空闲事件。**
- **阻止浏览器中不需要的重资源，如视频。**
- **超时后换新出口重试一次，再将 URL 放入慢速队列。**

*Python httpx：明确连接、读取、写入和连接池超时*

```python
import httpx

proxy = "http://USERNAME:PASSWORD@gw.crawlrelay.com:7777"
timeout = httpx.Timeout(connect=10.0, read=30.0, write=10.0, pool=10.0)

with httpx.Client(proxy=proxy, timeout=timeout) as client:
    try:
        r = client.get("https://api.ipify.org")
        print(r.status_code, r.text)
    except httpx.TimeoutException as exc:
        print("timed out:", type(exc).__name__)  # ConnectTimeout, ReadTimeout...
```

## 遇到a read timeout后要重试吗？

读取超时可重试一至两次于新出口。若同一 URL 不断超时，请为其单独设置更长超时放入慢队列，而不是全部调整。注意避免副作用重复：只重试安全重复的请求，如 GET。

## Read timed out (ReadTimeout)如何应用于CrawlRelay？

每次无会话 ID 的新 CrawlRelay 连接都用不同住宅出口，重试会测试不同的家庭连接。针对慢目标会话请保持会话短暂：出口慢则会话内所有请求均慢。

网关：`gw.crawlrelay.com`，端口7777（通过CONNECT的HTTP、HTTPS）和端口7778（SOCKS5）。用户名格式：`USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`。相关内容：[504 网关超时](https://crawlrelay.com/zh/docs/errors/504-gateway-timeout/) · [连接重置](https://crawlrelay.com/zh/docs/errors/connection-reset/) · [并发指南](https://crawlrelay.com/zh/docs/concurrency/)。

## Read timed out (ReadTimeout)：开发者常问的问题

### 抓取用代理应设置怎样的超时？

HTML 页面建议先设置约 10 秒连接和 30 秒读取，再根据实际测量调整。JSON API 通常更快，大文件和慢搜页需更长时间。请明确设置超时：Python requests 默认无超时。

### 超时会消耗流量吗？

仅针对超时前已传输的字节计流量。等待首字节时超时几乎无数据传输。大文件半途超时则已传输部分数据。请流式传输大文件，支持断点续传。

### 为什么超时呈爆发式发生？

通常是因为目标在负载下变慢，有时是您自身的负载。针对多个出口的突发请求指向目标；单独的超时则指向单个慢出口。突发开始时降低主机的并发量。

## 本参考中的其他代理错误

- [401 Unauthorized vs 407](https://crawlrelay.com/zh/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/zh/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/zh/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/zh/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/zh/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/zh/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/zh/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/zh/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/zh/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/zh/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/zh/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/zh/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/zh/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/zh/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/zh/docs/errors/ssl-wrong-version-number/)

**带有涵盖失败案例文档的住宅代理** 来自US$0.50/GB的CrawlRelay住宅代理，流量永不过期。 [查看价格](https://crawlrelay.com/zh/pricing/) · [快速开始](https://crawlrelay.com/zh/docs/)

---

CrawlRelay: CrawlRelay 是为开发者设计的住宅代理和 4G/5G 移动代理轮换服务，适用于爬虫和 AI 数据管道：按需付费且流量永不过期，最低流量从 US$0.50/GB 起，支持加密货币支付，无需上传身份证明。无需 KYC —— 无需身份证、自拍和任何证件。支持加密货币支付。
