如何通过指定谷歌Chrome浏览器发起URL请求调用本地Cookie等登录数据
解决方案
可行性说明
可以实现。你当前使用的requests是独立的HTTP客户端,和Chrome的存储沙箱相互隔离,默认不会读取Chrome中保存的Cookie、登录凭证等数据,因此无法直接复用Chrome的已登录状态。你可以通过以下两种常用方案实现需求:
方案1:Selenium接管本地调试模式Chrome(最推荐)
该方案可以完全复用Chrome已有的登录状态、Cookie、插件配置,不需要手动处理加密Cookie,兼容性最高,操作步骤如下:
- 关闭所有正在运行的Chrome进程
- 命令行执行以下命令启动带调试端口的Chrome(也可以直接修改Chrome快捷方式的启动参数,在目标路径末尾加
--remote-debugging-port=9222):
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
- 在弹出的Chrome窗口中提前登录好你的Gmail账号
- 安装依赖:
pip install selenium webdriver-manager
- 运行代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup chrome_options = Options() # 连接本地调试模式的Chrome chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") # 指定你本地的Chrome安装路径 chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe" driver = webdriver.Chrome(options=chrome_options) driver.get("https://gmail.com") # 获取页面源码交给BeautifulSoup处理 page_source = driver.page_source soup = BeautifulSoup(page_source, "lxml") print(soup) # 不需要时可调用driver.quit()关闭浏览器
方案2:读取本地Chrome加密Cookie注入requests
如果不需要可视化运行浏览器,也可以读取Chrome本地存储的加密Cookie文件,解密后注入到requests的请求头中。但该方案需要处理Chrome的Cookie加密逻辑(Windows下采用DPAPI加密),Chrome版本更新可能会修改加密规则导致代码失效,稳定性低于方案1。
内容的提问来源于stack exchange,提问作者PythonCodexR
相关产品推荐
相关产品推荐

