《破解验证码:用Requests和Selenium实现模拟登录的终极指南》

两种模拟登录方式(图形验证码)

超级鹰

打码平台,用于识别验证码

requests模拟登录

from chaojiying import Chaojiying_Client
import requests
from requests import Session
from lxml import etree
#获取图片信息
def get_pic_info(img_name):chaojiying = Chaojiying_Client()im = open(img_name, 'rb').read()if chaojiying.PostPic(im, 1902)['err_no']==0:return chaojiying.PostPic(im, 1902)['pic_str']s = Session()
#请求时已生成cookie并且存在s中
img = s.get('http://www.chaojiying.com//include/code/code.php?u=1').content#拿到一个二进制数据
op = open('a.jpg','wb')#二进制形式写入
op.write(img)
op.close()
yan = get_pic_info('a.jpg')
#登录
data = {'user': '17526625714','pass':'31415926AsD@','imgtxt': yan,'act': 1}
source = s.post('http://www.chaojiying.com/user/login/',data=data).text
print(source)#返回源码
score = etree.HTML(source).xpath('//span[@class="cred strong num"]/text()')
print(score)#返回账户题分

selenium模拟登录

进行抠图时要进行定位,定位前要将电脑的显示设置设为100%

from chaojiying import Chaojiying_Client
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
#用来处理图片的包
from PIL import Image
import time
def get_pic_info(img_name):chaojiying = Chaojiying_Client()im = open(img_name, 'rb').read()if chaojiying.PostPic(im, 1902)['err_no']==0:return chaojiying.PostPic(im, 1902)['pic_str']
options = webdriver.ChromeOptions()
# 设置无头模式
# options.add_argument('--headless')# selenium新版本: 将谷歌驱动网址用service包裹一下
service = Service('D:\extention\spider\day4\chormedriver\chromedriver-win64\chromedriver.exe')
# 驱动
dr = webdriver.Chrome(service=service, options=options)
dr.get('https://www.chaojiying.com/user/login/')
# 浏览器最大化
dr.maximize_window()
time.sleep(2)
# 截图浏览器保存到bdbutton.png图片
dr.save_screenshot('bdbutton.png')
# 清除用户名输入框里的东西
dr.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/p[1]/input').clear()
# 填用户名
dr.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/p[1]/input').send_keys('yizhiqie')
# 清除密码输入框里的东西
dr.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/p[2]/input').clear()
# 填密码
dr.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/p[2]/input').send_keys('18532104295')
# 定位验证码图片对象
element = dr.find_element(By.XPATH,'/html/body/div[3]/div/div[3]/div[1]/form/div/img')
# 获取图片的左边距上边距右边距下边距
left = element.location['x']
top = element.location['y']
right = left + element.size['width']
bottom = top + element.size['height']
# 根据边距定位验证码图片,抠出验证码图片并保存为button.png
im = Image.open('bdbutton.png')
im = im.crop((left, top, right, bottom))
im.save('button.png')yan = dr.find_element(By.XPATH,'//input[@name="imgtxt"]')
yan.send_keys(get_pic_info('button.png'))
dr.find_element(By.XPATH,'//input[@class="login_form_input_submit"]').click()
time.sleep(10)
score = dr.find_element(By.XPATH,'//span[@class="cred strong num"]').text
print(score)

更多精致内容:[CodeRealm]

在这里插入图片描述

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

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

相关文章

10个append()函数在Python程序开发中的创新应用

文末赠免费精品编程资料~~ 在Python编程的世界里,append()函数是列表操作中最常见的方法之一。它允许我们在列表的末尾添加一个元素,这一简单的功能却能激发无限的创造力。今天,我们将探讨append()函数在Python程序开发中的10种创新应用&…

分布式文件存储行业解决方案和技术选型分析

分布式文件存储行业解决方案和技术选型分析 前言 上一集,我们已经完成了初始化测试报告以及判断压测类型的实战,我们在文章的末尾提到了文件上传的问题以及文件存储的问题,也说了接下来的几集中,我们会讨论分布式文件存储的内容…

代码随想录第23天|回溯

39.组合总和 题目链接/文章讲解: 代码随想录 视频讲解:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲!_哔哩哔哩_bilibili 第一想法: 组合总和与第22天组合总…

爬虫实战-掌上高考网实战

1.确定需求:爬取什么数据爬取大学名称 2.找到数据源地址数据在哪个链接中https://api.zjzw.cn/web/api/?keyword&page1&province_id&ranktype&request_type1&size20&top_school_id[3703,2461,659,3117,597,1724]&type&uriapidata/…

2024电赛H题参考方案——自动行使小车

目录 一、题目要求 二、参考资源获取 三、参考方案 1、环境搭建及工程移植 2、移植MPU6050模块 3、移植TB6612电机驱动模块 其他模块根据需要移植 总结 一、题目要求 小编自认为:此次H题属于控制类题目,相较于往年较为简单,功能也算单一&…

Vue3响应式高阶用法之toRaw()

