干货|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,感兴趣的小伙伴们可以去尝试一下噢!

——————— End ———————

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他

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

/1 前言/

有爬虫经验的各位小伙伴都知道,正常我们需要登录才能获取信息的网站,是比较难爬的。原因就是在于,现在各大网站为了反爬,与爬虫机制斗智斗勇,一般的都加入了图片验证码、滑动验证码之类的干扰,让我们的爬虫半途折返。

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

/2 方法探讨/

写这个文章之前,我就在想一个问题,关于破解滑动验证究竟是使用机器学习还是第三方服务的方法会比较好一些。关于这个问题,先说一下个人观点:本人作为一个爬虫老鸟,如果只是为了使用,非常建议使用第三方服务。主要原因有以下两点。

1、现在是2020年了,在IT行业的小伙伴们都知道一个事实,现在大红大紫的热门行业肯定都说是机器学习,大家都想入门机器学习。但是很多人还没入门就GG了,这是为什么呢?因为入门机器学习,是需要有高等数学底子的,可不是以前学一个语言,会常用逻辑就可以入门了的。这也是为什么到现在为止,依然还有非常大的机器学习人才缺口。

2、机器学习,一般玩不起。首先,你需要有大量的数据,然后再有一个不错的主机用于训练,再然后,就是需要你有高等数学的底子。如果这三个你的具备,并且学习了机器学习,你才可以勉强破解滑动验证码,并且还不敢保证自己训练的准确度。

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

以上就是我推荐使用第三方接口的原因,因为第三方接口就是专门做这类机器学习的。它们有强大的人力物力专门做破解各种验证码,并且识别率非常高,现在一般都是90%以上。此外,不仅价格还香,还可以让自己少掉很多根头发,何乐而不为了呢?

话说回来,并不是说我不建议学习机器学习。毕竟现在我们是处于一个人工智能时代,如果你已有不错的数学基础,并且对机器学习饶有兴趣,在工作或者学习之余,可以学习一下机器学习的,毕竟趋势如此,紧跟潮流。

简单总结一下:如果你的爬虫遇到了滑动验证码,建议直接使用第三方平台。如果你对机器学习很有兴趣,想尝试一下新方法,可以考虑一下机器学习。

/3 所需工具/

本文中使用的工具和之前不太一样,这次暂时没有用到selenium,而是使用了第三方服务:https://2captcha.com/。根据本人测试,这个平台是目前识别率最高的平台,价格也还行,3美元几百次的样子。接下来,我详细讲解一下这个打码平台。

本文中使用的工具和之前不太一样,这次暂时没有用到selenium,而是使用了第三方服务:https://2captcha.com/,这里我们只需要 requests 模块就可以啦!

/4 打码平台参数分析/

根据本人测试,这个平台是目前识别率最高的平台,价格也还行,3美元几百次的样子。接下来,我详细讲解一下这个打码平台。

既然我们选择了第三方平台,我们务必要看一下人家的文档,看看别人是怎么操作的。下面我们就2captcha平台的极验破解,看看官网上是如何实现的。

额…纯英文的,我也看不懂。。。这咋回事呢?这咋办哪?这可咋整啊?别慌,问题不大,小编带你们一步一步分析主要功能。

1、首先我们需要登录到账号,如下图所示,右上方有个Sign的提示,如果没有账号的话,得点击右上方的Register进行注册账号即可。

2、当登录完成后,会自动跳到主页,如下图所示。

上图中长方形框框圈起来的地方表示你的账户余额剩余多少钱,账户资金不足的话记得要氪金,否则是不能用滴,氪金过程这里就不多做解释了哈,问题不大。椭圆框框圈起来的地方表示的是你的唯一key值,每次请求要带上这个key的,所以你务必要保管好。

3、前期工作完成之后,接下来我们进入主题,研究文档。点击下图中红色圈的地方,API(全称是:Application Programming Interface,应用程序接口),一般API下面存放的都是文档。

4、之后弹出的界面就让人有些傻眼了,如下图所示。

额,尴尬的一批,这全部是英文额,不过不要慌,问题不大,继续往下滑动看看。

5、诶,在下方这里我们可以找到一个列表,如下图所示。

滑动到Rates这个菜单栏,我们能看到一个列表,我们要解决的就是极验(GeeTest,就是极验的英文翻译),所以我们只需要看GeeTest就好了,可以看到上面显示的单价是2.99美元。之后我们点击GeeTest,页面会进行跳转。

6、之后会弹出下图的英文界面,估计小伙伴们有的望而却步一波了。

7、不过仍然不要慌,别忘记了,我们还有翻译呢!点击浏览器的翻译功能,页面突然间就变得熟悉了,如下图所示。

