python selenium+PIL+免验证码登陆
来源:互联网 发布:上海淘宝运营助理招聘 编辑:程序博客网 时间:2024/06/07 18:38
最近在学习python的验证码处理这一块,学了点,想着做个小实践,在这里,我找了一个网址来模拟一键登录过程。
首先来放一下动图感受一下:
O(∩_∩)O哈哈~,当时刚做完的时候觉得好神奇的样子,小白级别,心情望请谅解~~
首先,所需工具如下:
1. Python 3.6
2. IDE Pycharm 5.0.3
3. 谷歌浏览器:47.0.1
4. Selenium PIL
5. pytesseract
如果学过一点python爬虫的童靴,在输入验证码之前肯定都是没问题的,在输入验证码这一块,我是采取了先对整个页面进行截屏,然后截取含有验证码的图片,进行识别,将识别的字母及数字插入到验证码输入那一栏。那么难点就是如果确定截取含有验证码图片的坐标,下面将来详细说明:
将截屏的图保存到本地,然后用电脑自带的附件–>画图打开,指针呈十字虚状,当鼠标在页面移动的时候,页面左下角对应的像素也一直在改变,然后将鼠标指针停留在验证码图片的左上角,此时记下页面左下角对应的像素值,即我们要截取图片的左上角的坐标,对应box=(x1,y1,x2,y2),对应x1和y1的值,如图(一),
再然后将鼠标指针停留在验证码图片的右下角,此时记下页面左下角对应的像素值,即我们所要截取图片的右下角的坐标,对应box=(x1,y1,x2,y2),对应x2和y2的值,如图(二)
然后对截取的图片进行识别,用pytesseract库中的image_to_string函数进行识别即可,最后附上完整代码:
# usr/bin/env/python# -*- coding:utf-8 -*-# time:2017/12/01__author__ = 'LazyGirl_81'from selenium import webdriverimport pytesseractfrom PIL import Imagedriver = webdriver.Chrome()driver.get('http://pay.hust.edu.cn')name = driver.find_element_by_id("txt_yhm")name.send_keys("M201571151")mima = driver.find_element_by_id('txt_pwd')mima.send_keys("06641X")driver.get_screenshot_as_file('image1.png')im = Image.open('image1.png')box = (1155,477,1265,527)region = im.crop(box)region.save("image2.jpg")code_text = pytesseract.image_to_string(Image.open('image2.jpg'), lang='chi_sim')code = driver.find_element_by_id("txt_yzm")code.send_keys(code_text)denglu = driver.find_element_by_id('ImageButton1')denglu.click()
因为做这个一时兴起,做了做就拿来写了,在此处也没考虑说如果验证码识别错误了之后的做法,所以这个代码是需要完善的,后续自己会补充上去,也希望路过的大神多多指教。
- python selenium+PIL+免验证码登陆
- Python + PIL 图片验证码
- Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录
- Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录
- python利用selenium获取cookie实现免登陆
- selenium python 验证码
- PIL(Python Image Library)生成验证码
- 在Python中用PIL做验证码
- Python入门:PIL之验证码破解
- python+ PIL 生成验证码图片
- ssh免登陆验证
- selenium模拟登陆时截取验证码
- Python: Window 64位 Python 使用PIL && 验证码生成
- Python的PIL库实现验证码图片
- Python的PIL库实现验证码图片
- Python学习常用第三方模块:PIL,生成验证码
- python 使用tesseract-ocr , pytesseract , PIL进行验证码识别
- python基于PIL和tesseract的验证码识别
- CentOS命令—客户端安装
- JZOJsenior3541.【清华集训2014】破冰派对
- 等比矩阵求和超简法及其python代码10行实现
- spring-boot+Java8
- extern
- python selenium+PIL+免验证码登陆
- Leetcode解题笔记 5.Longest Palindromic Substring [Medium] 动态规划解法
- 学习分布式缓存技术Redis系列(总序)
- openvr_survivor第二期开发活动:VR畸变
- Sqoop导入与导出底层
- Docker Kubernetes1.5.2集群环境搭建(CentOS)
- CPPAN:C++ 档案网络
- STM32存储器结构
- Struts2学习