Python —— 验证码的处理执行JavaScript语句

news2024/11/6 15:23:46

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 webdriver

driver = 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 webdriver

driver = 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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入探讨 Golang 中的追加操作

通过实际示例探索 Golang 中的追加操作 简介 在 Golang 编程领域,append 操作是一种多才多艺的工具,使开发人员能够动态扩展切片、数组、文件和字符串。在这篇正式的博客文章中,我们将踏上一段旅程,深入探讨在 Golang 中进行追加…

基于跳蛛优化的BP神经网络(分类应用) - 附代码

基于跳蛛优化的BP神经网络(分类应用) - 附代码 文章目录 基于跳蛛优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.跳蛛优化BP神经网络3.1 BP神经网络参数设置3.2 跳蛛算法应用 4.测试结果:5.M…

eltable el-tooltip__popper 换行、字体、颜色等调整

show-overflow-tooltip属性 element-ui表格 默认情况下若内容过多会折行显示,若需要单行显示可以使用show-overflow-tooltip属性,它接受一个Boolean,为true时多余的内容会在 hover 时以 tooltip 的形式显示出来。 默认情况 element-ui表格 sh…

【练习题】二.栈和队列

1.蒋编号为0和[的两个栈存放于一个数组空间 V[m]中,栈底分别处于数组的两端。当第0号栈的栈顶播针 top[0]等F-1 时该戍为空:当第1号栈的栈顶指针 top[I]等于 m 时,该栈为空两个栈均从两端向中间增长 (见图 3.2)。试编写双栈初始化,判渐栈空、栈满、进栈和出栈等算法的两数。…

5年经验之谈 —— 总结自动化测试与性能测试的区别!

很多刚刚接触自动化测试和性能测试的同学感觉性能测试和自动化测试是没什么区别的,就像小编刚刚接触自动化测试和性能测试的时候一样,区别就是:自动化测试是一个用户在测试,而性能测试需要并发,需要设计各种场景。测试…

论文辅助笔记:t2vec 数据预处理

1 波尔图数据 curl http://archive.ics.uci.edu/ml/machine-learning-databases/00339/train.csv.zip -o data/porto.csv.zip 这条命令使用 curl 从给定的URL下载一个名为 train.csv.zip 的压缩文件,并将其保存为 data/porto.csv.zip。 unzip data/porto.csv.zip 使…

python实现矩阵转置

使用列表推导式实现矩阵转置 matrix [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] print([[row[i] for row in matrix]for i in range(4)])使用内置函数来实现矩阵转置 matrix [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] print(list(map(list, zip(*matrix))))使用…

softplc windows 安装测试

下载 .NET 6.0 (Linux、macOS 和 Windows) 安装后 在这里 The command could not be loaded, possibly because: * You intended to execute a .NET application: The application restore does not exist. * You intended to execute a .NET SDK command: No…

如何利用IP定位技术进行反欺诈?

网络欺诈风险是指在互联网和数字领域中,存在各种类型的欺诈活动,旨在欺骗个人、组织或系统以获得非法获益。以下是一些常见的网络欺诈风险类型: 身份盗用:这是一种欺诈行为,涉及盗取他人的个人身份信息,如姓…

基于Java的汽车维修预约管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

电度表和电能表是一样的吗?

电度表和电能表都是用于测量电能的仪表,但它们之间存在一些区别。接下来,小编来为大家介绍下电度表和电能表的区别有哪些吧,一起来看下! 电度表是传统的机械式电能表,它通过测量电流和电压的乘积来计算电能&#xff0c…

数字化营销系统的重点功能?利用数字化营销系统为企业降本增效?

如今,越来越多的企业开始关注数字化营销,并利用数字化手段推动新的营销方式、模式和策划。数字化营销的重要性不言而喻,下面我们来了解一下数字化营销的优势有哪些? 1. 数字化营销可以更大程度地为用户提供足够的信息。 通过商品…

【数据结构初阶】九、排序的讲解和实现(直接插入 \ 希尔 \ 直接选择 \ 堆 \ 冒泡 -- C语言)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【数据结构初阶】八、非线性表里的二叉树(二叉树的实现 -- C语言链式结构)-CSDN博客 排序 排序的概念 所谓排序,就是使一串记录,按照…

[人工智能-综述-12]:第九届全球软件大会(南京)有感 -1-程序员通过大模型增强自身软件研发效率的同时,也在砸自己的饭碗

目录 前言: 一、什么是软件工程 1.1 什么软件工程 1.2 影响软件开发效能的三大因素 1.3 AI大模型是如何提升软件工程全过程效率的 二、AI大模型如何提升软件项目管理效率 2.1 概述 2.2 案例或工具 三、AI大模型如何提升软件开发工具的效率 3.1 概述 3.2 …

python使用grpc

proto 首先编写proto,也可以根据对象生成proto syntax "proto3";package text;service TextSender{rpc Send(Text) returns (SendResponse);rpc Resend(Text) returns (SendResponse); }message Text{string text 1; }message SendResponse{bool suce…

kali linux

一、Kali Linux文件系统 二、终端窗口基础 清除命令行 新建终端 TAB自动补全 关闭终端窗口 重启/关闭 最近使用的命令 <>重定向 tmux终端窗口 开始tmux Tmux快捷键 三、管理用户和组 用户命令 Kali Linux操作系统安全命令 密码设置 切换用户 查看当前用户…

为什么MySQL使用B+树索引,而不使用其他作为索引呢?

索引介绍 索引是一种用于快速查询和检索数据的数据结构&#xff0c;其本质可以看成一种排序号的数据结构。 索引的作用相当于书的目录。打个比方&#xff1a;在查字典的时候&#xff0c;如果没有目录&#xff0c;那我们就只能一页一页地去查&#xff0c;速度很慢。如果有目录…

怎么把图片转换成ico图标文件?

环境&#xff1a; Win10 专业版 问题描述&#xff1a; 怎么把图片转换成ico图标文件 解决方案&#xff1a; 要将图片转换为 ico 图标文件&#xff0c;可以使用以下几种方法&#xff1a; 方法 1&#xff1a;使用在线转换器 1.访问在线 ico 转换器&#xff0c;例如&#xf…

others-AppLovin广告接入

title: others-AppLovin广告接入 categories: Others tags: [广告, AppLovin] date: 2023-10-20 10:07:01 comments: false mathjax: true toc: true others-AppLovin广告接入 前篇 官方 - https://www.applovin.com/ Android sdk - https://github.com/AppLovin/AppLovin-MAX…