点触验证码是一种常见的反爬手段
解决方案有两种:一种是直接解决,这需要深度学习机器学习等图像处理技术,以大量的数据训练识别模型,最终达到模型足矣识别图片中的文字提示和应该点击的区域之间的对应关系。
这需要非常专业的设备,比如TPU运算,和专业的开发和维护人员。
因此市面上有专业解决此类问题的OCR解决提供商。也就是第二种间接解决的方案,调用第三方接口。

12306自动登录

整体代码文件

其中pw文件下的password存放着需要的超级鹰账号与12306账号

12306_selenium.py

登录的步骤分为

1.找到登录页面2.输入用户名和密码3.获取验证码图片4.超级鹰识别图片5.点击图片验证6.点击登录

重难点:

  1. 超级鹰识别图片,这需要调用超级鹰的代码,并且选择准确类别.图片验证,我们自己做起来比较困难,所以交个超级鹰;
  2. 点击图片验证 使用动作链
import time
from selenium  import   webdriver
from selenium.webdriver import ActionChainsfrom chaojiying import Chaojiying_Client
from PW.password import P,CPdef input_username_password(username,password):username_tag=wd.find_element_by_id("J-userName")username_tag.send_keys(username)password_tag=wd.find_element_by_id("J-password")password_tag.send_keys(password)
def get_captcha():captcha_local_path="D:/data_analysis\python_spider/tzAdvanceSpider/9.点触验证码/12306login.png"wd.find_element_by_id("J-loginImg").screenshot(captcha_local_path)return captcha_local_pathdef  picture_recognize(captcha_local_path):with open(captcha_local_path,"rb") as  f:img=f.read()#传给超级鹰识别chaojiyingObj=Chaojiying_Client(username="douli666",password=CP,soft_id=906011)dc=chaojiyingObj.PostPic(img,9004)print(dc)#解析获取合适的坐标数# dc={'err_no': 0, 'err_str': 'OK', 'pic_id': '3108522174449000010',#     'pic_str': '46,72|117,73', 'md5': 'a3e6a80ff994ad2bfc72041d645d1612'}temp_list=dc["pic_str"].split("|")print(temp_list)position_list=[position.split(",") for  position in temp_list ]print(position_list)  #[['46', '72'], ['117', '73']]  帮助我们定位图片位置return  position_listdef picture_click(position_list):loginImg_ele=wd.find_element_by_id("J-loginImg")for  position in position_list:x=int(position[0])y=int(position[1])ActionChains(wd).move_to_element_with_offset(loginImg_ele,x,y).click().perform()if __name__ == '__main__':wd=webdriver.Chrome()#1.找登录页面wd.get("https://kyfw.12306.cn/otn/resources/login.html")time.sleep(1)wd.maximize_window()wd.implicitly_wait(10)time.sleep(1)a_tag=wd.find_element_by_xpath("//li[@class='login-hd-account']/a")a_tag.click()#2输入用户名和密码input_username_password("514833906@qq.com",P)#3.获取验证码图片time.sleep(1)captcha_local_path=get_captcha()#4.超级鹰识别图片time.sleep(1)position_list=picture_recognize(captcha_local_path)#5.点击图片进行验证time.sleep(2)picture_click(position_list)#6.点击登录  获取cookies 进行后续操作time.sleep(3)login_tag=wd.find_element_by_id("J-login")login_tag.click()cookies=wd.get_cookies()print(cookies)

chaojiying.py

原先是python2的版本,需要稍微做一些修改调整,以下代码是修改后的python3的语法

#!/usr/bin/env python
# coding:utf-8import requests
from hashlib import md5class Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = username# password =  password.encode('utf8')# self.password = md5(password).hexdigest()self.password = md5(password.encode('utf8')).hexdigest()self.soft_id = soft_idself.base_params = {'user': self.username,'pass2': self.password,'softid': self.soft_id,}self.headers = {'Connection': 'Keep-Alive','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}def PostPic(self, im, codetype):"""im: 图片字节codetype: 题目类型 参考 http://www.chaojiying.com/price.html"""params = {'codetype': codetype,}params.update(self.base_params)files = {'userfile': ('ccc.jpg', im)}r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)return r.json()def ReportError(self, im_id):"""im_id:报错题目的图片ID"""params = {'id': im_id,}params.update(self.base_params)r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)return r.json()if __name__ == '__main__':chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '96001') #用户中心>>软件ID 生成一个替换 96001im = open('a.jpg', 'rb').read()                                        #本地图片文件路径 来替换 a.jpg 有时WIN系统须要//print (chaojiying.PostPic(im, 1902))                                    #1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()

