爬虫学习笔记(十八)—— 点触验证码:超级鹰、12306自动登录
一、打码平台
点触验证码是一种常见的反爬手段。
解决方案有两种:一种是直接解决,这需要深度学习机器学习等图像处理技术,以大量的数据训练识别模型,最终达到模型足矣识别图片中的文字提示和应该点击的区域之间的对应关系。这需要非常专业的设备,比如TPU运算,和专业的开发和维护人员。
因此市面上有专业解决此类问题的OCR解决提供商。也就是第二种间接解决的方案,调用第三方接口。接下来将给大家介绍一款好用的第三方接口:超级鹰
二、超级鹰的使用
超级鹰验证码识别平台:https://www.chaojiying.com/
1、注册、登录超级鹰平台
2、点击“进入用户中心”,找到“软件ID”,选择“生成一个软件ID”,相当于做开发新建一个工程
3、下载开发样例
选择“开发文档”->“python”->“点击这里下载”
下载样例后解压结果:
超级鹰核心代码截图
创建类的参数:1、超级鹰登录账号; 2、超级鹰登录密码; 3、第2步创建的软件的ID
PostPic方法参数:1、验证码图片字节 ;2、验证码的类型,不同的验证码,识别价格不一样 https://www.chaojiying.com/price.html
三、小案例:12306自动登录
(这里我们用selenium来进行自动登录)
1、先观察12306登录界面
我们需要用“账号登录”
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://kyfw.12306.cn/otn/resources/login.html')
driver.maximize_window() #窗口最大化
driver.implicitly_wait(5) #隐式等待time.sleep(1) #强制等待,等待页面加载,作用同下
#1、点击“账号登录”
account_login = driver.find_element_by_xpath('//li[@class="login-hd-account"]/a')
account_login.click()
2、通过”网页调试工具“,用selenium进行找回密码自动输入
from login_message import LA,LP,CA,CP #LA:12306登录的账号 LP:12306登录密码 CA:超级鹰登录账号 CP:超级鹰登录密码
time.sleep(1)
# 输入框输入登录账号
usename_put = driver.find_element_by_id('J-userName')
usename_put.send_keys(LA) #LA:12306登录的账号time.sleep(1)
#输入框输入登录密码
passwd_put = driver.find_element_by_id('J-password')
passwd_put.send_keys(LP) #LP:12306登录的密码
3、获取验证码图片
# 获取验证码图片 并保存在当前目录下 图片名:auth_code.png
driver.find_element_by_id('J-loginImg').screenshot('auth_code.png')
4、通过超级鹰识别验证码并点击选择正确图标
from chaojiying import Chaojiying_Client #我把解压好的chaojiying.py放到项目目录下
from selenium.webdriver.common.action_chains import ActionChains#参数: 超级鹰登录账号 密码 软件ID
chaojiying_Obj = Chaojiying_Client(username=CA,password=CP,soft_id=920548)
#用二进制读的方式 打开保存的验证码图片 获得图片字节
with open('auth_code.png','rb') as f:im = f.read()#参数:字节图片 验证码的类型(参考: https://www.chaojiying.com/price.html)
data = chaojiying_Obj.PostPic(im=im,codetype=9004)
# print(type(data),data) 观察返回的数据类型及其结果
captcha = driver.find_element_by_id('J-loginImg') #通过id方式 定位验证码图片元素位置postion_list = data['pic_str'].split('|')
for postion in postion_list: #获取我们应该点击的图片位置postion = postion.split(',')x = int(postion[0])y = int(postion[1])# 点击验证码图片中的正确位置ActionChains(driver).move_to_element_with_offset(captcha,x,y).click().perform()
5、确认登录
# 确认登录
login_tag = driver.find_element_by_id('J-login')
login_tag.click()
结果展示:
爬虫学习笔记(十八)—— 点触验证码:超级鹰、12306自动登录相关推荐
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置...
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置 Download JetBrains Python IDE :: PyCharm http://ww ...
- windows内核开发学习笔记十八:IRP 处理的标准模式
windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...
- Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件
Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件 插件是由PolyWorks加载的动态链接库(DLL文件),然后查询Polyworks模块,以确定它们具有哪些功能,提供给 ...
- 爬虫学习笔记(十七)—— 字符验证码
文章目录 一.认识验证码 1.1.概念 1.2.作用 1.3.类别 二.Pillow库 2.1.PIL库和Pillow库 2.1.1.Pillow库安装 2.1.2.PIL与Pillow使用注意 2. ...
- 学习笔记(十八):MoRe-Fi用深度学习网络从非线性信号中恢复呼吸波形
<MoRe-Fi: Motion-robust and Fine-grained Respiration Monitoring via Deep-Learning UWB Radar>学习 ...
- 【D3D11游戏编程】学习笔记十八:模板缓冲区的使用、镜子的实现
(注:[D3D11游戏编程]学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~) 模板缓冲区(Stencil Buffe ...
- three.js学习笔记(十八)——调整材质
介绍 到现在为止,我们都在创建新的着色器材质,但是如果我们想要修改一个Three.js内置的材质呢?或许我们对MeshStandardMaterial的处理结果感到满意,但是希望往里边添加顶点动画. ...
- 爬虫学习笔记(八)—— Scrapy框架(三):CrawSpider模板
CrawlSpider 创建CrawlSpider 的爬虫文件 命令: scrapy genspider -t crawl 爬虫文件名 域名 Rule 功能:Rule用来定义CrawlSpider的爬 ...
- 【theano-windows】学习笔记十八——混合蒙特卡洛采样
#前言 继续之前的Theano学习,本次主要学习混合蒙特卡洛(Hybrid Monte-Carlo Sampling)采样算法. 国际惯例,参考网址 Hybrid Monte-Carlo Sampli ...
- python爬虫学习(十八)人人网cookie登录
import requests from lxml import etree from codeClass import YDMHttp#封装打码平台代码 path = 'code.jpg' def ...
最新文章
- HBuilder 的快捷键
- 太阳直射点纬度计算公式_高中地理——每日讲1题(二十四节气、正午太阳高度、日出时间)...
- Unity 游戏开发技巧集锦之创建自发光材质
- java调用接口失败重试,httpclient接口测试中重试控制器设置
- python3循环遍历嵌套字典替换指定值
- python cv2 matchtemplate_OpenCV-Python系列十:模板匹配
- 解决无法将自己github上的代码clone到/usr目录下的问题
- SAP Spartacus如何判断用户是否已经成功登录
- python 特殊方法实例
- 初了解IsPostBack
- 卸载 Creative Cloud 桌面应用程序(macOS、Windows)
- 模拟登陆广工统一认证系统
- 华为首款鸿蒙平板发布,华为MatePad Pro发布亮相!华为首款鸿蒙平板全新体验!...
- one-hot向量形式
- Photoshop CS5软件安装教程
- 无人机行业的机遇与挑战
- html制作心形状图片,把多张图片拼接成一个爱心的形状 爱心形状的图片效果 爱心拼接照...
- python打开word并插入图片_Python操作word文档插入图片和表格的实例演示
- L2-4 寻宝图 天梯赛题补
- ORACLE 大批量插入数据
热门文章
- 两大「宇宙中心」之争:未来科技城如何一步步落后奥体?
- Spring Boot启动报错问题: The Bean Validation API is on the classpath but no implementation could be found
- 【路径规划】viroion地图无人机路径规划matlab代码
- C语言调试(Dev-C++)(初步)
- win怎么在计算机里按日期搜索文件,Win8系统如何按指定修改日期搜索文件
- iOS 自动生成各种尺寸的App Icon 和 Launch Image( App Icon Gear)
- JS实现小方块上下移动
- 基于四旋翼无人机的PD控制研究(Matlab代码实现)
- 脉冲宽度调制(PWM)和DAC转换练习
- 黑马程序员—String类常用方法