【爬虫】实验项目三:验证码处理与识别

这篇具有很好参考价值的文章主要介绍了【爬虫】实验项目三:验证码处理与识别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、实验目的

二、实验预习提示

三、实验内容

实验要求

基本要求:

改进要求A:

改进要求B:

四、实验过程

基本要求

五、源码如下

六、资料


一、实验目的

        部分网站可能会使用验证机制来阻止用户无效登录或者是验证用户不是用程序控制访问网站的,如 reCAPTCHA 系统。本次实验主要针对常见的验证机制:验证码进行分析和识别,这里可以使用传统和OCR技术或者基于神经网络的机器学习技术。

二、实验预习提示

        1、为Python安装Selenium、PyQuery库,安装Chrome和对应ChromeDriver(见实验一)

        2、为Python安装深度机器学习库和图像处理库:pytorch,python-opencv

        3、为Python安装OCR库:Python第三方模块tesserocr安装 - 寒爵 - 博客园 (cnblogs.com)

注意:TESSDATA_PREFIX变量应该是包含tessdata子目录

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

三、实验内容

        登录网站1:https://captcha7.scrape.center

        登录网站2:https://captcha8.scrape.center

        使用图像识别库或者训练过的神经网络模型对登录网站1的验证码进行识别,然后把识别结果用代码填入,然后再进行登录,用户名和密码都是:admin

实验要求

基本要求

        使用一个合适的技术将登录网站1的验证码进行识别,并由代码自动登录。注意事项:所有信息必须由代码自动填入并且自动操作,无需人工填入任何信息或使用人工交互。

改进要求A

        在完成基本要求的基础上,

        选项一:实现登录网站2的模拟登录,注意事项见基本要求

        选项二:实现对于带有验证登录方式(如验证码,滑动条,拼图,语序点击,空间推理,图文点击等)的常见网站。

改进要求B

        在完成基本要求的基础上,训练一个神经网络模型使得在给出测试集上准确率至少达到80%以上。框架代码:DeepLearningImageCaptcha-master.zip,测试集:dataset.zip


四、实验过程

基本要求

该实验可以从以下几个步骤执行

1. 打开游览器,打开对应网站

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

2. 获取用户名密码输入框并赋值

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

3. 获取验证码

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

4. 处理验证码

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

        这里使用了ocr的升级版ddddocr , 为了提高识别验证码的精度,这里还用了正则表达式,替换掉验证码开头的符号(有时候会出现)

5. 获取验证码输入框并赋值

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

6. 获取登录按钮并点击登录

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

7. 登录成功与失败

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

        如果登录成功就1s后关闭游览器,否则清空验证码输入框,获取心得验证码,继续登录,直到登录成功为止。

8. 控制台输出

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

        总结:实验前期利用 Tesserocr 识别验证码的过程并将其应用于实战案例中实现了模拟登录。为了提高 Tesserocr 的识别准确率,可以对验证码图像进行预处理去除一些干扰,识别准确率会大大提高;但最后还是转入它的升级版ddddocr。

五、源码如下

import re
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium import webdriver
import ddddocr

DDDDOCR_DDDD_OCR = ddddocr.DdddOcr()


# 验证码处理
def codeDispose(v_code):
    ocr = DDDDOCR_DDDD_OCR
    res = ocr.classification(v_code.screenshot_as_png)
    # 验证码前面非字母数字 用空格替换
    res = re.sub('[^A-Za-z0-9]', '', res)
    return res


def login():
    # 打开游览器
    driver = webdriver.Chrome()
    driver.get("https://captcha7.scrape.center/")
    # 获取用户名密码输入框并赋值
    driver.find_element(By.CSS_SELECTOR, '.username input').send_keys('admin')
    driver.find_element(By.CSS_SELECTOR, '.password input').send_keys('admin')

    def code():
        # 获取验证码
        v_code = driver.find_element(By.ID, value='captcha')
        v_code.click()  # 刷新验证码
        print("未处理的验证码", v_code)
        v_code = codeDispose(v_code)  # 处理验证码
        print("输入验证码:", v_code)
        # 获取验证码输入框并赋值
        driver.find_element(By.CSS_SELECTOR, '.captcha input').send_keys(v_code)
        time.sleep(1)
        # 获取登录按钮并点击
        driver.find_element(By.CSS_SELECTOR, '.login').click()
        try:
            WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//h2[contains(.,"登录成功")]')))
            time.sleep(1)
            # 登录成功自动关闭游览器
            driver.close()
            print("登录成功")
        except Exception as err:
            print(f"登录失败:{err}")
            # 清空输入框
            driver.find_element(By.CSS_SELECTOR, '.captcha input').clear()
            print('成功清空输入框')
            code()  # 再次登录

    code()


if __name__ == '__main__':
    login()

六、资料

1. 实验框架代码:

import tesserocr
from PIL import Image
import numpy as np
image = Image.open('code.png')
# 方式1
result = tesserocr.image_to_text(image)
print(result)  # ‘PFRT.

# 方式2
print(tesserocr.file_to_text('code.png')) # ‘PFRT.
# 转为数组
print(np.array(image).shape)
print(image.mode)

code.png 如下: 

【爬虫】实验项目三:验证码处理与识别,爬虫,验证码处理与识别,tesserocr,PIL,selenium,python,ddddocr

2. 免费GPU训练资源

        Google Colab

3. 实验小提示

        也可以使用打码平台API的调用完成验证码识别。


        恭喜你成功地学完了我的所有爬虫内容!希望你已经获得了有用的信息和技巧,并且能够将其应用到实践中。如果有任何问题或疑虑,请随时与我联系。祝你好运!


实战源码:Python网络爬虫实战文章来源地址https://www.toymoban.com/news/detail-689017.html

到了这里,关于【爬虫】实验项目三:验证码处理与识别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 爬虫日常-selenium登录12306,绕过验证

    hello兄弟们,这里是无聊的网友。愉快的周末过去了,欢迎回到学习频道。书接上文,我们说到了再用selenium登录12306时遇到了滑块验证的问题。当前的网站几乎每家都会在登录模块添加一个认证,来规避各种爬虫,而我们则不断的去想办法绕过这些验证模块。目前一些简单的

    2024年02月07日
    浏览(44)
  • 爬虫-selenium自动化(3)-验证码

    #验证码分很多种,奇葩也无处不在:哪个是真茅台,红绿灯,摩托车......(我是个人都看不出来) (๑ó﹏ò๑) #本节内容为selenium自动化实现验证码通过-------字符验证码,点触验证码。            

    2024年01月21日
    浏览(39)
  • 爬虫识别验证码技术 - 2Captcha

    验证码(CAPTCHA),全称为\\\"Completely Automated Public Turing test to tell Computers and Humans Apart\\\",是一种区分用户是计算机还是人的公共全自动程序。最初,验证码主要是一些混杂字母和数字的图片,但随着技术的发展,出现了更多种类的验证码,例如reCAPTCHA、GeeTest拼图验证码、hCaptc

    2024年02月16日
    浏览(37)
  • 爬虫笔记--Selenium实现有验证码网站模拟登录

    代码如下: 一点说明: 安利个巨好用的识别验证码的库 ddddocr gitHub:https://github.com/sml2h3/ddddocr 可能会在版本上遇到问题,我的报错参考这篇文档解决:https://blog.csdn.net/zhuchengchengct/article/details/124854199 我用的版本作为参考:python是3.9.13,ddddocr是1.4.2 如有问题,欢迎大家批评

    2024年02月16日
    浏览(38)
  • Python爬虫技术系列-05字符验证码识别

    OCR(Optical Character Recognition,光学字符识别)是指使用扫描仪或数码相机对文本资料进行扫描成图像文件,然后对图像文件进行分析处理,自动识别获取文字信息及版面信息的软件。一般情况下,对于字符型验证码的识别流程如下:主要过程可以分解为五个步骤: 图片清理 ,

    2024年02月04日
    浏览(44)
  • selenium爬虫|破解滑动验证码以极验为例

      爬虫访问一些网站遇到滑动验证码解决方案 这里是用selenium做模拟,如果是requests可以封装这个登录方法来获取登录后的cookies也是可以用的。 1 先讲思路,分析流程  我们输入账号密码后点击登录 ,出现的是第一张图的状态。我们要做的是模拟滑动到缺口处。 首先我们要

    2024年02月14日
    浏览(40)
  • selenium截取特定区域图片识别验证码

    参考大佬链接 Selenium 自动化截取网页指定区域

    2024年04月15日
    浏览(40)
  • 【爬虫】8.1. 使用OCR技术识别图形验证码

    图形验证码是最早出现的验证方式,现在依然很常见,一般由4位左右的字母或者数字组成。本章节使用的网站时https://captcha7.scrape.center/,这个网站的验证码相对来说比较平整,没有过多的干扰线和干扰点,文字也没有大幅度的变形和旋转,因此比较好作为案例进行分析,对

    2024年02月09日
    浏览(36)
  • Selenium工具:图片验证码识别技术(小白技术)

    前言 有人开发了一个识别图片验证码的工具库ddddocr,原来题主之前有讲过,遇到这种问题就放弃或者协商,去识别存在一定开发成本或者是错误成本,毕竟正确率并没有达到100,即使是ddddocr,只有万能验证码或者不校验才是万全之策,如果它需要在生产环境运行呢?那就不

    2024年02月13日
    浏览(61)
  • 〖Python网络爬虫实战㉞〗- 图形验证码OCR识别

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+ python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明 作者:爱吃饼干的小白鼠。Python领域优质创作者,20

    2024年02月10日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包