/1 前言/php
昨天我发布了Python大佬手把手带你破解哔哩哔哩网滑动验证(上篇),没有来得及学习破解理论的小伙伴能够戳进去看看噢!今天这篇文章,咱们直接进行讲解哔哩哔哩极验破解,重点进行方法实现。python
本篇文章主要是针对哔哩哔哩的滑动验证码进行破解。git
/2 打码参数获取/github
一、根据上篇文章的总结,咱们须要在目标网站(哔哩哔哩)上找到gt,challenge,api_server这三个参数,因此咱们如今切换到哔哩哔哩找一下。web
二、咱们打开浏览器,点击哔哩哔哩网页的network,刷新网页,从新加载全部请求,以后使用crtl+f快捷键,迅速搜索challenge,以下图所示。api
三、经过上图咱们能够看到,能够找到那个参数,可是究竟是不是这个呢?放心,人家2captcha文档说了,一般能够在initGeetest发现它。咱们再尝试查找一下,点击Elements,而后使用快捷键ctrl+shift+f全局搜索一下,搜索initGeetest,以下图所示。浏览器
四、如上图所示,还真有一个,咱们点进去看看详情。cookie
能够看到在829行的位置,还真的有initGeetest这个值。咱们在这里打上断点,再次刷新看看,匹配一下是否和network里的一致。app
五、首先,咱们看看断点对应的值,点进去看看详情,以下图所示。能够看到gt和challenge这两个参数对应的值。ide
六、接下来再看看network里边对应的值,咱们点进去看看详情。
诶,至少这两个地方的值看着同样的,咱们能够肯定,他们之间确定有很大关系。到目前为止,咱们已经肯定了两个值,即gt和challenge,还差一个api_server,继续往下进行。
七、接下来咱们随便输入帐号密码点击登陆一下,触发一下极验,在elements元素中,搜索api_server,以下图所示。
上图中红色框框圈起来的地方表示的就是api_server。至此,基本工做已经完成了。
/3 具体实现/
一、在第二节中,咱们已经找到了打码请求参数,找齐参数以后,接下来咱们就该请求打码平台了。
二、在前面已经说到,在network中,请求连接https://passport.bilibili.com/web/captcha/combine?plat=11就能够得到gt,challenge,外加一个key,便可发送请求了,部分代码以下所示。
这样,咱们就拿到了gt和challenge。
完整的代码,我会放到后面的github连接,以为不错的话,记得给个star噢!
三、接下来咱们请求一下打码平台的接口,带上本身参数。可是须要注意的是打码平台须要请求两次,第一次返回的是任务ID,第二次才是滑动模块的成功值。
注:challenge是动态的,其余的是静态的;API_KEY是打码平台的key,在上篇文章开头介绍说起的那个key。
四、经过两个函数,咱们就成功的拿到了打码平台返回的值。
五、下图中红色圈起来的,就是破解极验的第一个关键参数,这个参数拿到以后,就已经跟人家打码平台不要紧啦!咱们只须要带着相关参数,登陆哔哩哔哩就行了。
六、可是这个参数要往哪发呢?在network通过一番查找后,彷佛发现一个和登陆有关的接口,以下图所示。
经过上图,咱们能够看到,红色框圈起来的部分,正是2captcha平台返回给咱们的数据;而那个key值正是 ...combine?plat=11这个url返回的key。就是password,进行了加密,那么他是如何加密的呢?一块儿来看看
七、以下图所示,通过不断的断点,不断的断点...终于肯定了,密码会通过这个函数进行加密,它本质是 RSA非对称加密,听着就吓人,不过不要慌,盘它就是了。
这个函数逻辑是先请求一个//passport.bilbilli.com/login?act=get&r="",这个url,带上一个随机数,而后会返回一个随机hash,和一个公钥key,公钥key是固定的,而后将随机hash和密码进行加密,发送给它后,后台进行解密。
八、破解代码部分以下图所示。
经过上述两个函数,就模拟出了密码,最后,咱们只须要提交到后台就能够了。
/4 示例效果/
一、若是帐号或者密码错误的话,将会有以下图的提示。
二、若是帐号和密码都正确的话,将会有以下图的提示。
上图中第一个表示的是跳转的url,第二个是返回的cookie,若是咱们在请求哔哩哔哩的其余东西的话,只须要带着这个cookie就行了。
至此,咱们的破解就告一段落啦!
/5 总结/
写到这里,这篇文章已经超过2500个字了,加上哔哩哔哩破解上篇,将近5000字的长文了,小编在这里大概整理一下破解的主要流程。
一、首先,咱们肯定须要第三方平台去帮助咱们破解极验,以后咱们须要找到这个第三方平台,而且须要进行注册。
二、注册以后,咱们须要阅读API操做文档。
三、根据API操做文档,在翻译的帮助下,找到目标网站的gt,challenge和api_server三个值,而后,加上其余一些参数发送到 https://2captcha.com/in.php,会返回一个任务ID。
四、而后等个15秒左右之后,再像https://2captcha.com/res.php请求,带上任务ID加上一些其余参数,便可进行破解。
五、代码详情已经上传到GitHub:https://github.com/cassieeric/python_crawler/tree/master/bilibili_decryte
这两篇文章主要介绍了第三方打码平台、破解理论和具体实践,以破解破解哔哩哔哩网址极验为例,展开具体的破解过程,其中代码已经上传到github,感兴趣的小伙伴们能够去尝试一下噢!