Selenium Wire编辑header破解反爬机制和访问限制

一、selenium Wire介绍

  • 介绍
    Selenium Wire扩展了Selenium的Python绑定,使您能够访问浏览器发出的底层请求。您已使用Selenium相同的方式编写代码,但是您获得了额外的api,用于检查请求和响应,并动态地对它们进行更改。(注:意思是这个不仅包含了selenium的功能,还额外增加了新的扩展功能,引用seleniumwire后就不用再引用selenium)

  • 工作原理
      Selenium Wire的工作原理是将浏览器流量重定向到它在后台运行的内部代理服务器。当请求流经代理服务器时,它们被拦截和捕获。捕获请求可能会使事情变慢,但你可以做一些事情来限制被捕获的内容。

二、selenium Wire安装

安装selenium-wire需要先安装mitmproxy

  • 安装mitmproxy
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mitmproxy
  • 安装selenium-wire
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium-wire

三、selenium Wire使用实例

本次实例中访问站点次数过多或频率过快时会弹窗提示并结束自动化测试运行程序,增加等待时长不能解决该问题,与开发沟通后得到解决方案是在header里增加参数键值对test:test则能够忽略限制(不同项目的破解值不一样,仅作样例参考),查找资料决定使用selenium Wire来增加header参数,成功解除访问限制。
在这里插入图片描述

from seleniumwire import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilitieschrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('w3c', False)
caps = DesiredCapabilities.CHROME
# 打开chrome浏览器
# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
# chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])  # 禁止打印日志
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])  # 跟上面只能选一个
# chrome_options.add_argument('--headless')  # 无头模式,打开后后台运行浏览器,不在电脑显示
chrome_options.add_argument('--disable-gpu')  # 上面代码就是为了将Chrome不弹出界面
chrome_options.add_argument('--start-maximized')  # 最大化
chrome_options.add_argument('--incognito')  # 无痕隐身模式
chrome_options.add_argument("disable-cache")  # 禁用缓存
chrome_options.add_argument('disable-infobars')
chrome_options.add_argument('log-level=3')  # INFO = 0 WARNING = 1 LOG_ERROR = 2 LOG_FATAL = 3 default is 0# header新增参数test解除访问拦截
def interceptor(request):request.headers['test'] = 'test'caps['loggingPrefs'] = {'performance': 'ALL'}
driver = webdriver.Chrome(desired_capabilities=caps, options=chrome_options)
driver.request_interceptor = interceptor

四、遇到的问题

首次运行过程中报错ImportError: cannot import name ‘EdgeOptions’,解决方法去webdriver文件里把EdgeOptions这行注释掉
在这里插入图片描述

在这里插入图片描述
参考文档:
selenium-wire简介
Python |Selenium Wire 扩展Selenium的Python绑定,使您能够检查浏览器发出的请求
用Selenium给chrome添加任意请求头信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8482.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity基础 物理系统 刚体组件下的移动.碰撞.触发检测

当在Unity中创建游戏或应用程序时,重力系统是一个非常重要的组成部分。它可以模拟物体受到地球引力的影响,并产生逼真的物理效果。在Unity中,我们可以使用刚体组件和重力向量来控制重力系统。 首先,在Unity中创建一个物体&#xf…

基于Echarts2.X的地图数据可视化指南

目录 前言 一、关于Echarts版本 1、为什么用Echarts2.2.7 2、文件目录说明 二、地图数据可视化 1、新建map.html 2、Echarts图表初始化 3、参数设置 三、源码展示分析 1、初始化阶段 2、timelineOption.js模拟数据 总结 前言 在前面的博文(数据会说话-从我国…

(学习日记)2023.04.29

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

1.7 完善自定位ShellCode后门

在之前的文章中,我们实现了一个正向的匿名管道ShellCode后门,为了保证文章的简洁易懂并没有增加针对调用函数的动态定位功能,此类方法在更换系统后则由于地址变化导致我们的后门无法正常使用,接下来将实现通过PEB获取GetProcAddre…

github上传超过100M的大文件

当上传的工程中有超过100M的文件时,直接上传github会产生如下报错: remote: error: File retinaface-R50/R50-0000.params is 112.54 MB; this exceeds GitHubs file size limit of 100.00 MB! [remote rejected] master -> master (pre-receive ho…

2023年07月数据库流行度最新排名

点击查看最新数据库流行度最新排名(每月更新) 2023年07月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多,这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

软件设计模式与体系结构-设计模式-结构型软件设计模式-桥接模式

四、桥接模式 桥接模式(Bridge Pattern)是一种软件设计模式,它用于将抽象部分与其具体实现部分解耦,使它们可以独立地变化。桥接模式的核心思想是将一个系统分为多个维度,并通过桥接连接这些维度,从而实现…

登录远程Linux桌面

远程桌面连接主要使用两种协议,一种是Windows上RDP协议,第二种是VNC协议,从使用效果来看,vnc更优秀。 一、VNC 使用x11vnc 1.安装x11vnc sudo apt install x11vnc 2.启动x11vnc x11vnc -passwd orangepi -display :0 -forever…

linux 时间同步 chrony

Chrony介绍 chrony 是基于NPT协议的实现时间同步服务,它既可以当做服务端,也可以充当客户端。chrony是ntp的代替品,能更精确的时间和更快的速度同步时钟,chrony 占用系统资源少,只有被唤起时才占用少部分CPU&#xff0…

云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)

前言: kubesphere的离线化部署指的是通过自己搭建的harbor私有仓库拉取镜像,完全不依赖于外部网络的方式部署。 我的kubernetes集群是一个单master节点,双工作节点,总计三个节点的版本为1.22.16的集群。 该集群只是初始化完成了…

详解DNS协议!

前言 想要不同的计算机之间进行通信,是需要知道对方的IP的,可是为什么我们平时很少用到ip,而是用到域名这种东西呢? 其实主要是为了方便阅读,让我们记住一串的ip还不如记域名来的方便。 当我们访问域名的时候&#xf…

C 学习笔记1-基础语法合集

C 基础语法 文章目录 C 基础语法注意 C 其他知识点编译过程编译器数据模型区别32/64位机器中,各数据类型所占位数assert() 断言(宏)用法总结与注意事项 C 函数printf()putchar()sizeof() C 位域位域声明位域的定义和位域变量的说明位域的使用…