iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >pytesseract+mechanize识别验证码自动登陆
  • 507
分享到

pytesseract+mechanize识别验证码自动登陆

验证码pytesseractmechanize 2023-01-30 22:01:33 507人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

pytesseract+mechanize识别验证码自动登陆需要的模块安装Pillow,Python平台的图像处理标准库pip install pillow安装pytesseract,文字识别库pip inst

pytesseract+mechanize识别验证码自动登陆

需要的模块

安装Pillow,Python平台的图像处理标准库

pip install pillow


安装pytesseract,文字识别库

pip install pytesseract


安装tesseract-ocr,识别引擎

windows:

https://digi.bib.uni-mannheim.de/tesseract/

下载

tesseract-ocr-setup-3.05.02 或者 tesseract-ocr-setup-4.0.0-alpha


linux:

github上面下载对应版本

https://github.com/tesseract-ocr/tesseract


遇到问题及解决:

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path


解决方法:(我是win环境)

找到tesseract-ocr安装目录,复制路径如:  C:\Program Files (x86)\Tesseract-OCR\tesseract.exe

找到pytesseract.py文件,修改tesseract_cmd的路径,如下:


blob.png


安装mechanize,是一个 Python 模块,用于模拟浏览器

pip install mechanize



程序思路:

1.首先打开目标网站,找到验证码的图片地址,并下载下来

2.利用pytesseract识别出图片中的验证码(想要识别率高,可训练)并返回一个str结果

3.使用mechanize模拟登陆,找到fORM表单,提交账号,密码,验证码等信息

4.登陆成功,然后爬取想要的内容


需要爬取的网站

blob.png


完整代码:

#!/usr/bin/env pythoncoding: utf-8
import mechanize
import sys
from bs4 import BeautifulSoup
from PIL import Image
import pytesseract

# py2.7声明使用utf-8编码
reload(sys)
sys.setdefaultencoding('utf-8')


class Item(object):  # 定义一个Item类,爬取的字段类
    landing_name = None  # 登陆账号
    landing_time = None  # 登陆时间


