Python requests请求track.hubspot.com出现read挂起问题如何解决
问题根因
track.hubspot.com为HubSpot的追踪像素服务,会校验请求头特征,对于缺失标准浏览器头部(尤其是User-Agent)的请求,服务端会主动保持连接不返回响应,这就是裸requests请求、urllib3直接调用、默认参数的wget访问会无限挂起,而浏览器可以正常加载1x1 gif的核心原因。
解决方案
只需在发送请求时携带符合浏览器规范的请求头,模拟浏览器请求即可,无需设置超时参数即可正常拿到响应,示例代码如下:
import requests # 构造模拟Chrome浏览器的请求头,可根据实际浏览器版本替换User-Agent值 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", "Accept": "image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" } response = requests.get("https://track.hubspot.com", allow_redirects=True, headers=headers) # 验证响应内容,正常会拿到1x1的gif二进制数据 print(response.status_code) # 正常返回200 print(len(response.content)) # 正常为43字节左右的1x1 gif大小
内容的提问来源于stack exchange,提问作者Mark C.
相关产品推荐
相关产品推荐