Vue3响应式高阶用法之toRaw() 文章目录 Vue3响应式高阶用法之toRaw()一、简介二、使用场景2.1 性能优化2.2 与外部库的集成 三、基本使用3.1 创建响应式对象3.2 获取原始对象3.3 修改原始对象 四、功能详解4.1 toRaw的工作原理4.2 使用注意事项 五、最佳实践及案例5.1 性能优化…

基于深度学习的智能手势识别系统

基于深度学习的石头剪刀布手势识别(UI界面YOLOv8/v7/v6/v5代码训练数据集) 引言 石头剪刀布是一种简单而有趣的游戏。通过基于深度学习的手势识别系统,我们可以自动检测和识别玩家的手势。本文将详细介绍如何构建一个石头剪刀布手势识别系统…

C++类与对象-总结实践篇

为了总结熟悉类与对象相关的语法,本文通过实现经典的日期计算来练习巩固这一块的知识 目录 一、要实现的功能 二、难点分析 2.1 判断日期大小 2.2 日期加/减对应天数 2.3 两个日期相减 三、源代码 牛客网日期类相关练习题: 日期累加_牛客题霸_牛…

Oracle 19c打Datapatch数据补丁报错处理

Oracle 19c打Datapatch数据补丁报错处理 错误分析重新编译补丁验证安装完数据库补丁后,在数据补丁的步骤收到以下报错: Connecting to database...OK Gathering database info...done Bootstrapping registry and package to current versions...done Determining current s…

【Java】韩顺平Java学习笔记 第19章 IO流

文章目录 文件概述常用的文件操作创建文件获取文件信息目录的操作和文件删除流的分类各抽象类常用子类对象FileInputStreamFileOutputStreamFileReaderFileWriter 节点流和处理流概念BufferedReaderBufferedWriterBufferedInputStream & BufferedOutputStream 对象流&#…

LeetCode 算法:搜索插入位置 c++

原题链接🔗:搜索插入位置 难度:简单⭐️ 题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(l…

Python | TypeError: ‘module’ object is not callable

Python | TypeError: ‘module’ object is not callable 在Python编程中,遇到“TypeError: ‘module’ object is not callable”这类错误通常表明你尝试像函数一样调用了一个模块。这种错误通常是由于导入模块时的疏忽或误解导致的。本文将深入探讨此错误的根源&…

2024年7月23日~2024年7月29日周报

目录 一、前言 二、完成情况 2.1 一种具有边缘增强特点的医学图像分割网络 2.2 融合边缘增强注意力机制和 U-Net 网络的医学图像分割 2.3 遇到的困难 三、下周计划 一、前言 上周参加了一些师兄师姐的论文讨论会议,并完成了初稿。 本周继续修改论文&#xff0…

vivado LOC

LOC LOC指定逻辑单元对目标SITE资源的放置分配 Xilinx部分。 LOC属性或约束有时与BEL属性一起使用,以定义精确的 将细胞放置在设备内。在这些情况下,必须定义BEL约束 否则将发生放置错误。 提示:要将I/O端口分配给设备包上的物理引脚&#xf…

大语言模型系列——Transformer 介绍与使用

引言 自从 Google 在 2017 年发表了一篇题为《Attention Is All You Need》的论文以来,Transformer 已经成为了自然语言处理领域的一个重要里程碑。与传统的 RNN 和 LSTM 不同,Transformer 通过自注意力机制(Self-Attention Mechanism&#…

使用eclipse在新建的java项目中编辑xml文件时Unhandled event loop exception No more handles

处理方法:更换xml编辑器 Window ——》Preferences ——》General ——》Editors ——》File Associations 如果File types里面没有*.xml,则点击Add进行新增 选中*.xml,然后在Associated editors 选中想用的编辑器,设置为defaul…

Selenium---Xpath选择器

XPath (XML Path Language) 是由国际标准化组织W3C指定的,用来在 XML 和 HTML 文档中选择节点的语言。 xpath 语法中,整个HTML文档根节点用/表示,如果我们想选择的是根节点下面的html节点,则可以在搜索框输入 /html如果输入下面…

vpp中的不同节点的数据传输,使用vpp中的回调函数,相同的原理也可以实现,不同节点的函数的调用

vpp中的不同节点的数据传输,使用vpp中的回调函数,相同的原理也可以实现,不同节点的函数的调用 1.实现数据传输所需要用到的函数2.具体实现 1.实现数据传输所需要用到的函数 需要用到的一个宏__clib_export 作用:就是将这后边的…

小白也能读懂的ConvLSTM!(开源pytorch代码)

ConvLSTM 1. 算法简介与应用场景2. 算法原理2.1 LSTM基础2.2 ConvLSTM原理2.2.1 ConvLSTM的结构2.2.2 卷积操作的优点 2.3 LSTM与ConvLSTM的对比分析2.4 ConvLSTM的应用 3. PyTorch代码参考文献 仅需要网络源码的可以直接跳到末尾即可 1. 算法简介与应用场景 ConvLSTM&#x…

app-routing.module.ts 简单介绍

Angular的路由是一种功能,它允许应用程序响应不同的URL路径或参数并根据这些路径加载不同的组件。app-routing.module.ts是Angular项目中负责设置应用程序路由的文件。 以下是一个简单的app-routing.module.ts文件示例,它配置了三个路由: i…