如何使用Selenium driver保存的已登录账号身份发送POST请求
Selenium复用已登录身份发送POST请求的实现方法
两种常用的可行实现方案如下:
方案1:直接通过Selenium执行JavaScript发送请求
该方案无需额外提取身份凭证,直接复用当前浏览器上下文的登录态,操作最简便,适合不需要脱离Selenium环境的场景。
- 注意:需保证当前Selenium打开的页面和目标接口属于同一域名,避免跨域拦截。
代码示例:
from selenium import webdriver # 此处为你已经完成登录操作的driver实例 driver = webdriver.Chrome() # 定义请求参数 currency = { "type": "to-bits", "amount": "1", } # 执行JS调用fetch发送POST请求,自动携带当前站点的所有身份凭证 response = driver.execute_script(""" return fetch('替换为你的目标接口地址', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(arguments[0]) }).then(res => res.json()) """, currency) # 输出接口返回结果 print(response)
方案2:导出Selenium Cookie给requests库发送请求
该方案适合需要脱离Selenium环境发送请求的场景,需要提取Selenium中存储的登录态凭证传给requests。
- 注意:如果站点认证信息除Cookie外还存储在localStorage或者需要自定义请求头,需要额外从Selenium中提取对应值添加到requests的请求配置中。
代码示例:
import requests from selenium import webdriver # 此处为你已经完成登录操作的driver实例 driver = webdriver.Chrome() # 1. 提取Selenium中当前站点的所有Cookie cookies = driver.get_cookies() # 2. 初始化requests会话,导入提取到的Cookie req_session = requests.Session() for ck in cookies: req_session.cookies.set(ck['name'], ck['value']) # 定义请求参数 currency = { "type": "to-bits", "amount": "1", } # 3. 发送POST请求 resp = req_session.post( "替换为你的目标接口地址", json = currency ) # 输出接口返回结果 print(resp.json())
内容的提问来源于stack exchange,提问作者peka
相关产品推荐
相关产品推荐

