大家做爬虫的时候肯定会遇到很多验证码列如本文所指的图像识别:

 我在爬取拉勾网的时候过于频繁被跳转到了验证系统,真是令人头大

url=安全访问验证-拉勾网https://sec.lagou.com/verify.html?e=2&f=https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=

我们需要先点击这里的验证按钮之后就会直接跳出图像验证码,在识别完成之后点击确认就会直接进去到职位页面

ok,我们先把前面代码写好

from  selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver import ChromeOptions   #这个包用来规避被检测的风险
import time  #延迟
from chaojiying import Chaojiying_Client
from selenium.webdriver import ActionChains  #动作链option = webdriver.ChromeOptions()
option.add_experimental_option('useAutomationExtension', False)
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver_path = r'驱动的路径'  # 定义好路径
driver = webdriver.Chrome(executable_path=driver_path,options=option)  # 初始化路径+规避检测
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""
})def register():driver.get('https://sec.lagou.com/verify.html?e=2&f=https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=')

那么这里我们就先找到元素位置在用selenium模拟点击,可以看到是在//a[@class="btn"]' 这个标签下

verification = driver.find_element_by_xpath('//a[@class="btn"]').click()time.sleep(2)

模拟点击之后去获取验证码所在的区域,然后在去截图此区域这里要写两步哈原因嘛后面在说

这里还需要导入超级鹰,如果不了解的小伙伴可以看我写的另外一篇文章

(21条消息) 超级鹰的使用方式_m0_59874815的博客-CSDN博客https://blog.csdn.net/m0_59874815/article/details/121007373?spm=1001.2014.3001.5501

这里补充说明一点因为所有的电脑屏幕大小不同缩放也不一样,所以截图的时候要设置偏移量(不然截图出来不完整),我这里的话我因为懒得计算偏移量了所以我直接在系统里面设置了分辨率为百分百

 code_img=driver.find_element_by_xpath('//div[@class="geetest_widget"]')  #获取验证码位置code_imgs=driver.find_element_by_xpath('//div[@class="geetest_widget"]').screenshot_as_png  #截图验证码区域chaojiying = Chaojiying_Client('超级鹰账号', '超级鹰密码', '软件id')  # 超级鹰账号result=chaojiying.PostPic(code_imgs,9008)['pic_str']kk = driver.find_element_by_xpath('//div[@class="geetest_commit_tip"]')  #点击确认按钮

通过超级鹰的识别可以看到返回的坐标是以 | 分割的那我们就给它提取出来并且放入一个列表

all_list=[]   #存储即将要点击点的坐标global xif '|' in result:list_1=result.split('|')count_1=len(list_1)for i in range(count_1):xy_list=[]x=int(list_1[i].split(',')[0])y = int(list_1[i].split(',')[1])xy_list.append(x)xy_list.append(y)all_list.append(xy_list)else:x = int(list_1[i].split(',')[0])y = int(list_1[i].split(',')[1])xy_list = []xy_list.append(x)xy_list.append(y)all_list.append(xy_list)#遍历列表,使用动作链对每一个列表元素对应的x,y指定的位置点击操作print(all_list)

接下来我们需要遍历列表,使用动作链对每一个列表元素对应的x,y指定位置点击

 for l in all_list:x=l[0]y=l[1]ActionChains(driver).move_to_element_with_offset(code_img,x,y).click().perform()   #(这里面传入的是参照物也就是验证码的位置,x,y(xy是坐标))time.sleep(0.5)  #这里让他没隔0.5秒点击一次time.sleep(2)  kk.click()   #点击确认按钮

可以看到这里()我传入的是code_img这个,如果说开始的时候我们直接获取位置然后截图省略了一段代码这里在传入的话就会报错,所以截图和获取位置需要写两段分开来,后续测试也是能通过拉勾的验证系统就是吧识别率会低一些(这个没办法啦,图片太模糊了有时候的图片我自己都看不懂)

完整代码如下:

from  selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver import ChromeOptions   #这个包用来规避被检测的风险
import time  #延迟
from chaojiying import Chaojiying_Client
from selenium.webdriver import ActionChains  #动作链option = webdriver.ChromeOptions()
option.add_experimental_option('useAutomationExtension', False)
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver_path = r'驱动的路径'  # 定义好路径
driver = webdriver.Chrome(executable_path=driver_path,options=option)  # 初始化路径+规避检测
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""
})def register():driver.get('https://sec.lagou.com/verify.html?e=2&f=https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=')verification = driver.find_element_by_xpath('//a[@class="btn"]').click()time.sleep(2)code_img=driver.find_element_by_xpath('//div[@class="geetest_widget"]')  #获取验证码位置code_imgs=driver.find_element_by_xpath('//div[@class="geetest_widget"]').screenshot_as_png  #截图验证码区域chaojiying = Chaojiying_Client('超级鹰账号', '超级鹰密码', '软件ID')  # 超级鹰账号result=chaojiying.PostPic(code_imgs,9008)['pic_str']kk = driver.find_element_by_xpath('//div[@class="geetest_commit_tip"]')  #点击确认按钮print(result)all_list=[]   #存储即将要点击点的坐标global xif '|' in result:list_1=result.split('|')count_1=len(list_1)for i in range(count_1):xy_list=[]x=int(list_1[i].split(',')[0])y = int(list_1[i].split(',')[1])xy_list.append(x)xy_list.append(y)all_list.append(xy_list)else:x = int(list_1[i].split(',')[0])y = int(list_1[i].split(',')[1])xy_list = []xy_list.append(x)xy_list.append(y)all_list.append(xy_list)#遍历列表,使用动作链对每一个列表元素对应的x,y指定的位置点击操作print(all_list)for l in all_list:x=l[0]y=l[1]ActionChains(driver).move_to_element_with_offset(code_img,x,y).click().perform()   #(这里面传入的是参照物也就是验证码的位置,x,y(xy是坐标))time.sleep(0.5) #每次点击间隔0.5秒time.sleep(2)kk.click()  #点击确认按钮if __name__ == '__main__':register()

