如何将Selenium生成的已认证会话传递给Python requests并解决报错
方案可行性判定
你使用的「Selenium完成认证后提取Cookie传递给requests发起请求」的方案完全可行,是行业内常用的绕开复杂登录校验、人机验证的标准实现方案,你的核心操作逻辑没有错误。
WinError 10060 报错原因排查
你遇到的Failed to establish a new connection: [WinError 10060]是Windows系统级的连接超时报错,和Cookie传递逻辑无关,可按以下优先级排查问题:
- 基础网络连通性校验:先确认运行脚本的设备可以正常访问目标站点,可通过手动在浏览器访问目标接口地址、ping目标域名、用Postman调用同接口的方式,排除DNS解析失败、站点服务不可用、客户端IP被站点封禁的问题。
- 代理配置一致性校验:如果Selenium启动时配置了代理(比如跨境代理、公司内网代理),但requests没有同步配置相同代理,就会出现连接超时。可将Selenium使用的代理同步配置到requests请求中:
# 替换为你实际使用的代理地址 proxies = { "http": "http://127.0.0.1:7890", "https": "http://127.0.0.1:7890" } r = requests.get(url, allow_redirects=True, cookies=cookieDict, proxies=proxies)
- 请求头校验字段缺失:部分站点会校验
User-Agent、Referer等请求头字段,requests默认请求头和浏览器差异过大时可能被站点拦截,可同步Selenium的User-Agent到requests请求中:
headers = { "User-Agent": driver.execute_script("return navigator.userAgent") } r = requests.get(url, allow_redirects=True, cookies=cookieDict, headers=headers)
- 域名匹配校验:确认你调用的接口域名和Selenium登录的站点域名一致,否则Selenium提取的Cookie不会被接口接受,该问题通常返回401/403状态码,仅作为次要排查项。
内容的提问来源于stack exchange,提问作者dan_0
相关产品推荐
相关产品推荐

