Python —— 验证码的处理执行JavaScript语句
1、验证码的处理
1、概述&绕过验证码的方案
很多的网站都在登录页面加入了识别文字,识别图片,拖动拼图的验证码方式来防止爬虫、恶意注册 等,如果是做自动化,需要绕过验证码才能进入下一步操作,那么有4种方案可以解决我们遇到的问题。
2、绕过验证码的方案
1、测试环境去除验证码
可以和开发进行沟通,但是仅限于测试环境哦
2、万能验证码 (推荐)
3、通过添加cookie绕过登录
cookie是一门客户端技术,一般是由服务器生成返回给浏览器客户端来保存的,并且cookie是以 键值对的形式保存在浏览器客户端的,每一个cookie都会有名称,值,过期时间...
如下便是一个cookie存储的位置,包含过期时间等:

1、cookie有很多使用场景,在项目中比较常见的有:
1. 登录记住用户名
2. 记录用户浏览记录
2、Cookie种类
1、会话cookie:保存在内存中,浏览器关闭就清除
2、持久cookie:保存在硬盘中,失效时间到之后就会清除
3、添加cookie解决验证码思路
在登录某个网站,如果勾选【自动登录】,当下次再访问该网站时就自动处于登录状态。这个功能其实 就是将用户信息保存在浏览器的cookie中,当再次访问网站时,浏览器直接使用本地保存的cookie用户 信息进行登录。
使用这个原理,以我们在代码中也可以将用户信息添加到cookie中,再刷新浏览器即可,示例代码:
Cookie cookie = new Cookie("XXX","XXXXXX");
driver.manage().addCookie(cookie);
4、实战
如下2个例子是使用cookie登录成功的案例
from time import sleep
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()
# driver.add_cookie({"name":"BAIDUID_BFESS","value":"3B4FF41DB8055719BCC9FC2F05286F2C:SL=0:NR=10:FG=1"})
# 以下2个都可以登录,都已做修改,需要更换value值为自己的哦
driver.add_cookie({"name":"BDUSS","value":"lqNHpnQXp5T0dNOENIZjFZUmxYMzlDOVhqRHh2QXVKNk1aRDM1VjFrR0xFeDFsRVFBQUFBJCQAAAAAAAAAAAEAAADI2G41wO7o97e8Y2NjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIuG9WSLh——————————————————————"})
# driver.add_cookie({"name":"BDUSS_BFESS","value":"lqNHpnQXp5T0dNOENIZjFZUmxYMzlDOVhqRHh2QXVKNk1aRDM1VjFrR0xFeDFsRVFBQUFBJCQAAAAAAAAAAAEAAADI2G41wO7o97e8Y2NjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-------WSLhvVkd2"})
sleep(3)
driver.refresh()
sleep(3)
driver.close()
from time import sleep
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.ketou--pai.com/#/XXXXe")# 以下可以
driver.add_cookie({"name":"token","value":"239d9d96328871ab2a5190d9e3f38fae042a3fa6aec691a4319b9------------ed30"})
sleep(5)
driver.refresh()
sleep(3)
driver.close()
扩展知识:
1、cookie失效的条件
1、手动退出登录,那么当前的cookie就会失效
2、cookie已经超过有效期
2、为什么会话cookie不能作为登录的鉴权代替用密码和密码完成登录操作
因为会话cookie生命周期存在与一次会话中(浏览器打开网页->关闭),只能作用于当前的浏览器
4、通过OCR识别技术-识别图片的里面关键信息(文字/数字)
参考:http://testingpai.com/article/1677826568289
3、一些扩展知识
2、JavaScript操作(在Python中执行JavaScript语句)
通过在Selenium WebDriver中执行JavaScript可以大大增强Selenium的能力,Selenium对于一些特殊 场景的元素操作无能为力,我们可以借助JavaScript来处理,比如点击、修改元素属性、滚动页面/内嵌 的滚动条等
1、使用JavaScript的场景&使用模板
1、浏览器页面的滚动条(或者懒加载)
懒加载:根据进度条的下拉,再去加载此刻下拉位置的页面数据
整体页面的滚动条移动写法:
document.documentElement.scrollTop=200 //滑动到指定位置,0代表顶端
document.documentElement.scrollHeight //获取页面的滚动高度
备注:以上的语句需要在console中执行才会生效哦,如下:

2、页面内嵌的滚动条
页面内嵌的滚动条移动需要2步,如下:
1、先去定位内嵌滚动条元素
2、再使用scrollTop进行滚动
实战演练:


