You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合Python的requests与Selenium实现登录并共享Cookie

解决Selenium与requests共享登录Cookie的方案

核心思路

用Selenium完成需要JS交互的登录流程,提取登录后的会话Cookie,再将其转换为requests可识别的格式,后续用requests带着这些Cookie请求目标页面,实现会话共享。

具体步骤与代码示例

1. 用Selenium完成登录并提取Cookie

启动浏览器,模拟用户操作完成登录(包括点击JS渲染的按钮),再获取当前会话的Cookie:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 初始化Chrome浏览器(需提前配置ChromeDriver)
driver = webdriver.Chrome()
driver.get("你的登录页面URL")

# 模拟输入账号密码(根据实际页面元素调整选择器)
driver.find_element(By.ID, "username").send_keys("你的账号")
driver.find_element(By.ID, "password").send_keys("你的密码")
# 点击JS实现的下一步按钮
driver.find_element(By.CSS_SELECTOR, "button.next-btn").click()

# 等待登录完成,确保Cookie已生成
time.sleep(3)

# 提取当前会话的所有Cookie
selenium_cookies = driver.get_cookies()

# 关闭浏览器(后续无需Selenium操作时可执行)
driver.quit()

2. 将Selenium Cookie转换为requests可用格式

requests支持两种Cookie使用方式,这里推荐用RequestsCookieJar,更贴合浏览器Cookie逻辑:

import requests

# 初始化CookieJar对象
cookie_jar = requests.cookies.RequestsCookieJar()

# 逐个转换Selenium的Cookie并添加到Jar中
for cookie in selenium_cookies:
    cookie_jar.set(
        name=cookie['name'],
        value=cookie['value'],
        domain=cookie.get('domain'),
        path=cookie.get('path')
    )

3. 使用requests带着Cookie请求页面

现在可以用requests发起请求,直接复用Selenium的登录会话:

# 请求需要登录权限的目标页面
response = requests.get("目标页面URL", cookies=cookie_jar)

# 验证登录状态(比如检查响应内容是否包含登录后专属内容)
print(response.text)

注意事项

  • 确保Selenium的登录操作完全模拟用户行为,比如等待页面加载、处理验证码(若有验证码,需额外用识别工具或手动处理)。
  • 部分网站会校验User-Agent,建议requests请求时使用和Selenium相同的User-Agent:
    # 在Selenium关闭前获取User-Agent
    user_agent = driver.execute_script("return navigator.userAgent;")
    # 请求时添加headers
    headers = {"User-Agent": user_agent}
    response = requests.get("目标页面URL", cookies=cookie_jar, headers=headers)
    
  • 带有HttpOnly标记的Cookie,Selenium仍能正常提取,requests也可直接使用,无需额外处理。

内容的提问来源于stack exchange,提问作者Freddy Go

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:27:37