这下是不是感觉清晰了很多了?虽然有些翻译的不尽人意,但是基本上我们能够明白翻译过来的意思,顺藤摸瓜,可以搞定原英文想要表达的意思。如果你英文好的话,就不用像小编这样这么费劲啦,给英文大佬打call!

可以看到上文中的操作提示,我们需要找到目标网站的gt,challenge和api_server三个值,然后,加上其他一些参数发送到网址https://2captcha.com/in.php,之后该网址会返回一个任务ID。

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

/5 总结/

写到这里,这篇文章已经超过2000个字了,估计小伙伴们都没有耐心看下去了,小编在这里大概整理一下上文的大体意思。

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

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

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

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

介于篇幅原因,这篇文章主要介绍了第三方打码平台和破解的理论部分,下一篇文章将详细介绍破解哔哩哔哩极验的具体过程,小伙伴们敬请期待吧!

手把手用Python教你自动登录哔哩哔哩

/1 前言/

嘿,各位小伙伴晚上好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录哔哩哔哩。

接到老大通知,让我自动写一个自动登录哔哩哔哩的脚本,我当然是二话不说直接开怼,咱们的准则是啥,生死看淡,不服就干,干就完了。然而,现实总是被无情打脸,但是不管怎样,终究算是干过它了,下面我们来一一讲解,如何自动登录哔哩哔哩!

/2 准备工作/

chromedriver:浏览器驱动,可以理解为一个没有界面的chrome浏览器。

selenium:用于模拟人对浏览器进行点击、输出、拖拽等操作,就相当于是个人在使用浏览器,也常常用来应付反爬虫措施。

/3 具体步骤/

哔哩哔哩登录URL:https://passport.bilibili.com/login

1、点击登录如下,自动登录blbl最难的一点就是,拖动滑块,对准缺口,正是这一个问题,让我掉了好几根头发,跟上我的脚步,能少踩一个一个坑是一个坑。

2. 可能看到这,稍微会点技术的小伙伴都知道,其实我们根本要解决的问题,就是缺口获取缺口的位置,但是要怎么获取这个缺口的位置呢?

3. 这尼玛,canvas是个啥?其实当时我和你们想法一样,其实呢,这个canvas是个画布,可不是图片,这咋办,这不是图片怎么办呢?

再说,我怎么知道哪个是带缺口图的canvas,经过多次测试,终于算是弄清楚了哪个是背景图,哪个是滑块,我来给大家标注一下。

4. So,问题又来了,我怎么获取这里面的图片呢?不谈了,直接上图!!!

5. 我们先在游览器前端控制台,通过js代码,选中带缺口的标签,因为是类选中,所以需要取0下标,通过 toDataURL(“image/png”) 方法,将canvas将里面的图片转为base64位图片,转成base64位图片有啥用呢,来,我们赋值这么这么长的一段base64地址,复制到游览器中。

看到了没?我们梦寐已久带缺口的图片已经呈现出来了。

6. 下一步怎么办呢?当时我的想法是,如法炮制,获取滑块的的图片,通过opencv模板对比,获取缺口位置。但是事实证明,我又被打脸,我们来看一下滑块图片张啥样。

7. 是不是看着没什么问题,我们来保存本地试一下看看。

8. 看出来了没?其实除了滑块以外,其他位置为透明区域,如果有透明区域,是不能通过opencv 模板对比的。这咋办?如果在用opencv处理图像,就是个累活了。

9. 本着能懒就懒的原则,直接上第三方平台吧!本文使用的第三方平台:联众:https://www.jsdati.com/

这个平台还是比较贴心的,还有qq客服,有问题我们还可以问qq客服,暖心

10. 这个平台图像类型1318为滑块验证码,只需要把带有缺口的图片上传到此网站就好。具体怎么操作呢?说了这么多,我们也该上代码了,详情地址上传到github这里了:https://github.com/cassieeric/python_crawler/tree/master/bilibili_autoLogin,觉得还不错,记得给个star噢!

各位小伙伴自行去联众注册哈,价格还挺香,1元100点,滑动验证码一个2点。

/4 示例效果/

最后小编给大家录制了一个视频,gif格式的,给大家呈现的效果如下所示:

示例效果.gif

/5 总结/

今天主要介绍了一种自动登录哔哩哔哩的破解方法,大家可以跟着代码进行实际操作一遍,有问题也可以随时留言噢,后面还会分享其他的第三方服务破解方式,敬请期待吧!

——————— End ———————

往期精彩文章推荐:

看完本文有收获?请转发分享给更多的人

Python爬虫与数据挖掘

入群请在微信后台回复【入群】

在公众号后台回复下列关键词可以免费获取相应的学习资料:

Python、网络爬虫 、书籍、数据分析、机器学习、数据结构、

大数据、服务器、Spark、Redis、C++、C、php、

mysql、java、Android、面试题、课堂、其他