您的位置:首页 > 编程语言 > Python开发

Python用代码实现验证码登录

2019-04-10 16:03 288 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_40539525/article/details/89185834

由于自己的工作需要,经常会用到这种需要输入图形验证码的登录,网上也有很多方式。

经常会遇到需要模拟手工操作输入验证的时候,也看了很多的方法,最后想了一下,决定写一个识别图像验证码的脚本。
其实也就是将有图形验证码的页面截图下来,在使用Python的PIL库将验证码识别成可操作的对象。
代码如下:

# -*- coding: UTF-8 -*_
from PIL import Image
from pytesseract import *
import PIL.ImageOps
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url) #url是你的网址

driver.get_screenshot_as_file(r'D:\PIC\PIC.png') #将该页面截图保存
path = r'D:\PIC\PIC.png'

#导入有验证码的图片
im1 = Image.open(path)
#图片的宽度和高度
img_size = im1.size
print("图片宽度和高度分别是{}".format(img_size))
'''
裁剪:传入一个元组作为参数
元组里的元素分别是:(距离图片左边界距离x, 距离图片上边界距离y,距离图片左边界距离+裁剪框宽度x+w,距离图片上边界距离+裁剪框高度y+h)
'''
#截取图片中一块有验证码的区域,这个位置需要自己去调整
x = 1311
y = 459
w = 115
h = 52
region = im1.crop((x, y, x + w, y + h))
region.save("D:/PIC/test1.png")#保存

def initTable(threshold=140):
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
return table
im = Image.open('G:/PIC/test1.png')
#图片的处理过程
im = im.convert('L')
binaryImage = im.point(initTable(), '1')
im1 = binaryImage.convert('L')
im2 = PIL.ImageOps.invert(im1)
im3 = im2.convert('1')
im4 = im3.convert('L')
#将图片中字符裁剪保留
box = (10,10,110,48)
region = im.crop(box)
#将图片字符放大
out = region.resize((128,49))
code = pytesseract.image_to_string(out)#code就是图形中的验证码
print(code)
#print (out.show())
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: