Selenium处理验证码

devtools/2024/10/23 5:13:30/

一.验证码的作用 :

防止恶意破解密码、刷票、论坛灌水、刷页。有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,现在也用于反爬虫 风控这块

二.常见验证码

    1. 字符验证码:

       计算机随机产生4-6位的字符串 (数字字母组成)可能会增加难度(干扰线 噪点 重叠 变形)

       需要输入和验证码一样的内容才能成功

    2. 滑动验证码:

       行为验证 需要拖动滑块到缺口位置  滑动图片进行拼图

    3. 点选(点触)验证码:

      根据答案在图片上依次点击对应答案内容

三.处理方式


    1. 协议处理(先不管):

     一般有加密 需要逆向 然后进行图片处理和 图片识别

     2. 自动化处理(也适用协议处理):

         不需要管加密字段 只需要识别图片
        也适用协议处理

  •        处理方式1:休眠+人工过验证码
  •        处理方法2:训练模型(不推荐)或者用现成的OCR识别图片
  • python"># pip install  ddddocr
    import ddddocrwith open('demo.png', 'rb')as f:img = f.read()
    ddd_ = ddddocr.DdddOcr()  # 实例化# 字符验证码识别
    print(ddd_.classification(img))
    

  •        处理方法3:借助打码平台【14:1.33】
  • python">'''需求模拟登录超级鹰平台 处理字符验证码步骤1:  访问登录页面 https://www.chaojiying.com/user/login/2:  定位账号密码输入框  输入账号密码3:  使用打码平台识别验证码的图片4:  输入验证码 点击登录
    '''
    import time
    from selenium import webdriver#  推荐 把超级鹰的demo代码 放到整个项目的根路径
    from Chaojiying_Python.chaojiying import Chaojiying_Clientbrowser = webdriver.Chrome()
    # 1:  访问登录页面 https://www.chaojiying.com/user/login/
    browser.get('https://www.chaojiying.com/user/login/')
    # 2:  定位账号密码输入框  输入账号密码
    browser.find_element_by_name('user').send_keys('nanfeng123')
    time.sleep(1)
    browser.find_element_by_name('pass').send_keys('nanfeng')
    # 3:  使用打码平台识别验证码的图片
    # 要识别 肯定先要有这个图片
    element = browser.find_element_by_xpath('//form[@name="fm2"]/div/img')
    element.screenshot('chaojiying.png')  # 元素.screenshot  对当前元素截图
    chaojiying = Chaojiying_Client('nanfeng123', 'nanfeng', '963747')
    im = open('chaojiying.png', 'rb').read()
    code = chaojiying.PostPic(im, 1902)['pic_str']  # 取出pic_str的值
    print(code)# 4:  输入验证码 点击登录
    browser.find_element_by_name('imgtxt').send_keys(code) # 输入验证码结果
    browser.find_element_by_class_name('login_form_input_submit').click()

  •        打码平台:你将验证码发给打码平台 打码平台返回验证码结果给你

       打码平台很多  用自己钟意的就行


http://www.ppmy.cn/devtools/128067.html

相关文章

高级SQL技巧:掌握数据分析与优化的艺术

SQL(Structured Query Language)是一种强大的工具,用于管理和查询关系型数据库。在日常的数据操作中,许多人可能已经掌握了基本的查询语句,例如 SELECT、INSERT、UPDATE 和 DELETE,但对于更复杂的数据需求和…

Zookeeper面试整理-源码及实现细节

Zookeeper 的源码和实现细节是理解其高可用性、分布式一致性和高效性的关键。以下是 Zookeeper 的核心实现细节,涵盖其架构、关键模块、以及具体的代码实现机制。 1. Zookeeper 架构 Zookeeper 采用 Leader-Follower 架构,集群由多个节点组成。主要分为三种角色:Leader、Fol…

WebForms Hashtable

WebForms Hashtable 在Web开发领域,尤其是使用ASP.NET WebForms进行开发时,Hashtable 是一个经常被使用的集合类型。Hashtable 是一个存储键值对的集合,它允许开发者以任意对象作为键或值。这种数据结构在处理动态数据、缓存、以及需要快速查…

Docker学习笔记(3) - Docker命令

1. 帮助命令 docker version # 显示docker版本信息 docker info # 显示docker系统信息,包括镜像和容器 docker 命令 --help # 帮助命令2. 镜像命令 docker images # 查看本地主机上的镜像# 搜索镜像 docker search 镜像名称 # 搜索镜像 #…

大数据之hadoop(hdfs部分)

1.引入:为什么需要分布式存储? 一个服务器能存入海量数据吗?显然是不能,所以构建分布式解决了存入问题.多台服务器的协调工作也是性能的横向扩展. 总结: 1.数据量太大,单机存储能力有上限,需要靠数量来解决问题 2.数量的提升带来的是网络传输、磁盘读…

Maven高级

Maven 是一款构建和管理 Java 项目的工具。 Maven高级内容包括: 分模块设计与开发 继承与聚合 私服 1.分模块设计与开发 1.1介绍 所谓分模块设计,顾名思义指的就是我们在设计一个 Java 项目的时候,将一个 Java 项目拆分成多个模块进行开发。 1). 未…

【Golang】国内接入stripe支付

前言 接入了airswift支付,又来接stripe支付,真是被折腾的够呛。虽然整体流程是一样的,每个支付方式的逻辑和代码都有差异,希望自己的代码帮助大家少浪费时间 支付流程 1、客户端到服务器下订单,服务器向支付服务下支…

C++ 进阶:类相关特性的深入探讨

⭐在对C 中类的6个默认成员函数有了初步了解之后,现在我们进行对类相关特性的深入探讨! 🔥🔥🔥【C】类的默认成员函数:深入剖析与应用(上) 【C】类的默认成员函数:深入剖…