无需 KYC —— 无需身份证、自拍、文件证明。支持加密货币支付:BTC, USDT, USDC, ETH, SOL, LTC
语言: 简体中文
开始使用

代理错误参考 · 连接和 TLS 错误

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

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

最后更新:

快速回答

代理中的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端口,详细模式)
# 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:[email protected]: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:明确连接、读取、写入和连接池超时
import httpx

proxy = "http://USERNAME:[email protected]: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 网关超时 · 连接重置 · 并发指南。

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

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

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

超时会消耗流量吗?

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

为什么超时呈爆发式发生?

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

本参考中的其他代理错误

HTTP 状态码

浏览器和客户端错误

连接和 TLS 错误

带有涵盖失败案例文档的住宅代理

来自US$0.50/GB的CrawlRelay住宅代理,流量永不过期。

从 US$0.50/GB 开始 · 无需 KYC

开始使用