2、在Python代码中调用JavaScript
1、方式一:不传参
模板语句如下:
driver.execute_script("...");
2、方式二:传参
模板语句如下:
element = driver.find_element(By.ID,"XX")
driver.execute_script("arguments[0]...",element)
相关文章:
Python —— 验证码的处理执行JavaScript语句
1、验证码的处理 1、概述&绕过验证码的方案 很多的网站都在登录页面加入了识别文字,识别图片,拖动拼图的验证码方式来防止爬虫、恶意注册 等,如果是做自动化,需要绕过验证码才能进入下一步操作,那么有4种方案可以…...
MS12_020 3389远程溢出漏洞
1.search ms12_020 搜索ms12_020 2.use auxiliary/scanner/rdp/ms12_020_check 检查是否存在ms12_020漏洞 show options 查看所需参数 set RHOSTS x.x.x.x 设置目标IP地址 run 执行 检测出来有Ms12_020漏洞 3.use auxiliary/dos/windows/rdp/ms12_020_maxchannelids 选择…...
Pytorch ddp切换forward函数 验证ddp是否生效
DDP及其在pytorch中应用 ddp默认调用forward函数,有些模型无法使用forward函数,可以对模型包装一下。 class modelWraper(nn.Module):def __init__(self, model):super().__init__()self.model modeldef forward(self, *args, **kwargs):return self.…...
C++中按引用向函数传递参数
C中按引用向函数传递参数 在参数传递过程中,如果实参与引用参数不匹配,C将生成临时变量。当前,仅当参数为 const 引用时,C才允许这么做,但以前不 是这样。如果引用参数是 const,则编译器将在下面两种情况…...
【Asp.net】Asp.net core中IIS配置注意事项
1、应用地址池设为无托管代码 一、提示:关于IIS上运行ASP.NET Core 站点的“HTTP 500.19”错误 安装dotnet-hosting-3.1.2-win.exe ASP.NET Core 3.1 Runtime (v3.1.2)下载地址: https://download.visualstudio.microsoft.com/download/pr/dd119832-dc4…...
Redis实现附近商户
GEO数据结构的基本用法 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息…...
【COMP305 LEC 3 LEC 4】
LEC 3 A basic abstract model for a biological neuron 1. Weights of connections Neuron gets fired if it has received from the presynaptic neurons 突触前神经元 a summary impulse 脉冲, which is above a certain threshold. Signal from a single synapse突触 ma…...
国密https访问
前言 现在的SSL的加密算法实际上主要是国际算法,包括JDK,Go等语言也仅支持国际算法加密(毕竟是国外开源项目),hash。随着国密算法的普及,比如openssl就支持国密了,还要新版本的Linux内核也开始…...
31二叉树-递归遍历二叉树
目录 LeetCode之路——145. 二叉树的后序遍历 分析 LeetCode之路——94. 二叉树的中序遍历 分析 LeetCode之路——145. 二叉树的后序遍历 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root [1,null,2,3] 输出…...
【【萌新的FPGA学习之管脚设定xdc文件】】
萌新的FPGA学习之管脚设定xdc文件 xdc文件可以自己设置 也可以匹配 我们根据正点原子的流水灯管脚设定 主要讲述一下 各个英文设计是什么意思 Name:工程中顶层端口的名称。 Direction:说明管脚是输入还是输出。 Neg Diff Pair:负差分对&…...
tomcat---动静分离
访问静态和动态页面分开 实现动态的静态页面负载均衡 实验一 准备阶段:三台虚拟机 nginx代理服务器 :20.0.0.40 tomcat1 :20.0.0.50 tomcat2:20.0.0.51 配置关闭虚拟机防火墙和安全机制 systemctl stop firewalld setenf…...
Spring MVC(一)【什么是Spring MVC】
重点 Spring:IOC 和 AOP 。 Spring MVC :Spring MVC 的执行流程。 SSM 框架的整合! Spring 和 Mybatis 我们不建议使用太多注解,Spring MVC 建议全部使用注解开发! 1、MVC 回顾 1.1、什么是MVC MVC是模型(Model)…...
.npmrc 使用详解
配置.npmrc之后需要: 清理项目目录中的 node _modules 目录(package-lock.json,umi)。清理 node cache: npm cache clear --force;{ 此步骤必须,主要是大家的电脑经过多年使用后,npm 配置比较混乱,为了避免或者减少配…...
3D视觉硬件技术
目前市面上主流的3D光学视觉方案有三种: 双目立体视觉法(Stereo Vision,在下文称双目法),结构光法(Structured Light,在下文称结构光)以及飞行时间法(Time of Flight, ToF在下文称T…...
【使用OpenCV进行目标分割与计数的代码实例详解】
文章目录 概要实例一:硬币分割计数实例二:玉米粒分割计数 概要 在当今数字图像处理领域,图像分割技术是一项至关重要的任务。图像分割旨在将图像中的不同目标或区域准确地分开,为计算机视觉、图像识别和机器学习等领域提供了坚实…...
npm ERR! exited with error code: 128
1.遇到的问题 报错信息:npm ERR! E:\tools\Gitt\Git\cmd\git.EXE ls-remote -h -t https://github.com/nhn/raphael.git npm ERR! npm ERR! fatal: unable to access https://github.com/nhn/raphael.git/: OpenSSL SSL_read: Connection was reset, errno 10054 …...
Spark---数据输出
1. 输出为Python对象 collect算子:将RDD各个分区内的数据,统一收集到Driver中,形成一个List对象 reduce算子:对RDD数据集按照传入的逻辑进行聚合 take算子:取RDD的前N个元素,组合成list返回给你 count…...
虹科干货 | Redis Enterprise 自动分层技术:大数据集高性能解决方案
文章来源:虹科云科技 阅读原文:https://mp.weixin.qq.com/s/5ik-WLHwEmPn42f1FissQw 越来越多的应用程序依赖于庞大的数据集合,而这些应用程序必须快速响应。借助自动分层,Redis Enterprise 7.2 帮助开发人员轻松创建超快的应用程…...
信息系统项目管理师第四版学习笔记——组织通用治理
组织战略 组织战略是组织高质量发展的总体谋略,是组织相关干系方就其发展达成一致认识的重要基础。组织战略是指组织针对其发展进行的全局性、长远性、纲领性目标的策划和选择。 战略目标是组织在一定的战略期内总体发展的总水平和总任务。它决定了组织在该战略期…...
安装zip扩展(PHP)
记录一次 安装zip扩展的最优方案 (备注 网上以及Ai提供的很乱不能很快解决) 首先搜索zip包 yum search zip选择自己合适的php版本 比如我的php是7.4.33的 我就用php74-php-pecl-zip 如果没有的话 先添加软件源 sudo yum install epel-release sudo yu…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
