selenium破解数字验证码
搞了半天,总算弄出来了,识别率还可以,普通的数字验证码
from selenium import webdriver
from PIL import Image
import pytesseract
import PIL.ImageOps
import time driver = webdriver.Chrome() url = ''
driver.implicitly_wait(10)
driver.get(url)
driver.find_element_by_xpath('//*[@id="1_5"]').click() # 点击第三个
driver.find_element_by_xpath('//*[@id="4_organname"]').send_keys('代理') # 输入代理 driver.save_screenshot('f.jpg') # 获取网页的截图
imgelement = driver.find_element_by_id('cx5') # 通过id定位验证码
location = imgelement.location # 获取验证码的x,y轴
size = imgelement.size # 获取验证码的长宽
rangle = (int(location['x']),
int(location['y']),
int(location['x']) + size['width'],
int(location['y']) + size['height'],) # 我们需要截取的验证码坐标 i = Image.open('f.jpg')#整张网页
verifycodeimage = i.crop(rangle) # 从网页截图截取验证码区域
verifycodeimage.save('f2.jpg')
im = Image.open('f2.jpg')#验证码区域
im.show() #、二值化处理 # 二值化是图像分割的一种常用方法。在二值化图象的时候把大于某个临界灰度值的像素灰度设为灰度极大值,
# 把小于这个值的像素灰度设为灰度极小值,从而实现二值化(一般设置为0-1)。根据阈值选取的不同,二值化的算法分为固定阈值和自适应阈值,
# 这里选用比较简单的固定阈值。把像素点大于阈值的设置,1,小于阈值的设置为0。生成一张查找表,再调用point()进行映射。
def initTable(threshold=140):
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
return table im = im.convert('L')#转换为灰色图像
binaryImage = im.point(initTable(), '')
im1 = binaryImage.convert('L')
im2 = PIL.ImageOps.invert(im1)
im3 = im2.convert('')
im4 = im3.convert('L')
# 将图片中字符裁剪保留
box = (5, 2, 57, 17)#这个参数改了半天 第一个参数是放大右边的,第二个是放大下边的,第三个参数是左右的大小,数越大越往左边缩,最后一个参数是上下的大小,数越大越往上面缩
region = im4.crop(box) # 将图片字符放大 out = region.resize((120, 38)) testdata_dir_config = '--tessdata-dir "C:\\Program Files\\Tesseract-OCR\\tessdata"' out.show() asd = pytesseract.image_to_string(out, config=testdata_dir_config) # 拿到验证码 textcode = asd.replace(' ', '') # 过滤空格 print(textcode) time.sleep(2) driver.find_element_by_xpath('//*[@id="valcode4"]').send_keys(textcode) # 输入验证码 driver.find_element_by_xpath('//*[@id="tab_1_5"]/ul/li[4]/img[1]').click() # 点击查询
selenium破解数字验证码的更多相关文章
- 使用 Python+Selenium 破解滑块验证码
开发工具 Python版本:3.6.4 相关模块: pillow模块: selenium模块: numpy模块: 以及一些Python自带的模块. 其他: chromedriver 环境搭建 安装 ...
- 使用Python + Selenium破解滑块验证码
在前面一篇博客<使用 Python + Selenium 打造浏览器爬虫>中,我介绍了 Selenium 的基本用法和爬虫开发过程中经常使用的一些小技巧,利用这些写出一个浏览器爬虫已经完全 ...
- selenium来识别数字验证码
用python写一爬虫,需要模拟登陆,并且有数字验证码.通过selenium+pytesseract+PIL可以实现验证码识别并登陆.三大步: 用selenium截屏,此时截取的是整个页面的 用PIL ...
- Keras入门(四)之利用CNN模型轻松破解网站验证码
项目简介 在之前的文章keras入门(三)搭建CNN模型破解网站验证码中,笔者介绍介绍了如何用Keras来搭建CNN模型来破解网站的验证码,其中验证码含有字母和数字. 让我们一起回顾一下那篇文 ...
- 使用tesseract-ocr破解网站验证码
首先我得承认,关注tesseract-ocr, 是冲着下面这篇文章的噱头去的,26行groovy代码破解网站验证码 http://www.kellyrob99.com/blog/2010/03/14/ ...
- 使用深度学习来破解 captcha 验证码(转)
使用深度学习来破解 captcha 验证码 本项目会通过 Keras 搭建一个深度卷积神经网络来识别 captcha 验证码,建议使用显卡来运行该项目. 下面的可视化代码都是在 jupyter not ...
- python+selenium破解极验验证登录
1.前言: 目前很多网站会在正常的账号密码认证之外加一些验证码,以此来明确区分人/机行为,最典型的就是极验滑动验证.(如下图) 这里我们以简单实例说明如何实现自动校验类似验证. 2.步骤: 1)点击验 ...
- 文字识别还能这样用?通过Python做文字识别到破解图片验证码
前期准备 1. 安装包,直接在终端上输入pip指令即可: # 发送浏览器请求 pip3 install requests # 文字识别 pip3 install pytesseract # 图片处理 ...
- 用imagemagick和tesseract-ocr破解简单验证码
用imagemagick和tesseract-ocr破解简单验证码 Tesseract-ocr据说辨识程度是世界排名第三,可谓神器啊. 准备工作: 1.安装tesseract-ocr sudo apt ...
随机推荐
- Nexus 5 刷机 - Android 5.0 Lollipop
Nexus刷机 : 官方地址 刷机步骤 下载相应的安装包 连接USB 重启手机,进入BootLoader界面 : 使用命令 adb reboot bootloader 关机; 音量键下 + 电源键 ...
- [Tips] Resolve error: server certificate verification failed.
# sympton: piaoger@piaoger-ubuntu:~/w/temp$ git clone https://mygit/solidmcp/solidmcp.gitCloning int ...
- Reducing the Dimensionality of Data with Neural Networks
****************内容加密中********************
- Tensorflow之改变tensor形状
https://www.tensorflow.org/versions/r0.12/api_docs/python/array_ops.html#reshape 例子: # tensor 't' is ...
- Apollo 刨析:简介
Apollo是配置在IIS服务器上的一个Web站点,它使用了.NET4.0和ASP.Net的技术. 代码是C#编写的.是基于ASP.NET MVC3的Web开发框架上编写的一个应用. 它使用到了N ...
- web html 防盗链
一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来 ...
- HtmlEncode
String.prototype.toHtmlEncode = function() { var str = this; str=str.replace("&"," ...
- HBase的多节点集群详细启动步骤(3或5节点)(分为Zookeeper自带还是外装)
HBase的多节点集群详细启动步骤(3或5节点)分为: 1.HBASE_MANAGES_ZK的默认值是false(zookeeper外装)(推荐) 2.HBASE_MANAGES_ZK的默认值是tru ...
- iOS-如何读取Plist文件
解决办法: // 1) 找到Plist文件的路径 "path" NSString *path = [[NSBundle mainBundle]pathForResource:@&q ...
- Http服务器实现文件上传与下载(一)
一.引言 大家都知道web编程的协议就是http协议,称为超文本传输协议.在J2EE中我们可以很快的实现一个Web工程,但在C++中就不是非常的迅速,原因无非就是底层的socket网络编写需要自己完成 ...