class SimulateLogin(object):
    def __init__(self, url, username, passWord, img_url):
        # 初始化
        self.url = url            # 模拟登陆后台地址
        self.img_url = img_url    # 验证码下载地址
        self.username = username  # 账号
        self.password = password  # 密码
        self.bs4_filter()

    def mechanize_setting(self):
        # 打开浏览器
        br = mechanize.Browser()

        # 设置浏览器
        br.set_handle_equiv(True)
        br.set_handle_redirect(True)
        br.set_handle_referer(True)
        br.set_handle_robots(False)
        br.set_handle_gzip(False)

        # Follows refresh 0 but not hangs on refresh > 0
        br.set_handle_refresh(mechanize._Http.HTTPRefreshProcessor(), max_time=1)

        # 设置user-agent
        br.addheaders = [('User-agent','Mozilla/5.0 (X11; U; linux i686; en-US; rv:1.9.0.1) Gecko/2008071615
         Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
        return br

    def login(self):  # 模拟登陆函数
        br = self.mechanize_setting()
        self.img_download(br)
        vf_code = self.img_to_str()
        br.open(self.url)
        # 打印form表单需要提交的信息
        for form in br.forms():
            print(form)
        # 注意:
        # post 指的是请求方式
        # TextControl(username=)对应的是账号
        # PasswordControl(password=)对应的是密码
        # TextControl(captcha=)对应的是验证码
        try:
            br.select_form(method='post')
            br.form['username'] = self.username
            br.form['password'] = self.password
            br.form['captcha'] = vf_code
            br.submit()
        except Exception as e:
            print('form表信息填写错误:%s' % e)
        else:
            ret = br.response().read()
            return ret

    def img_download(self, br):  # 下载验证码
        img = br.open(self.img_url)
        with open('1.jpg', 'wb') as f:
            f.write(img.read())

    def bs4_filter(self):  # 登陆成功后,爬取内容
        items = []
        ret = self.login()
        # 利用bs4 获取登陆成功后的一些信息
        soup = BeautifulSoup(ret, 'lxml')
        print(soup)  # 这里的返回值已经提示登陆成功了

    def initTable(self, threshold=140):
        # 二值化函数
        table = []
        for i in range(256):
            if i < threshold:
                table.append(0)
            else:
                table.append(1)
        return table

    def img_to_str(self):  # 验证码识别(数字+字母组合),return一个识别成功的string
        # 替换列表--识别错误率高的手动添加进来,替换掉
        rep = {'O': '0', 'I': '1', 'Z': '2', "'": '', 'S': '8', 'R': 'A',
               'n': 'M', 'P': 'f', 'M': 'n',
               }
        images = Image.open("1.jpg")
        im = images.convert('L')
        binaryImage = im.point(self.initTable(), '1')
        text = pytesseract.image_to_string(binaryImage, config='-psm 7')
        for r in rep:
            text = text.replace(r, rep[r])
        vf_code = text.encode('utf-8')
        print('Pytesseract验证码识别:%s' % vf_code)
        return vf_code


if __name__ == '__main__':
    url = '目标后台登陆地址'
    img_url = '目标随机验证码地址'  # 会自动下载图片并识别,成功率大概50%左右,可自行训练提高准确率
    username = '账号'
    password = '密码'
    SimulateLogin(url, username, password, img_url)


运行代码:

blob.png

--结束END--

本文标题: pytesseract+mechanize识别验证码自动登陆

本文链接: https://www.lsjlt.com/news/179155.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pytesseract+mechanize识别验证码自动登陆
    pytesseract+mechanize识别验证码自动登陆需要的模块安装Pillow,Python平台的图像处理标准库pip install pillow安装pytesseract,文字识别库pip inst...
    99+
    2023-01-30
    验证码 pytesseract mechanize
  • Selenium&Pytesseract模拟登录+验证码识别
    验证码是爬虫需要解决的问题,因为很多网站的数据是需要登录成功后才可以获取的.验证码识别,即图片识别,很多人都有误区,觉得这是爬虫方面的知识,其实是不对的.验证码识别涉及到的知识:人工智能,模式识别,机器视觉,图像处理.主要流程:1 图像采集...
    99+
    2023-01-30
    验证码 Selenium Pytesseract
  • Python+Pillow+Pytesseract实现验证码识别
    目录一、环境配置二、验证码识别实例1实例2实例3昨天十行代码实现文字识别,感觉怎样,是不是很爽 今天咋们继续利用pillow和pytesseract来实现验证码的识别 一、环境配置 ...
    99+
    2024-04-02
  • Python+Selenium+Pytesseract实现图片验证码识别
    目录一、selenium截取验证码二、安装识别环境pytesseract+Tesseract-OCR验证识别环境是否正常三、处理验证码图片图片处理识别一、selenium截取验证码 ...
    99+
    2024-04-02
  • Python+Pillow+Pytesseract怎么实现验证码识别
    这篇“Python+Pillow+Pytesseract怎么实现验证码识别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Py...
    99+
    2023-06-30
  • Python+Selenium+Pytesseract怎么实现图片验证码识别
    这篇文章给大家介绍Python+Selenium+Pytesseract怎么实现图片验证码识别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、selenium截取验证码import jsonfrom&nbs...
    99+
    2023-06-26
  • python自动化操作之动态验证码、滑动验证码的降噪和识别
    目录前言一、动态验证码 二、滑动验证码三、验证码的降噪四、验证码的识别总结前言 python对动态验证码、滑动验证码的降噪和识别,在各种自动化操作中,我们经常要遇到沿跳过验...
    99+
    2024-04-02
  • Python免费验证码识别之ddddocr识别OCR自动库实现
    目录安装过程:完成之后,找个参考图片附ddddocr-验证码识别案例总结需要ocr识别,推荐一个Python免费的验证码识别-ddddocr 安装过程: 1、镜像安装:pip in...
    99+
    2024-04-02
  • Python通用验证码识别OCR库之ddddocr验证码识别
    目录前言传统验证码滑动验证码文字点选验证码总结前言 相信做自动化测试的同学一定不可忽视的问题就是验证码,他几乎是一个网站登录的标配,当然,我一般是不建议在这上面浪费时间去做识别的。 ...
    99+
    2024-04-02
  • 亚马逊登陆验证码
    1. 什么是亚马逊登陆验证码? 亚马逊登陆验证码是一种安全措施,用于保护用户的账户免受未经授权的访问。当您尝试登陆亚马逊账户时,系统会要求您输入验证码,以确认您是合法的用户。 2. 为什么需要亚马逊登陆验证码? 亚马逊登陆验证码的目的是增...
    99+
    2023-10-27
    亚马逊 验证码
  • python简单验证码识别
    在学习python通过接口自动登录网站时,用户名密码、cookies、headers都好解决但是在碰到验证码这个时就有点棘手了;于是通过网上看贴,看官网完成了对简单验证码的识别,如果是复杂的请看大神的贴这里解决不了; 以上两张为网站的上...
    99+
    2023-01-31
    验证码 简单 python
  • python 验证码识别库pytesse
    笔者环境 centos7 python3 pytesseract只是tesseract-ocr的一种实现接口。所以要先安装tesseract-ocr(大名鼎鼎的开源的OCR识别引擎)。   依赖安装 yum install-y auto...
    99+
    2023-01-30
    验证码 python pytesse
  • layui实现登陆界面验证码
    本文实例为大家分享了layui实现登陆界面验证码的具体代码,供大家参考,具体内容如下 效果图: html: <div class="layui-form-item">...
    99+
    2024-04-02
  • nodejs不需要登陆的验证码
    随着互联网的发展,验证码已经成为了保障网站安全的一个重要工具。很多网站在用户进行敏感操作、注册、登录等操作时都需要输入验证码,以防止恶意程序和机器人攻击,保证网站的安全性和真实性。然而,在一些场景下,为了提高用户体验和操作便利性,需要提供一...
    99+
    2023-05-14
  • 如何使用Python实现极验验证码识别验证码
    这篇“如何使用Python实现极验验证码识别验证码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用Python实现极验...
    99+
    2023-07-05
  • python怎么通过pillow识别动态验证码
    这篇文章主要讲解了“python怎么通过pillow识别动态验证码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么通过pillow识别动态验证码”吧!生活中,我们在登录微博,邮...
    99+
    2023-06-21
  • Python教学|Python验证码识别
    大致介绍 在python爬虫爬取某些网站的验证码的时候可能会遇到验证码识别的问题,现在的验证码大多分为四类: 计算验证码 滑块验证码 识图验证码 语音验证码 这篇博客主要写的就是识图验证码,识别的是简...
    99+
    2023-09-01
    python opencv 开发语言
  • SpringBoot实现滑块验证码验证登陆校验功能详解
    目录前言一、实现效果二、实现思路三、实现步骤1. 后端 java 代码1.1 新建一个拼图验证码类1.2 新建一个拼图验证码工具类1.3 新建一个 service 类1.4 新建一个...
    99+
    2024-04-02
  • Selenium模拟登陆百度(带验证码)
    利用Selenium模拟登陆解决验证码的问题验证码解决方案有很多种:1  通过第三方的打码平台,识别率高...一般都是收费的,价格还不便宜2  自己通过切图,再结合图片识别的库,去识别验证码... 简单的验证码识别率还可...
    99+
    2023-01-30
    验证码 Selenium
  • python爬虫之利用selenium+opencv识别滑动验证并模拟登陆知乎功能
    滑动验证距离 分别获取验证码背景图和滑块图两张照片,然后利用opencv库,通过高斯模糊和Canny算法进行处理,然后通过matchTemplate方法进行两张图的匹配,获得滑动距离...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作