论如何破解腾讯滑块验证码

简介: 论如何破解腾讯滑块验证码

title: 论如何破解腾讯滑块验证码
date: 2020-04-10 21:19:57.0
updated: 2020-09-27 21:55:33.0
url: https://www.ufec.cn/archives/4.html
thumbnail: https://ghproxy.com/https://raw.githubusercontent.com/ufec/picGoImg/main/blog/2020/04/timg-97d283f09f9f4ddc896ea6ea715b2380.webp
categories:

  • 代码

tags:

  • Python
  • 爬虫开发

实现缘由

学校要求每天要提交个什么健康信息收集表,交就交,每天数据没啥变化,这腾讯文档还不能保存选择(就算状况有变,个人基本信息不会变,非得要重新填,小程序里历史记录点一下页面就会重新置顶,又得拉下去填,真的烦),于是这个小项目就诞生了

实现思路

  1. Python 模拟登陆
  2. 获取 cookie
  3. 构造发送数据
  4. 接口发送数据
  5. 创建定时器,定时执行

遇到问题

1、腾讯滑块验证码的问题,腾讯滑块验证码应该是有过一次更新机制,看到网上帖子,是说获取原图与有验证图作比较,得出具体位置,现在的验证码没有原图,只有滑块和缺陷图,上述方法也就失效了
1.webp
经过爬贴后,看到一个方法,对缺陷图中的轮廓进行提取,据说可在 95%以上,但这也有个问题,如上图所示,如果直接截图拼图区域(280*161),进行识别,就不会成功,猜测是像素不够,获取图片链接,下载原图(680*390)就可以识别;接下来算出比例、滑块图初始位置,比较计算即可算出滑块需要移动的距离。正当对滑块图初始位置无从下手之时,F12 得到了答案
2.webp
经过不断刷新(穷举所有图片),发现所有初始值均为 22px,这就简单多了,另外轮廓距最左端距离比例大概是 0.43
那么距离就是 x(原图轮廓距左端距离)*0.43-22 即可,而且腾讯这个没有速度检测机制,不需要考虑模拟人工,0.1s 都是可以的,为了保险起见,建议放慢

2、运行期间部分报错
使用定时器时后,报了一个如下错误

出自博客园: https://www.cnblogs.com/ALXPS/p/10193296.html
RuntimeError: There is no current event loop in thread

查找资料得知,asyncio(协程)程序中的每个线程都有自己的事件循环,但它只会在主线程中为你自动创建一个事件循环。所以如果你 asyncio.get_event_loop 在主线程中调用一次,它将自动创建一个循环对象并将其设置为默认值,但是如果你在一个子线程中再次调用它,你会得到这个错误。相反,您需要在线程启动时显式创建/设置事件循环:

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)

使用 pyppeteer 时候,报了一个类似如下的错误:

出自 stackoverflow: https://url.cn/5ReagPN
handler = _signal.signal(_enum_to_int(signalnum),_enum_to_int(handler))
ValueError: signal only works in main thread.

需要在禁用信号处理的情况下调用启动,实例 browser 对象时,增加如下参数:

'handleSIGINT' : False,
'handleSIGTERM' : False,
'handleSIGHUP' : False

lib 库缺失类错误:
libXtst 库

error while loading shared libraries: libXtst.so.6: cannot open shared object file: No such file or directory
yum list available | grep libXtst #查找对应版本
yum install libXtst.i686 #一般不用选devel这种版本的即可

libXss

error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory

解决方案

yum install libXss #我装这一个好像还不行,
sudo dnf install libXScrnSaver #这两个都装就可以了

libasound

error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory

解决方案

sudo yum install alsa-lib

libatk-bridge

error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory

解决方案

yum install at-spi2-atk -y

libgtk-3

error while loading shared libraries: libgtk-3.so.0: cannot open shared object file: No such file or directory

解决方案

yum install gtk3

通用解决方案:https://pkgs.org/download/ + 缺失 lib 库名,如:
https://pkgs.org/download/libatk-bridge-2.0.so.0
选择对应操作系统即可

