selenium自动化登录(实战解析)

news2024/9/27 21:20:55

目录

1.纯英文验证码

1.首先需要了解运行所需要的模块

2.获取我们的目标地址链接

3.进入古诗词首页面,找到验证码的标签,获取并且保存

4.调用超级鹰打码平台

5.调用超级鹰内的方法

6.输入账号密码

7.模拟登陆需要用cookie保持登陆状态


相信有很多新手小白都跟我遇到一样的问题,在验证码识别这一块出现了很多的问题。
那么,我是对于那些截图的验证码的提交的方法有些混乱,但是,有些打码平台给出的案列呢,又无法看明白,搞了几天都没能搞出来的。这一种是非常的痛苦的。那么对于自动化登录,验证码的类型有非常的多。列子如下:

  • 纯英文
  • 纯数字
  • 英文加上数字
  • 滑块
  • 双滑块
  • 计算
    等等一系列的类型。那么今天就写一下自己的,搞了几天滑块验证码,图案点击验证码,没搞出来从而放弃转向那种比较简单一点点的验证码。纯英文验证码的案列。(以古诗词网为列子)

1.纯英文验证码

1.首先需要了解运行所需要的模块

```
from selenium import webdriver#浏览器驱动
from PIL import Image#ORC识别图片
from pc.chaojiying_Python.chaojiying import Chaojiying_Client
from selenium.webdriver.common.by import By#元素查找方法
from requests_html import HTMLSession
import time
```

2.获取我们的目标地址链接

```
# 创建请求对象
session = HTMLSession()
# 创建浏览器驱动对象
driver = webdriver.Chrome()

url = 'http://www.jianjiaoshuju.com/path/login.htm'
driver.maximize_window()
driver.get(url)
```

3.进入古诗词首页面,找到验证码的标签,获取并且保存

```
img = driver.find_element(By.XPATH, '//*[@id="imgCode"]')

img.screenshot('gus.png')
```

4.调用超级鹰打码平台


下载之后,将文件夹复制粘贴在自己项目目录下,并且导入

`from pc.chaojiying_Python.chaojiying import Chaojiying_Client`

5.调用超级鹰内的方法

```
chaojiying = Chaojiying_Client('超级鹰账号', '密码', '软件id号')	#用户中心>>软件ID 生成一个替换 96001
im = open('gus.png', 'rb').read()													#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
result = chaojiying.PostPic(im, 3004)#3004,验证码类型
print(result)
```

6.输入账号密码

```
driver.find_element(By.XPATH, '//*[@id="email"]').send_keys('古诗词账号')
time.sleep(0.5)
driver.find_element(By.XPATH, '//*[@id="pwd"]').send_keys('密码')
time.sleep(0.5)
driver.find_element(By.XPATH, '//*[@id="code"]').send_keys(result)

time.sleep(2)
# 点击确定按钮
driver.find_element(By.XPATH, '//*[@id="denglu"]').click()
time.sleep(2)
```

7.模拟登陆需要用cookie保持登陆状态

```
"""
selenium自动化登录,获取cookie,结合requests获取登录之后的数据
将cookie列表里面里面的元素进行key取value来组合新的字典
name的value值作为key值
value的value值作为value
"""
cookie_dict = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
headers = {
    # 'Host': 'www.jianjiaoshuju.com',
    # 'Referer': 'http://www.jianjiaoshuju.com/path/login.htm',
    # 'Upgrade-Insecure-Requests': '1',
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
response = session.get(url, headers=headers, cookies=cookie_dict).content.decode()
print(response)

```

 


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

人工智能 | 技能人才评价证书分析及人工智能/计算机类证书推荐

目录 简介技能人才评价证书相关介绍1. 国家职业资格证书2. 职业技能等级证书 推荐证书目录1. 计算机类的国家职业资格证书a. 证书推荐b. “软高***”和“PMP”的区别 2. 计算机类的职业技能等级证书a. 工信部认证b. 中国人工智能学会证书 专业证书的作用1. 抵税2. 领取职业技能…

想要让视频素材格式快速调整转换的方法分享

有时候有些视频播放软件不支持播放某些格式的视频文件?那要怎么解决呢?换一个播放软件?不妨试试批量转换视频格式,简单的几步操作就能快速解决烦恼,跟着小编一起来看看具体的操作环节吧。 首先先进入“固乔科技”的官网…

Apikit 自学日记:发起快速测试

功能入口:API管理应用 / 选中某个项目 / API文档菜单 / 选中标签页旁加号 发起快速测试 如果未创建该接口文档,仅临时调试接口,则可创建API快速测试页面。可在这个页面输入接口相关的信息并进行快速测试。具体各协议的测试字段配置&#xf…

NoSQL之Redis配置

NoSQL 一、关系型数据库与非关系型数据库关系型数据库非关系型数据库区别 二、Redis简介Redis的优点Redis的使用场景 三、Redis安装部署四、Redis命令工具redis-cli 命令行工具redis-benchmark 测试工具 五、Redis 数据库常用命令六、Redis多数据库常用命令 一、关系型数据库与…

深入浅出设计模式 - 观察者模式

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

【Sql】win11系统安装sqlserver2008r2数据库,找不到文件user.config line 5

