干货|Python大佬手把手带你破解哔哩哔哩网滑动验证(下篇)

/1 前言/

昨天我发布了Python大佬手把手带你破解哔哩哔哩网滑动验证(上篇),没有来得及学习破解理论的小伙伴可以戳进去看看噢!今天这篇文章,我们直接进行讲解哔哩哔哩极验破解,重点进行方法实现。

 

  本篇文章主要是针对哔哩哔哩的滑动验证码进行破解。

/2 打码参数获取/

  1、根据上篇文章的总结,我们需要在目标网站(哔哩哔哩)上找到gt,challenge,api_server这三个参数,所以我们现在切换到哔哩哔哩找一下。

 

2、我们打开浏览器,点击哔哩哔哩网页的network,刷新网页,重新加载所有请求,之后使用crtl+f快捷键,迅速搜索challenge,如下图所示。

 

3、通过上图我们可以看到,可以找到那个参数,但是到底是不是这个呢?放心,人家2captcha文档说了,通常可以在initGeetest发现它。我们再尝试查找一下,点击Elements,然后使用快捷键ctrl+shift+f全局搜索一下,搜索initGeetest,如下图所示。

 

4、如上图所示,还真有一个,我们点进去看看详情。

 

可以看到在829行的位置,还真的有initGeetest这个值。我们在这里打上断点,再次刷新看看,匹配一下是否和network里的一致。

5、首先,我们看看断点对应的值,点进去看看详情,如下图所示。可以看到gt和challenge这两个参数对应的值。

 

6、接下来再看看network里边对应的值,我们点进去看看详情。

 

诶,至少这两个地方的值看着一样的,我们可以确定,他们之间肯定有很大关系。到目前为止,我们已经确定了两个值,即gt和challenge,还差一个api_server,继续往下进行。

7、接下来我们随便输入账号密码点击登录一下,触发一下极验,在elements元素中,搜索api_server,如下图所示。

 

上图中红色框框圈起来的地方表示的就是api_server。至此,基本工作已经完成了。

/3 具体实现/

1、在第二节中,我们已经找到了打码请求参数,找齐参数之后,接下来我们就该请求打码平台了。

2、在前面已经说到,在network中,请求链接https://passport.bilibili.com/web/captcha/combine?plat=11就可以获得gt,challenge,外加一个key,即可发送请求了,部分代码如下所示。

 

这样,我们就拿到了gt和challenge。

完整的代码,我会放到后面的github链接,觉得不错的话,记得给个star噢!

3、接下来我们请求一下打码平台的接口,带上自己参数。但是需要注意的是打码平台需要请求两次,第一次返回的是任务ID,第二次才是滑动模块的成功值。

 

  注:challenge是动态的,其他的是静态的;API_KEY是打码平台的key,在上篇文章开头介绍提及的那个key。

4、通过两个函数,我们就成功的拿到了打码平台返回的值。

 

5、下图中红色圈起来的,就是破解极验的第一个关键参数,这个参数拿到之后,就已经跟人家打码平台没关系啦!我们只需要带着相关参数,登录哔哩哔哩就好了。

 

6、但是这个参数要往哪发呢?在network经过一番查找后,似乎发现一个和登录有关的接口,如下图所示。

 
 

通过上图,我们可以看到,红色框圈起来的部分,正是2captcha平台返回给我们的数据;而那个key值正是 ...combine?plat=11这个url返回的key。就是password,进行了加密,那么他是如何加密的呢?一起来看看

  7、如下图所示,经过不断的断点,不断的断点...终于确定了,密码会经过这个函数进行加密,它本质是 RSA非对称加密,听着就吓人,不过不要慌,盘它就是了。

 

 

这个函数逻辑是先请求一个//passport.bilbilli.com/login?act=get&r="",这个url,带上一个随机数,然后会返回一个随机hash,和一个公钥key,公钥key是固定的,然后将随机hash和密码进行加密,发送给它后,后台进行解密。

  8、破解代码部分如下图所示。

 
 
 

    通过上述两个函数,就模拟出了密码,最后,我们只需要提交到后台就可以了。

/4 示例效果/

1、如果账号或者密码错误的话,将会有如下图的提示。

 

 

  2、如果账号和密码都正确的话,将会有如下图的提示。

 

 

  上图中第一个表示的是跳转的url,第二个是返回的cookie,如果我们在请求哔哩哔哩的其他东西的话,只需要带着这个cookie就好了。

   至此,我们的破解就告一段落啦!

/5 总结/

写到这里,这篇文章已经超过2500个字了,加上哔哩哔哩破解上篇,将近5000字的长文了,小编在这里大概整理一下破解的主要流程。

  1、首先,我们确定需要第三方平台去帮助我们破解极验,之后我们需要找到这个第三方平台,并且需要进行注册。

  2、注册之后,我们需要阅读API操作文档。

3、根据API操作文档,在翻译的帮助下,找到目标网站的gt,challenge和api_server三个值,然后,加上其他一些参数发送到 https://2captcha.com/in.php,会返回一个任务ID。

4、然后等个15秒左右以后,再像https://2captcha.com/res.php请求,带上任务ID加上一些其他参数,即可进行破解。

5、代码详情已经上传到GitHub:https://github.com/cassieeric/python_crawler/tree/master/bilibili_decryte

    这两篇文章主要介绍了第三方打码平台、破解理论和具体实践,以破解破解哔哩哔哩网址极验为例,展开具体的破解过程,其中代码已经上传到github,感兴趣的小伙伴们可以去尝试一下噢!

posted @ 2020-01-12 14:35  dcpeng  阅读(432)  评论(0编辑  收藏  举报