本篇就针对哔哩哔哩的滑动验证码进行讲解和破解
先说一下个人观点:本人作为一个爬虫老鸟,如果只是为了使用,非常建议使用第三方服务,为什么呢,来听我细细分析,
首先,你需要有大量的数据,然后再有一个不错的主机用于训练,再然后,就是需要你有高数的底子,如果这三个都有,并且学习了机器学习,你才可以勉强破解滑动验证码,并且不敢保证自己训练的准确度,
这就是我推荐使用第三方接口的原因,因为第三方接口就是专门做这类机器学习的,它们有强大的人力物力专门做破解各种验证码,并且识别率非常高,现在一般都是90%以上,价格还香,何乐不为了,自己做是头发掉的少还是加不够多
当然,并不是说我不让学习机器学习,毕竟现在是一个人工智能时代,如果已有不错的数学基础,并且有很强大兴趣,在工作之余,可以入坑机器学习的,毕竟趋势如此,
本人的观点是,如果是爬虫遇到了滑动验证码,直接使用第三方平台,如果你很有兴趣,继续需坑机器学习,
根据本人测试,是目前识别率最高的平台,价格还行,3美元几百次吧
En....我们这里不需要selenium,2captcha打码平台很神奇,我们只需要requests模块就可以啦,
既然我们选择了第三方平台,我们务必要看一下人家的文档,下面我们就2captcha平台的极验破解,看一下人家的操作
首先打开人家官网
嗯...纯英文,我也看不懂..怎么办呢,别着急,我带你们一步一步分析主要功能
红色圈起来的地方表示剩余多少钱,没有钱的话记得要氪金,否则是不能用滴,氪金过程这里就不多做解释了哈,问题不大
蓝色圈起来的地方表示这是你的唯一key,每次请求要带上这个key的,所以要保管好
进入主题,研究文档
点击红色圈的地方,API,一般API都是文档,let'sgo
En....什么玩意..完全看不懂,别慌,往下滑
滑动到Rates,我们能看到一个列表,我们要解决的就是极验(GeeTest),所以我们只看GeeTest就好了
点击GeeTest
Go
好了,已经懵逼了,但是,怕什么,我们有翻译!!!
这里大概整理一下它的意思
在目标网站上,我们寻找一下gt,challenge,api_server三个东西,我们切换到哔哩哔哩找一下
我们点击network,刷新网页,重新加载所有请求,crtl+f,搜索challenge,竟然发现
combine这个接口返回的是这个
点击Elements,按ctrl+shift+f全局搜索一下,搜索initGeetest
还真有一个,我们点进去看看
还真有这个,我们打上断点,再次刷新,匹配一下是否和network里的一样
上面是断点的值,下面是network的值,至少看着一样的,我们至少可以确定,有很大关系
至少我们确定了两个值,gt和challenge,还差一个api_server
红色圈起来的地方就表示是api_server,基本参数都找齐了
刚才我们也说了,参数都找齐了,那我们就该请求打码平台了
Ok,我们来请求一下
这样,我们就拿到了gt,challenge
我们请求一下打码平台的接口,带上自己参数
打码平台需要请求两次,第一次返回的是任务ID,第二次才是滑动模块的成功值
注:challenge是动态的,其他的是静态的
API_KEY是打码平台的key
两个函数,我们就成功的拿到了打码平台返回的值
经过不断的断点,不断地断点.....终于确定了,密码会经过这个函数进行加密,它本质是RSA非对称加密听着就吓人,不慌,盘它,
这个函数逻辑是先请求//passport.bilbilli.com/loginact=get&r="",带上一个随机数,然后会返回一个随机hash,和一个公钥key
公钥key是固定的,然后将随机hash和密码进行加密,发送后他后,后台进行解密
破解代码
通过上述两个函数,就模拟出了密码,最后,最后,我们只需要拼接所有参数,请求一下就ok了
如果账号密码错误
如果账号密码正确
第一个表示跳转的url,第二个是返回的cookie,以后我们想干什么,只需要带着这个cookie就好了