使用pytesseract实现自动验证码

对图片进行二值化处理

import pytesseract
from PIL import Image

def shibie(image):
    # 打开图片
    img = Image.open(image)
    # 图片转化为灰度图片
    img = img.convert('L')

    # 二值化处理
    threshold = 140
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    out = img.point(table, '1')

    img = img.convert('RGB')

    return pytesseract.image_to_string(img)

实现代码

import requests
from bs4 import BeautifulSoup
import time

# 创建一个会话
from shibie import shibie

s = requests.Session()

i = 1
while 1:
    # 将验证码写入到本地
    get_url = 'https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36',
    }
    r_get = s.get(url=get_url,headers=headers)
    # 通过bs4得到图片
    soup = BeautifulSoup(r_get.text, 'lxml')
    image_src = 'https://so.gushiwen.org' + soup.find('img',id='imgCode')['src']
    # 通过会话进行请求
    r_img = s.get(image_src)
    # 将图片写到文件中
    with open('code.png','wb') as fq:
        fq.write(r_img.content)

    # 获取两个隐藏值
    viewstate = soup.find('input', id='__VIEWSTATE')['value']
    viewg = soup.find('input',id='__VIEWSTATEGENERATOR')['value']

    post_url = 'https://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx'

    # 调用函数 自动识别
    code = shibie('code.png')

    data = {
        '__VIEWSTATE': viewstate,
        '__VIEWSTATEGENERATOR': viewg,
        'from': 'http://so.gushiwen.org/user/collect.aspx',
        'email': '123456@qq.com',
        'pwd': '123456',
        'code': code,
        'denglu': '登录',
    }

    r_post = s.post(url=post_url,headers=headers,data=data)

    # 判断是否登陆成功
    if '退出登录' in r_post.text:
        print('登陆成功')
        break

    print('第%s次登陆失败' % i)
    i += 1
    time.sleep(2)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,060评论 3 119
  • 24店6月任务500.第一阶段完成121件,第二阶段190件.平均每天19件,大单1个,分享单10个,助理孟婷婷6...
    滕跃A阅读 789评论 0 0
  • (一)几乎所有的不良习性,都会打着特立独行的幌子,都以所谓的个性立世。若不对其保持高度的警觉,并及时对之加以纠正,...
    渔夫镕谷阅读 2,444评论 2 24
  • 2009年高三平安夜之时,因为急性肠胃炎+低血糖,在去厕所的路上眼前一黑,扑倒在地,嘴唇、两颗大门牙和硬邦邦的水泥...
    莹莹乐道阅读 2,720评论 0 1
  • 生向死 得向失 循环的轨迹一圈又一圈 那些从你身边跑过的人 在前或后 和你脚步一样的那个人 寻了好久 总是错过 走...
    沉欢阅读 1,468评论 0 0

友情链接更多精彩内容