识别代码

def get_pos(imgpath):
    image = cv.imread(imgpath)
    blurred = cv.GaussianBlur(image, (5, 5), 0)
    canny = cv.Canny(blurred, 200, 400)
    contours, hierarchy = cv.findContours(canny, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
    for i, contour in enumerate(contours):
        M = cv.moments(contour)
        if M['m00'] == 0:
            cx = cy = 0
        else:
            cx, cy = M['m10'] / M['m00'], M['m01'] / M['m00']
        if 6000 < cv.contourArea(contour) < 8000 and 370 < cv.arcLength(contour, True) < 390:
            if cx < 400:
                continue
            x, y, w, h = cv.boundingRect(contour)  # 外接矩形
            cv.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
            return x
    return 0

写在结尾

其他的基本也就没啥了,主要没找到具体的识别代码,有需要的可以参考,其他问题基本百度都有,CSDN、博客园、思否等等多看看。学习爬虫可以看看崔庆才的爬虫教学
QQ图片20200410212544.webp
查看《52 讲轻松搞定网络爬虫》目录

目录
相关文章
|
7月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
417 0
|
数据采集 前端开发 开发者
滑动拼图验证码的原理和破解方法~
滑动拼图验证码的原理和破解方法~
2591 0
滑动拼图验证码的原理和破解方法~
|
安全 开发工具 Python
滑动拼图验证,摆脱烦人的验证码输入
你最近是否遇到过令人头疼的验证码?为何不让滑动拼图成为你的新选择呢?通过完成一个有趣的滑动拼图来验证你的身份,既能锻炼大脑,又能保护你的隐私。
滑动拼图验证,摆脱烦人的验证码输入
|
安全 机器人 网络安全
安全防线加固,文字点选验证码来帮忙
为了确保网络安全,我们网站采用了文字点选验证码来验证用户身份。文字点选验证码是一种简单而有效的验证机制,通过要求用户点击相关图像来区分真实用户和机器人。它不仅可以防止恶意攻击,还能提供用户友好的验证体验。
|
数据安全/隐私保护
stegano(图片隐写、摩斯密码)
stegano(图片隐写、摩斯密码)
110 0
|
安全 PHP 开发工具
注册登录首选,趣味滑块验证码
注册登录账户时,保障账户安全是首要任务!使用趣味滑块验证码,既能有效防御恶意攻击,又能为验证过程增添一丝乐趣。让注册和登录变得更加有趣又安全!
|
安全 开发工具 UED
告别验证码烦恼,轻松完成文字点选验证
文字点选验证码,作为一种创新的验证方式,正在逐渐取代传统的输入文字或数字的验证方式,为用户带来了更简单、直观的验证体验。它通过点击包含特定文字或物体的图片来完成验证,摆脱了繁琐的输入过程,让用户告别验证码的烦恼。
|
运维 机器人 API
细数验证码的N种生成方式
验证码(CAPTCHA)是一种用于确定网站或应用程序使用者是否为人类的技术。它通常由一组图像或数字组成,用户需要输入正确的内容才能通过验证。验证码被广泛用于防止自动化脚本或机器人攻击,以确保用户是真正的人类。
460 0
细数验证码的N种生成方式
|
安全 网络安全 UED
要想破解验证码,就得从了解开始!
最近在研究验证码安全,本文就来介绍四种流行的验证码(滑动拼图、文字点选、语序点选、空间推理),写这篇文章的出发点并非是想绕过或破解验证码,而是根据自身业务情况来选择对应的验证码类型。
要想破解验证码,就得从了解开始!
|
Web App开发 存储 数据采集
如何破解极验滑动验证码?成功率 100%!
或许你没听说过极验[1],但你很大可能使用过极验的产品。极验是首家「行为式验证」安全技术服务提供商,并以提供验证码服务而闻名。我们日常会登录一些网站,有的网站登录前需要校验验证码,而这个验证码服务很可能就是极验提供的。
3666 1
如何破解极验滑动验证码?成功率 100%!