快速回答
代理中的504 Gateway Timeout是什么意思?
504网关超时 表示网关(代理或网站CDN)等待后端服务器响应超时放弃。通过CrawlRelay住宅代理,慢链路通常是目标或出口家用连接。新出口重试一次,保持请求轻量,自行设定客户端超时,让慢请求按你控制时限失败。
504 Gateway Timeout一览
| 错误 | 504 Gateway Timeout |
|---|---|
| 类型 | HTTP 状态码(5xx,服务器错误) |
| 发送方 | 代理网关或目标前方的CDN |
| 定义于 | RFC 9110, section 15.6.5 |
| 要重试吗? | 是,新出口尝试一两次 |
| 先检查 | 无代理时测同一请求响应时间 |
504 Gateway Timeout是什么意思?
RFC 9110定义504为网关未及时收到上游服务器响应。502是错误响应,504是无响应超时。
住宅代理多一跳:流量先到网关,再到家用连接,最后到网站。每跳增加延迟,慢的决定整体耗时。
在Python、curl、Node.js和浏览器中a 504是什么样?
每个工具中相同的失败会有不同的提示信息。请在日志中搜索以下信息:
- Python requests:
status_code == 504,HTTPS目标有时为Tunnel connection failed: 504 Gateway Timeout - curl:
curl: (56) CONNECT tunnel failed, response 504 - Scrapy: 默认重试(504包含于
RETRY_HTTP_CODES) - CDN托管站点: CDN发出的504错误页
导致a 504的原因是什么?
最可能的首要原因:
- 目标响应慢,比如需要几秒构建的搜索页。
- 出口慢,如弱家宽或拥堵移动网络。
- 响应内容大,超过网关等待极限。
- 站点源服务器超时,CDN再回504。
如何一步步诊断a 504?
- 无代理测试请求响应时间,若家里也慢说明目标慢。
- 新出口重试并比较时间。
- 检查响应大小:5MB页面问题与50KB不同。
- 看响应体确定是CDN还是代理返回的错误页。
# 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 504?
- 设定显式超时:连接约10秒、读取30到60秒适合普通页面。
- 新出口重试一两次。
- 减少请求量:只需HTML或JSON时跳过图片和媒体。
- 安排重页面在目标国非高峰时间访问。
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 504后要重试吗?
在一个新的出口上,遇到504错误时尝试重试一两次,重试间隔较短。如果同一URL在多个出口都超时,说明目标响应慢或服务器过载:降低该主机的请求频率或稍后再试。提高客户端超时只在网关超时不是瓶颈时有效。
504 Gateway Timeout如何应用于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}。相关内容:502 Bad Gateway · Read timed out · 503 Service Unavailable。
504 Gateway Timeout:开发者常问的问题
502和504有什么区别?
两者都是来自同一个网关。502表示后端服务器返回了无效响应或断开了连接。504表示没有及时返回响应。对住宅代理来说,502通常指出口断开,504则表示目标响应慢或家庭连接慢。
我能提高代理的超时时间吗?
您控制客户端的超时设置,而非网关的内部超时。请明确设置连接及读取超时时间,使慢请求能按预期失败并重试新出口,同时保持页面轻量。如果目标需要很长时间响应,请改请求其API或更轻量页面。
移动代理比住宅代理慢吗?
移动代理可能较慢,因为其出口与其他用户共用移动信号,其速度随信号强度和负载波动。针对需要的目标使用移动IP,其它场景用住宅IP批量抓取。使用前测量每种出口的响应时间。
本参考中的其他代理错误
HTTP 状态码
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
浏览器和客户端错误
连接和 TLS 错误
带有涵盖失败案例文档的住宅代理
来自US$0.50/GB的CrawlRelay住宅代理,流量永不过期。