21、关于破解点触的验证码相关推荐

  1. 破解携程中文验证码爬取机票价格数据

    国内机票预定APP携程处于垄断地位,但是携程有反爬虫策略,对于密集的查询请求会要求验证,验证操作有两次,一次是拖动验证,一次是点选中文,selenium+webdriver可以轻松绕过这一反爬虫设置. ...

  2. Java + Selenium 完成简单滑块验证学习之路(破解无缺口滑块验证码)(三)

    破解无缺口滑块验证码 在学习完selenium 简单操作之后,继续我的破解之路.先看一下原网页页面.(灵魂打码重点看滑块) 破解这种无缺口滑块首先要找到滑块位置,根据selenium选择器去选择要拖动 ...

  3. 艺赛旗RPA验证码处理系列(三):破解极验滑动验证码

    目前艺赛旗RPA已经更新到8.0版本,可以让所有用户免费下载试用http://www.i-search.com.cn/index.html?from=line1 (复制链接下载) 一,介绍 一些网站会 ...

  4. 破解极验(geetest)验证码

    最近在搞爬虫的时候在好几个网站都碰到了一种叫做geetest的滑动条验证码,一直没有太好的办法只能在触发这个验证码后发个报警去手动处理一下.http://www.geetest.com/exp_emb ...

  5. 如何破解极验滑动验证码?成功率 100%!

    注:已对文章中所涉及的敏感内容,如图片/文字/URL 进行脱敏处理. 什么是"极验"? 或许你没听说过极验[1],但你很大可能使用过极验的产品.极验是首家「行为式验证」安全技术服务 ...

  6. Day06,selenium的剩余用法、万能登录破解和爬取京东商品信息,及破解极验滑动验证码...

    一.自动登录抽屉新热榜 from selenium import webdriver import timedriver = webdriver.Chrome(r'D:\BaiduNetdiskDow ...

  7. 2-1暴力破解原理和测试流程

    本文章的主题是暴力破解漏洞,我们来看一下这章将讲述什么内容  暴力破解攻击&暴力破解漏洞概述 暴力破解漏洞测试流程 一定是站在安全测试的角度,如何去确认我们的目标系统存在破解漏洞的 基于 ...

  8. 网络爬虫-破解顶象滑块验证码

    仅供研究学习使用. 今天带来的是dx滑块验证码的逆向 目标站 --> 传送门 解决此类验证码 首先要解决滑动距离的判定 无论是使用selenium还是使用协议的方式来破解 都绕不开滑动距离的识别 ...

  9. 【验证码的识别】—— 点触式验证码的识别

    一.前言 大家好,不知不觉的我来csdn已经又一周年了,在这一年里,我收获了很多东西,我是2022年2月22日入驻CSDN的,一开始只是为了方便浏览文章的,后来,我也有事没事发发文章,创作了100多篇 ...

最新文章

  1. docker启动odoo提示module没有安装_Windows Server 2019上的Docker 入门
  2. Java编程详细解析—淘宝大秒杀系统是如何设计的?
  3. 使用pos标记寻找三词短语
  4. 微信小程序实战–集阅读与电影于一体的小程序项目(八)
  5. [Objective-c 基础 - 1.3] OC带返回值的类方法
  6. lightoj1259 线性筛的另一种写法 v变成bool标记数组
  7. MySQL去除查询结果重复值
  8. 考勤系统java_基于java开发的考勤管理系统
  9. mac录制视频——OBS
  10. 河源戴尔服务器型号,【河源DELL(戴尔)磁盘阵列】河源DELL(戴尔)磁盘阵列报价及图片大全-列表版-ZOL中关村在线...
  11. azure mysql on vnet_管理 VNet 终结点 - Azure CLI - Azure Database for MySQL | Microsoft Docs
  12. MATLAB 过时了吗?
  13. DFINITY 明星项目盘点,区块链热门赛道一览
  14. 号码认证平台有哪些?号码认证平台费用?
  15. 昵图网显示内部服务器错误,为什么博客老是显示网页错误?无法正常打开
  16. 共享单车上的智能锁,做出来有多难?
  17. 医院排队叫号系统源码 医院系统源码 医院源码
  18. 端口隔离port-isolate(二层隔离)
  19. ECharts饼图lengend点击事件处理
  20. android获取多媒体库的视频、音频、图片

热门文章

  1. Android 游戏破解修改金币
  2. windows_7_ultimate_with_sp1_x64位旗舰版
  3. 运维校招面经汇总(来源牛客网)
  4. 【收藏】前端开发必备:前端开发不得不收藏的网站,提高200%开发效率!
  5. CSS优先级权重练习
  6. javascript实现水果抽奖机
  7. 这样的设计,美不胜收——多方案住宅设计
  8. vue css 拖拽,vue----拖拽小方块
  9. 火车头采集,wordpress特色图如何设置?
  10. MySQL:排序(filesort)详细解析(8000字长文)