本文仅限于做技术交流学习,请勿用作任何非法用途!

使用python+selenium超级鹰破解图像识别验证码相关推荐

  1. python反爬虫应对之借助平台超级鹰突破网页验证码识别

    在爬虫过程中,有些网页需要登录才能获取里面的数据,在大部分的登录过程中,都会需要一个叫验证码识别,目前的网页有各种各样的验证码,有数字加字母的组合,有物品识别等等 在代码进行网页爬取过程中,如果由人为 ...

  2. Python使用网络抓包的方式,利用超级鹰平台识别验证码登录爬取古诗文网、上篇--识别验证码

    Python使用网络抓包的方式,利用超级鹰平台识别验证码登录,<爬取古诗文网>. 上篇–识别验证码 序言: 哈喽,各位小可爱们,我又来了,这次我新学习到的内容是python爬虫识别验证码. ...

  3. 『python爬虫』26. selenium与超级鹰处理复杂验证码的处理(保姆级图文)

    目录 1. 图片选择类验证码 2. 滑块验证码 3. 滑块出错,不加载 总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 1. 图片选择类验证码 ...

  4. selenium 超级鹰 通过携程滑块和汉字验证码

    大概流程 1.进入页面点击同意按钮. 2.得到滑块和滑块区域的xpath 3.定位滑块,设置按住事件,进行拖动 4.xpath定位汉字图片,获取屏幕截图,保存本地 5.超级鹰识别图片返回汉字对应的坐标 ...

  5. 模拟登录12306(selenium+超级鹰)

    最近迷上了用selenium去登陆各大网站,别说selenium真挺好用,可以轻松搞定ajax动态加载的网页,不用很费劲的去抓包查找.咳咳-跑题了,回归正题. 这次用selenium去登录12306网 ...

  6. 【python+selenium】点触文字验证码的识别

    效果示例 预·思路 要做的并不多,封装类,方法各司其职!验证的关键部位(文字坐标)交给第三方平台: 以国家企业信用信息公示系统网站为例,点击查询就会产生验证界面! selenium控制浏览器进入页面, ...

  7. python补充超级鹰代码

    因为我写的是固定的路径,所以超级鹰py文件必须与豆瓣爬虫路径一致,这里我在豆瓣的py文件,调用了result222函数 与这一篇共同使用--https://mp.csdn.net/postedit/8 ...

  8. python+selenium+pytesseract实现自动识别简单验证码,并且自动登陆网站

    文章目录 功能介绍 首先安装需要的库 编写代码 功能介绍 本文章实现自动识别验证码并且自动登陆网站,完全不需要人工操作 Python版本:3.6 Selenium:selenium 是一个用于 Web ...

  9. 作为一只Python爬虫:如何破解滑动验证码

    做爬虫总会遇到各种各样的反爬限制,反爬的第一道防线往往在登录就出现了,为了限制爬虫自动登录,各家使出了浑身解数,所谓道高一尺魔高一丈. 今天分享个如何简单处理滑动图片的验证码的案例. 类似这种拖动滑块 ...

  10. 用Python 爬虫,如何破解谷歌验证码?

    ReCAPTCHA 介绍 可能大家还没听说过什么是 ReCAPTCHA,可能由于某些原因,这个验证码在国内出现不多,不过想必大家应该多多少少见过或用过.它长这个样子: 这时候,只要我们点击最前面的复选 ...

最新文章

  1. Redis队列的应用
  2. 机器学习:信用风险评估评分卡建模方法及原理
  3. 開始Unity3D的学习之旅
  4. WindowsAzurePack Updata1VMM12R2SPF
  5. python边缘检测代码_Python中的边缘检测
  6. Elasticsearch检索分类详解
  7. 最新SparkSQL 学习路径. pdf(廖雪峰团队研发)
  8. 7 SDImageCache
  9. ant design pro(二)布局
  10. linux下无法创建组
  11. 转动惯量与惯性矩(截面)比较
  12. 软件测试(敏捷开发、迭代模型)
  13. Blender 基础操作
  14. 磁盘smart错误日志重点关注信息
  15. 国标GB/T28181协议下EasyGBS互联网无插件视频播放器起播慢或延迟高问题解决方案
  16. 2019BNUZ_ACM国庆欢乐赛题解
  17. HtmlCss光标(插入符caret)透明隐藏光标 221106笔记
  18. 微信又更新了,这次新增了一个大家喜闻乐见的新功能?
  19. 国泰航空免费赠送11万余张出境机票,海外目的地包括美国、加拿大、英国、法国等...
  20. SecureCRT的下载安装

热门文章

  1. 第三章 基于QT和DCMTK的Dicom 图像浏览器---单个Dicom图像读取类
  2. C语言作业练习1:输入一个数判断是否为素数
  3. 湖北省湖泊河流ArcGIS地形图shp图层文件下载
  4. bootstrap插件bootbox参数
  5. Behavior Designer 行为树中文版教程
  6. mysql jemalloc_Jemalloc优化MySQL和Nginx
  7. PX4开源软件框架简明简介
  8. PX4Flow使用操作
  9. VS2013配置OpenGL
  10. NiFi ListSFTP精讲