【问题描述】 在win11系统环境下, 安装sql server 2008 r2数据库的时候,提示【Microsoft.NET Framework】窗口错误。 如果点击继续,应用程序将忽略此错误并尝试继续。 具体错误明细: 创建userSettings/Microsoft.SqlServer.Config…

centos下的Nginx的安装 --yum安装

1.没有可用软件包 nginx 2.检查yum源下nginx相关软件包 3.解决yum源无nginx软件包问题 yum install epel-release yum update更新yum源后查询结果 4.安装nginx yum -y install nginx5.yum安装后的nginx相关目录 6.查看nginx.conf,确定nginx相关具体目录 详细配置…

ECCV2020-DY-RELU

论文地址:https://arxiv.org/abs/2003.10027论文代码:https://github.com/Islanna/DynamicReLU三方复现:Dynamic ReLU: 与输入相关的动态激活函数 - 知乎 ReLU是深度学习中很重要的里程碑,简单但强大。目前有很多ReLU的改进版&am…

【uniapp学习之分享小程序页面】

一、设置分享功能之前的样子 二、在代码中开启分享转发按钮 <script>export default {data() {return {}},methods: {},onLoad() {wx.showShareMenu({withShareTicket: true,menus: [shareAppMessage, shareTimeline]});},onShareAppMessage(res) { //发送给朋友return …

C1. Make Nonzero Sum (easy version) - 思维

分析&#xff1a; n一但是奇数就一定不行&#xff0c;因为无论有多少-1和1都会导致最后的和是-1或1&#xff0c;每次断开一个区间会改变2&#xff0c;所以一定不行&#xff0c;直接输出-1。 其次&#xff0c;如果数组满足题意也可以一个一个输出每一个下标&#xff0c;遍历数组…

4 测试分类

文章目录 总结:课程笔记 总结: 课程笔记

I/O复用的高级应用三——同时处理TCP和UDP服务

截至目前学习&#xff0c;我们讨论过的服务器程序都只监听一个端口。但在实际应用中&#xff0c;有不少服务器程序能同时监听多个端口&#xff0c;比如超级服务inetd和android的调试服务adbd。 从bind系统调用的参数看&#xff0c;一个socket只能与一个socket地址绑定&#xff…

聚焦 5 大技术领域,腾讯2023 年度犀牛鸟开源人才培养计划启动报名

如今&#xff0c;开源已成为全球科技创新的重要方式&#xff0c;而人才建设则是中国开源生态健康发展的关键。 6 月 28 日&#xff0c;在开放原子校源行清华大学站上&#xff0c;腾讯 2023 年度犀牛鸟开源人才培养计划正式启动&#xff0c;将聚焦AI、大数据、数据库、基础软件…

MATLAB代码:配网节点电价 DLMP 考虑网损,电压,阻塞的配电网二阶锥节点电价 (DLMP)需要gurobi求解器

MATLAB代码&#xff1a;配网节点电价 DLMP 关键词&#xff1a;DLMP SOCP lindistflow 参考文档&#xff1a;《Distribution Locational Marginal Pricing (DLMP) for Congestion Management and Voltage Support》2018 SCI一区 IEEE Transactions on Power System 非完美复现 …

使用 Jetpack Compose 构建 CircularProgressIndicator

欢迎阅读这篇关于如何使用 Jetpack Compose 构建 CircularProgressIndicator&#xff08;圆形进度指示器&#xff09;的博客。Jetpack Compose 是 Google 推出的一款现代化 UI 工具包&#xff0c;用于构建 Android 界面。其声明式的设计使得 UI 开发更加简洁、直观。 一、什么…

Spring 中的 bean 是线程安全的吗?

spring 是一款非常流行的 Java 开源框架&#xff0c;它主要用于构建企业级应用程序。Spring 的 IoC 和AOP技术能够帮助开发人员更加便捷地组织和管理 Java 代码。 在 Spring 中&#xff0c;bean 默认是单例模式&#xff0c;也就是说&#xff0c;每个 bean 只会被 Spring 容器创…

Mac电脑硬件/软件运行状况查看工具

iStat Menus是一款系统监控和管理工具&#xff0c;旨在帮助Mac用户实时监控电脑的各项硬件和软件信息。它以直观和定制化的方式提供了丰富的系统状态指标&#xff0c;让用户能够全面了解和管理自己的Mac电脑。 iStat Menus提供了一系列的菜单栏指示项目&#xff0c;可以显示诸如…

NoSQL之 Redis 配置与优化

目录 一、关系型数据库与非关系型数据库1.1 关系型数据库&#xff1a;1.2 非关系型数据库1.3 关系型数据库和非关系数据库的区别1.3.1 数据存储方式不同1.3.2 扩展方式不同1.3.3 对事务性的支持不同 1.4 非关系型数据库的产生背景1.5 总结 二、Redis介绍三、 Redis 的优点四、 …

深入浅出设计模式 - 建造者模式

博主介绍&#xff1a; ✌博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家✌ Java知识图谱点击链接&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; &#x1f495;&#x1f495; 感兴趣的同学可以收…

fatal: not a git repository (or any of the parent directories): .git 解决方案

fatal: not a git repository (or any of the parent directories): .git致命:不是git存储库(或任何父目录):.git 解决办法&#xff1a; 在命令行 输入 git init 然后回车就好了 git init