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

news2024/9/17 3:59:25

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

超级鹰

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

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.coloradmin.cn/o/1952448.html

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

相关文章

贪心算法总结(2)

一、买卖股票的最佳时机 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxProfit(vector<int>& prices) {int miniINT_MAX;int ret0;for(int&price:prices){//遍历的时候&#xff0c;我们随时去更新最小的值&#xff0c;然后让每一位…

AI音乐大模型背后的技术突破、版权诉讼和资本蛋糕

音乐&#xff0c;对你来说&#xff0c;是什么&#xff1f; 音乐对于我们中的许多人来说&#xff0c;是生活中不可或缺的一部分。它不仅仅是娱乐&#xff0c;更是一种情感的表达和交流方式。音乐是一种语言&#xff0c;可以用来表达感受&#xff0c;描绘作曲家想要传达的某种情…

fatal: refusing to merge unrelated histories

出现本地仓库和远程仓库的代码合并不兼容问题&#xff0c;解决方法&#xff1a; 添加--allow-unrelated-histories&#xff0c;让git允许提交不关联的历史代码。 成功提交&#xff1a;

云计算概念以及与云服务的区别

1.云的概念 1.1 什么是云&#xff1f; “云”在计算机科学和信息技术领域通常指“云计算”&#xff0c;即通过互联网提供计算资源&#xff08;如服务器、存储、数据库、网络、软件、分析等&#xff09;的模式。用户可以按需访问和使用这些资源&#xff0c;而无需管理和维护实际…

抓包工具——wireshark的使用

​ 什么是wireshark wireshark是一个数据包捕捉程序。和linux下的tcpdump&#xff0c;以及sniffer&#xff0c;Fidder等软件功能类似。按理说&#xff0c;我们的计算机中的网卡设备只会将发给本机的数据包传输到上层进行解析&#xff0c;而其他的数据包会进行丢弃&#xff0c;…

Bert文本分类和命名实体的模型架构剖析

文章目录 介绍Bert模型架构损失计算方式BertForSequenceClassificationBertForTokenClassification Bert 输出结果剖析例子 参考资料 介绍 文本分类&#xff1a;给一句文本分类&#xff1b; 实体识别&#xff1a;从一句文本中&#xff0c;识别出其中的实体&#xff1b; 做命名…

万界星空科技灯具行业MES系统:点亮生产管理的未来

在快速迭代的灯具行业中&#xff0c;高效、精准的生产管理是企业保持竞争力的关键。万界星空科技推出的灯具行业MES&#xff08;制造执行系统&#xff09;系统&#xff0c;以其强大的功能和完善的管理体系&#xff0c;正成为众多灯具生产企业的首选解决方案。本文将重点介绍万界…

构建高并发Web服务:Gunicorn与Flask在Docker中的完美融合

1. 引言 在数字化时代&#xff0c;Web服务的性能和可靠性对于任何在线业务的成功至关重要。随着用户基数的增长和业务需求的扩展&#xff0c;高并发处理能力成为了衡量一个Web服务质量的关键指标。高并发Web服务不仅能够确保用户体验的流畅性&#xff0c;还能在流量激增时保持…

抖音矩阵管理系统开发:全面解析与推荐

在数字时代&#xff0c;短视频平台如抖音已经成为人们生活中不可或缺的一部分。随着内容创作者数量的激增&#xff0c;如何高效地管理多个抖音账号&#xff0c;实现内容矩阵化运营&#xff0c;成为了众多创作者关注的焦点。今天&#xff0c;我们就来全面解析抖音矩阵管理系统的…

Android 生成Excel并导出全流程

前言 最近接到需求&#xff0c;要在安卓上离线完成根据数据生成Excel文件&#xff0c;但搜到了都不是能立马使用 例如 // implementation org.apache.poi:poi:3.17 // implementation com.alibaba:easyexcel:4.0.1 这两最大的问题是专用于java的&#xff0c;如果And…

【SpringBoot】7 数据库(MySQLMyBatis)

MySQL 前提&#xff1a;本地有安装 MySQL 。 连接 使用工具 Navicat Premium &#xff0c;或者 IDEA 自带的 DB 工具&#xff0c;或者其他能连接 MySQL 数据库的工具都可以。 1&#xff09;创建 MySQL Data Source 2&#xff09;根据本地配置连接上 MySQL&#xff0c;点击…

移动UI:排行榜单页面如何设计,从这五点入手,附示例。

移动UI的排行榜单页面设计需要考虑以下几个方面&#xff1a; 1. 页面布局&#xff1a; 排行榜单页面的布局应该清晰明了&#xff0c;可以采用列表的形式展示排行榜内容&#xff0c;同时考虑到移动设备的屏幕大小&#xff0c;应该设计合理的滚动和分页机制&#xff0c;确保用户…

Android 软键盘挡住输入框

Android原生输入法软键盘挡住输入框,网上各种解法,但不起效。 输入框都是被挡住了,第二张图的小点,实际就是输入法的光标。 解法: packages\inputmethods\LatinIME\java\res\values-land config.xml <!-- <fraction name="config_min_keyboard_height"&g…

2024年国际高校数学建模大赛(IMMCHE)问题A:金字塔石的运输成品文章分享(仅供学习)

2024 International Mathematics Molding Contest for Higher Education Problem A: Transportation of Pyramid Stones&#xff08;2024年国际高校数学建模大赛&#xff08;IMMCHE&#xff09;问题A&#xff1a;金字塔石的运输&#xff09; 古埃及金字塔石材运输优化模型研究…

【单片机毕业设计选题24084】-基于嵌入式的16位AD采集系统设计

系统功能: 系统上电后显示“欢迎使用数模转换系统请稍后”后两秒后进入正常显示。 第一行显示ADS1115第一通道采集到的电压值 第二行显示ADS1115第二通道采集到的电压值 第一行显示ADS1115第三通道采集到的电压值 第二行显示ADS1115第四通道采集到的电压值 手动调节四个电…

【产品应用】一体化伺服电机在AGV小车中的应用

随着自动化技术的快速发展&#xff0c;自动引导车&#xff08;AGV&#xff0c;Automated Guided Vehicle&#xff09;在物流、仓储和生产等领域的应用日益广泛。 作为智能物流体系中的重要设备&#xff0c;AGV小车通过先进的控制技术、传感器技术和导航系统&#xff0c;实现了…

潜水通信定位系统的功能概述_鼎跃安全

水域救援是一项极具挑战性的救援行动&#xff0c;其特点鲜明&#xff0c;集突发性、时间敏感性、技术精密性、难度系数高及潜在危险性之大成。这类救援任务往往要求在极短的时间内迅速响应&#xff0c;面对复杂多变的水域环境&#xff0c;救援人员必须具备高超的专业技能和冷静…

23万一张的天价卡牌,如何撑起一个港股IPO?

23万&#xff0c;可以买到什么&#xff1f; 是拿下一辆涨价后的宝马i3&#xff1f;还是在三线城市全款盘下一套房&#xff1f;又或是来一次环球旅行&#xff1f;这些都已经过时了&#xff0c;对于现在的年轻人来说&#xff0c;他们或许会选择拿这些钱去二手市场&#xff0c;收…

pycharm关闭项目时,页面卡住了,怎么办?

问题 在关闭pycharm时&#xff0c;有时会遇到卡在退出进度条的界面&#xff0c;很讨厌&#xff0c;那我们要怎么办才能退出呢&#xff1f; 说明&#xff1a;本篇文章不是从根源上解决这个问题&#xff0c;无法避免这种情况。 解决方法 方法一&#xff1a; 在卡住时&#xf…

Golang | Leetcode Golang题解之第287题寻找重复数

题目&#xff1a; 题解&#xff1a; func findDuplicate(nums []int) int {slow, fast : 0, 0for slow, fast nums[slow], nums[nums[fast]]; slow ! fast; slow, fast nums[slow], nums[nums[fast]] { }slow 0for slow ! fast {slow nums[slow]fast nums[fast]}return s…