当前位置: 首页 > news >正文

登录为图片验证时,selenium通过token直接进入页面操作

在 Selenium 中,如果你想在打开浏览器时携带 Token(通常是访问 API 或 Web 服务的认证凭据),你可以通过以下几种方式实现,具体取决于你的应用场景。以下是常见的几种方法:


1. 通过 URL 传递 Token(适用于支持 Token 的 Web 服务)

如果目标网页支持通过 URL 参数传递 Token(例如通过查询参数 ?token=your_token),你可以直接在打开浏览器时构造带有 Token 的 URL。

示例代码(Python):
from selenium import webdrivertoken = "your_token_here"
url = f"https://example.com/dashboard?token={token}"driver = webdriver.Chrome()
driver.get(url)

2. 通过请求头(Headers)携带 Token(适用于需要自定义请求头的场景)

如果网页要求在请求头中携带 Token(例如 Authorization: Bearer your_token),Selenium 本身不支持直接设置请求头,但可以通过以下方法间接实现:

方法一:使用浏览器扩展(如 mitmproxy 或 browsermob-proxy

使用代理工具在请求中添加自定义请求头。这里以 browsermob-proxy 为例:

示例代码(Python):
  1. 安装依赖:
   pip install browsermob-proxy selenium
  1. Python 示例代码:
   from browsermobproxy import Serverfrom selenium import webdriverimport os# 启动 browsermob-proxy 服务器server = Server(path="path_to_browsermob-proxy", options={'port': 8080})server.start()proxy = server.create_proxy()# 添加请求头proxy.new_har("example.com", options={'captureHeaders': True, 'captureContent': True})proxy.add_header("Authorization", "Bearer your_token")# 配置浏览器使用代理chrome_options = webdriver.ChromeOptions()chrome_options.add_argument(f'--proxy-server={proxy.proxy}')driver = webdriver.Chrome(options=chrome_options)driver.get("https://example.com/dashboard")

3. 通过 JavaScript 注入 Token(适用于前端需要手动设置 Token 的场景)

如果 Token 是前端 JavaScript 代码设置的(例如通过 localStorage 或 sessionStorage),你可以通过 Selenium 执行 JavaScript 注入 Token。

示例代码(Python):
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://example.com/dashboard")# 使用 JavaScript 设置 Token
token = "your_token_here"
driver.execute_script(f"localStorage.setItem('token', '{token}');")

4. 使用 Cookie 携带 Token(适用于 Token 存储在 Cookie 中的场景)

如果 Token 是通过 Cookie 传递的,你可以通过 Selenium 设置 Cookie。

示例代码(Python):
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://example.com")# 添加 Cookie
token = "your_token_here"
driver.add_cookie({"name": "token","value": token,"domain": "example.com",  # 替换为目标域名"path": "/"
})# 刷新页面以应用 Cookie
driver.get("https://example.com/dashboard")

5. 通过 WebDriver 的 execute_cdp_cmd 方法设置 Token(适用于支持 CDP 协议的浏览器)

Chrome DevTools Protocol (CDP) 提供了更底层的接口,可以通过 execute_cdp_cmd 设置请求头。

示例代码(Python):
from selenium import webdriveroptions = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)# 使用 CDP 设置请求头
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"Authorization": "Bearer your_token"}
})driver.get("https://example.com/dashboard")
http://www.dtcms.com/a/272662.html

相关文章:

  • Java 导出word 实现饼状图导出--可编辑数据
  • CIEDE2000 色差公式C++及MATLAB实现
  • 【零基础学AI】第35讲:策略梯度方法 - 连续控制任务实战
  • Swift 图论实战:DFS 算法解锁 LeetCode 323 连通分量个数
  • 快速搭建服务器,fetch请求从服务器获取数据
  • ReentrantLock 与 Synchronized 的区别
  • 给MySQL做定时备份,一天3次
  • method_name字段是什么
  • 单片机基础(STM32-DAY2(GPIO))
  • Linux驱动06 --- UDP
  • 飞书AI技术体系
  • web 系统对接飞书三方登录完整步骤实战使用示例
  • 低温冷启动 高温热启动
  • OpenCV 图像进阶处理:特征提取与车牌识别深度解析
  • 醋酸镨:闪亮的稀土宝藏,掀开科技应用新篇章
  • Spring IoC 如何注入一些简单的值(比如配置文件里的字符串、数字)?
  • 【文献阅读】Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data
  • MyBatis 使用教程及插件开发
  • 自动驾驶环境感知:天气数据采集与融合技术实战
  • AI-Sphere-Butler项目语音切换数字人管家形象功能老是开发不成功。
  • Oracle 数据库管理与维护实战指南(用户权限、备份恢复、性能调优)
  • 深度学习与图像处理案例 │ 基于深度学习的自动驾驶小车
  • GitHub上优秀的开源播放器项目介绍及优劣对比
  • 申请注册苹果iOS企业级开发者证书需要公司拥有什么规模条件
  • Nacos的基本功能以及使用Feign进行微服务间的通信
  • 【网络编程】 TCP 协议栈的知识汇总
  • ZW3D 二次开发-创建圆柱体
  • Qt cannot find C:\WINDOWS\TEMP\cctVBBgu: Invalid argument
  • QT5使用cmakelists引入Qt5Xlsx库并使用
  • 达梦数据库不兼容 SQL_NO_CACHE 报错解决方案