如何将requests的会话及Cookie导入Selenium浏览器 及如何反向操作?
1. 将requests.Session的Cookie导入Selenium
实现逻辑
Selenium添加Cookie前必须先访问过一次目标域名的页面,拿到域名上下文才能成功写入,之后直接遍历requests存储的Cookie,转换为Selenium支持的字典格式逐个添加即可。
代码补全(对应你提供的示例代码空缺位置)
driver = webdriver.Chrome() session = requests.session() session.get('https://www.google.com/') # 以下为空缺位置补全代码 # 先让Selenium访问一次目标域名,初始化域名上下文 driver.get('https://www.google.com/') # 遍历requests session的Cookie,逐个添加到Selenium for req_cookie in session.cookies: driver.add_cookie({ "name": req_cookie.name, "value": req_cookie.value, "domain": req_cookie.domain, "path": req_cookie.path, "secure": req_cookie.secure, "expiry": req_cookie.expires }) # 再次访问站点,就会携带同步过来的Cookie driver.get('https://www.google.com/')
2. 将Selenium的Cookie同步到requests.Session
实现逻辑
直接调用Selenium的get_cookies()方法拿到当前域名下所有Cookie,遍历写入requests的session对象即可。
代码示例
# 先让Selenium访问目标站点,拿到有效Cookie(比如手动完成登录操作后) driver.get('https://www.google.com/') # 遍历Selenium的Cookie,添加到requests session for sel_cookie in driver.get_cookies(): session.cookies.set( name=sel_cookie['name'], value=sel_cookie['value'], domain=sel_cookie['domain'], path=sel_cookie['path'] ) # 后续requests发送请求将自动携带同步的Cookie resp = session.get('https://www.google.com/')
注意事项
- 同步前必须保证两个工具操作的是同一主域名下的资源,跨域名Cookie无法生效
- 建议将两个工具的User-Agent设置为一致,避免站点检测到客户端属性不一致导致会话失效
- 特殊场景下需要完整保留Cookie的
httpOnly、secure属性,避免请求被站点拦截
内容的提问来源于stack exchange,提问作者hn_tired
相关产品推荐
相关产品推荐

