爬虫 | 破解APP中阿里云滑动验证码

点击“Python编程与实战”,选择“置顶公众号”

第一时间获取 Python 技术干货!


考虑这样一个场景,当你在app端提交订单/登录的时候有一个滑动验证码怎么处理?

一般我们会采用自动化浏览器完成这样的抓取,但是效率太低。本篇文章尝试将滑动验证码和抓取的代码进行解耦。

也就是滑动验证码模块只管获取滑动之后的token,而抓取的代码只管抓取。中间通过相关存储介质进行通讯。

背景分析

通过各种尝试发现,某app中阿里云的滑动验证码只是操作行为的验证。

简而言之,就是阿里云只是知道有人滑了验证码,并且此验证码并没有被使用过。

通过分析和尝试,我们完全可以有一个自动化浏览器去滑动生成未使用过的token,然后通过python读取token完成相关抓取。

这样相当于有个滑动验证码池,其他的业务需要的话可以直接读取使用。

准备知识

puppeteer破解阿里h5滑动验证码

chrome远程调试webview(https://developers.google.cn/web/tools/chrome-devtools/remote-debugging/webviews?hl=zh-cn)

流程分析

使用puppeteer生成未使用过的滑动验证码,并把相关信息拦截,存起来。python读取滑动验证码池,完成相关抓取。

效果展示

核心代码

puppeteer 通过监听response事件,把response的内容存起来

page.on('response',async response=>{
        let url = response.url()
        if (url.indexOf('analyze.jsonp')!==-1){
            let  content = await response.text()
            if(content.indexOf('block')===-1){
                let  file_name = "slide/"+process.pid +Date.now()+".txt"
 
                 fs.writeFile(file_name,content+url,{encoding:'utf-8',mode:'0666'},function (err) {
                    console.log(err)
                })
 
            }
        }
    })

python读取存储的token

滑动验证码的token有3个字段,分别是csessionid,value,t(t的格式是xxx:时间戳:随机数)

后记

写这篇文章是为了解决我在app中遇到阿里云滑动验证码的问题,在群友的提醒下,发现阿里云app端的滑动验证码是个h5。

这样的话,有一个专门的自动化浏览器不断获得验证码,而我之前逆向出来的app接口还能继续使用,也不枉一份辛苦。

作者:阳光下的小树

https://me.youkuaiyun.com/u013356254

推荐阅读

继续送书,无套路送书,每周都送!

全面拥抱FastApi—三大参数及验证

THANKS

- End -

点个“在看”必升职加薪喔!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全村之希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值