如何用Python的Selenium获取DevTools网络Headers中的Cookie数据?
一、用Python Selenium获取Network Headers信息
你之前的代码只拿到了performance日志,但没做解析。要拿到Network里的Cookie,得先开启Chrome的性能日志收集,再从日志里过滤出网络请求/响应事件,提取对应头里的Cookie。
完整代码示例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import json url = "http://url.com" # 配置Chrome,开启性能日志收集 chrome_options = Options() chrome_options.set_capability('goog:loggingPrefs', {'performance': 'ALL'}) driver = webdriver.Chrome(options=chrome_options) driver.get(url) # 获取性能日志并解析 logs = driver.get_log("performance") for log in logs: log_msg = json.loads(log['message'])['message'] # 提取请求头里的Cookie(对应Network.requestWillBeSent事件) if log_msg['method'] == 'Network.requestWillBeSent': req_headers = log_msg['params']['request']['headers'] if 'Cookie' in req_headers: print("请求Cookie:", req_headers['Cookie']) # 提取响应头里的Set-Cookie(对应Network.responseReceived事件) elif log_msg['method'] == 'Network.responseReceived': res_headers = log_msg['params']['response']['headers'] if 'Set-Cookie' in res_headers: print("响应Set-Cookie:", res_headers['Set-Cookie']) driver.quit()
注意:别用固定的time.sleep,换成Selenium的显式等待(比如等待页面某个元素加载完成),能更稳定地拿到完整日志。
二、比Selenium更优的Python实现方法
Selenium要启动浏览器,资源占用大、速度慢,以下两种方法更高效:
1. requests库(无复杂JS渲染场景)
如果目标网站不需要JS渲染页面,直接用requests配合Session就能自动管理Cookie,轻量又快速。
代码示例:
import requests url = "http://url.com" # 创建Session,自动保存和携带Cookie session = requests.Session() # 发送请求 response = session.get(url) # 查看响应返回的Cookie print("响应Cookie:", dict(response.cookies)) # 后续请求直接用session发送,会自动带上Cookie # response_next = session.get("http://url.com/other-page")
2. curl-cffi(应对反爬场景)
如果网站有反爬机制(比如检测浏览器指纹),requests容易被识别,用curl-cffi可以模拟真实浏览器的请求指纹,同时支持Cookie管理,性能比Selenium好太多。
代码示例:
from curl_cffi import requests url = "http://url.com" session = requests.Session() # 模拟Chrome 110的请求指纹 response = session.get(url, impersonate="chrome110") # 获取Cookie print("响应Cookie:", dict(response.cookies))
内容的提问来源于stack exchange,提问作者ahhu
相关产品推荐
相关产品推荐

