• Python用代码实现验证码登录


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

    经常会遇到需要模拟手工操作输入验证的时候,也看了很多的方法,最后想了一下,决定写一个识别图像验证码的脚本。
    其实也就是将有图形验证码的页面截图下来,在使用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:PICPIC.png') #将该页面截图保存
    path = r'D:PICPIC.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())

  • 相关阅读:
    对弈类游戏的人工智能(5)--2048游戏AI的解读
    对弈类游戏的人工智能(4)--游戏AI的落地
    对弈类游戏的人工智能(3)--博弈树优化
    对弈类游戏的人工智能(2)--学习算法
    java.awt.headless 模式
    SpringBoot启动过程分析
    SpringBoot入门之内嵌Tomcat配置
    git tag的用法
    SpringBoot程序远程debug
    SpringBoot入门之分散配置
  • 原文地址:https://www.cnblogs.com/iris-jingjing/p/12410703.html
Copyright © 2020-2023  润新知