Python selenium自动化模拟12306登录 验证码识别 滑动滑块

模拟12306登录

验证码识别平台

本次选择超级鹰
https://www.chaojiying.com/
12306 验证码识别 价格体系
在这里插入图片描述
注册充值之后生成软件id(一元即可)
在这里插入图片描述
下载官方demo
在这里插入图片描述
官方demo.py

#!/usr/bin/env python
# coding:utf-8

import requests
from hashlib import md5


class Chaojiying_Client(object):

    def __init__(self, username, password, soft_id):
        self.username = username
        password = password.encode('utf8')
        self.password = md5(password).hexdigest()
        self.soft_id = soft_id
        self.base_params = {
   
            'user': self.username,
            'pass2': self.password,
            'softid': self.soft_id,
        }
        self.headers = {
   
            'Connection': 'Keep-Alive',
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
        }

    def PostPic(self, im, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
   
            'codetype': codetype,
        }
        params.update(self.base_params)
        files = {
   'userfile': ('ccc.jpg', im)}
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php',
                          data=params, files=files, headers=self.headers)
        return r.json()

    def ReportError(self, im_id):
        """
        im_id:报错题目的图片ID
        """
        params = {
   
            'id': im_id,
        }
        params.update(self.base_params)
        r = requests.post(
            'http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
        return r.json()


if __name__ == '__main__':
    chao
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
### 回答1: Python Selenium可以通过模拟鼠标滑动的方式来识别滑动验证码。具体实现方法可以参考以下步骤: 1. 使用Selenium打开网页并定位到包含滑动验证码的页面。 2. 利用Selenium的find_element_by_xpath()方法定位到验证码的滑块元素和背景图片元素。 3. 利用Selenium的ActionChains类模拟鼠标滑动操作,将滑块元素拖动到背景图片元素的位置。 4. 判断是否成功通过验证码验证,如果验证成功则继续进行后续操作,否则重新进行验证码识别。 需要注意的是,滑动验证码的实现方式可能因网站而异,因此具体实现方法需要根据实际情况进行调整。 ### 回答2: Python Selenium是一种自动化测试工具,可以用于控制浏览器执行自动化操作,比如滑动验证码识别滑动验证码通常是用于网站的登陆、注册等操作,通过鼠标模拟人手在滑动拼图或滑动滑块,达到人机交互的效果。在自动化测试中,如果能够识别滑动验证码,就可以实现完全自动化,提高效率。下面将介绍如何使用Python Selenium进行滑动验证码识别。 首先,需要安装Python3.x环境和Selenium库,可以通过pip install selenium命令进行安装。同时,还需要下载Chrome浏览器和对应的ChromeDriver,可以在官网下载,或者使用pip install chromedriver-binary命令安装。 1. 首先,需要定位滑块和背景图片。使用Selenium中的find_element_by_xpath方法或find_element_by_css_selector方法,根据网页源代码中的滑动拼图或滑动滑块的html标签和属性进行定位。同时,需要获取到背景图片的url。 2. 使用Python中的requests库获取背景图片,并将其保存到本地。根据所在位置的XPath表达式或CSS选择器,获取滑块滑块背景的定位参数。 3. 使用Pillow库加载图片,并用crop方法获取到滑块的图片,并用convert方法将图片转换成灰度图片。 4. 判断图片的边缘信息,使用Sobel算子检测像素的边缘信息,通过循环或递归,找出图像中各个切割线的位置。 5. 根据切割线的位置计算出滑块需要滑动的距离,并使用Selenium中的ActionChains类,模拟鼠标移动和滑动操作,使其滑动到正确的位置。 以上就是Python Selenium滑动验证码识别的主要方法和步骤。需要注意的是,滑块验证码一般采用了加密算法和图像处理技术,为防止自动化操作,可能经过多次变换和加密,同时还有可能加入噪声干扰。因此,需要根据实际情况,灵活运用Python的图像处理、机器学习和深度学习等技术,提高验证码的识别率和稳定性。 ### 回答3: 近年来,网站安全性越来越高,许多网站为了避免机器人恶意攻击,采用了滑动验证码。与传统的验证码相比,滑动验证码安全性更高,更难被攻击者破解。但是,这也给爬虫程序带来了困难。Python Selenium是一款非常出色的自动化测试工具,可以用来模拟浏览器行为,也可以用于爬虫。那么,如何利用Python Selenium实现滑动验证码识别呢? 在滑动验证码识别中,可以采取以下一些方案。 第一种: 使用第三方平台 目前,市面上有很多第三方平台可以识别验证码,例如:云打码、Python Tesseract等,这些平台可以帮助我们完成验证码的识别过程。在使用这些平台时,需要先在该平台进行注册,获得API key后再通过Python Selenium调用API进行验证码的输入和识别。 第二种: 随机滑动并比对结果 另外一种解决方案是,随机化模拟用户滑动,并比对结果。这种方法需要在页面加载完成后,获取验证码图片,并使用Python的Pillow库进行处理。处理完成后,可以随机模拟用户滑动,然后比对滑块位置是否正确。当验证通过时,继续模拟其他操作即可。 第三种: 内容识别并自动滑动 第三种方案是,利用Python的图像识别库,如OpenCV、PIL等,在页面加载完成后,对验证码图片进行特征提取,然后通过算法自动计算出正确的滑块位置,并模拟用户滑动。 总的来说,三种方案各有优缺点,不同的方案适用于不同的验证码,具体选择哪种方案,需要综合考虑多方面的因素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值