利用Python進行破解嗶哩嗶哩登錄

前言

研究爬蟲的各位小夥伴都知道,需要登錄才能獲取信息的網站,是比較難爬的,原因就是在於,現在各大網站爲了反爬,都加入了圖片驗證碼,滑動驗證碼之類的干擾,

 

本篇就針對視頻門戶網站的滑動驗證碼進行講解和破解

 

關於破解滑動驗證究竟是自己使用機器學習還是第三方服務討論

先說一下個人觀點:本人作爲一個爬蟲老鳥,如果只是爲了使用,非常建議使用第三方服務,爲什麼呢,來聽我細細分析,

現在是2020年了,混IT的都知道,現在大紅大紫的熱門行業是哪個,肯定都說機器學習,都想入門機器學習,但是很多人還沒入門就掛了,這是爲什麼呢,因爲入門機器學習,是需要有高數的底子的,可不是以前學一個語言,會常用邏輯就可以入門的了,這也是爲什麼到現在爲止,依然還有非常大的機器學習人才缺口,再說一下爲什麼自己做爬蟲不建議使用機器學習,三個字,玩不起,

首先,你需要有大量的數據,然後再有一個不錯的主機用於訓練,再然後,就是需要你有高數的底子,如果這三個都有,並且學習了機器學習,你纔可以勉強破解滑動驗證碼,並且不敢保證自己訓練的準確度,

這就是我推薦使用第三方接口的原因,因爲第三方接口就是專門做這類機器學習的,它們有強大的人力物力專門做破解各種驗證碼,並且識別率非常高,現在一般都是90%以上,價格還香,何樂不爲了,自己做是頭髮掉的少還是加不夠多

當然,並不是說我不讓學習機器學習,畢竟現在是一個人工智能時代,如果已有不錯的數學基礎,並且有很強大興趣,在工作之餘,可以入坑機器學習的,畢竟趨勢如此,

本人的觀點是,如果是爬蟲遇到了滑動驗證碼,直接使用第三方平臺,如果你很有研究興趣,繼續需坑機器學習,

本文使用的第三方服務:https://2captcha.com/

根據本人測試,是目前識別率最高的平臺,價格還行,3美元幾百次吧

 

所需工具

En.... 我們這裏不需要 selenium,2captcha打碼平臺很神奇,來看我細細講解

2captcha打碼平臺參數分析

既然我們選擇了第三方平臺,我們務必要看一下人家的文檔。

 

首先打開人家官網

 

嗯...純英文,我也看不懂..怎麼辦呢,彆着急,我帶你們一步一步分析主要功能

 

登錄賬號

 

登錄完成後,會自動跳到主頁

 

 

 

紅色圈起來的地方表示剩餘多少錢,沒有錢的話記得要氪金,否則是不能用滴,氪金過程這裏就不多做解釋了哈,問題不大

藍色圈起來的地方表示這是你的唯一key,每次請求要帶上這個key的,所以要保管好

 

進入主題,研究文檔

點擊紅色圈的地方,API,一般API都是文檔,come

 

En....什麼玩意..完全看不懂,別慌,往下滑

 

滑動到Rates,我們能看到一個列表,我們要解決的就是極驗(GeeTest),所以我們只看GeeTest就好了,點擊GeeTest,look

 

 

好了,我已經懵逼了,但是,怕什麼,我們有翻譯!!!

 

 

 這裏大概整理一下它的意思

首先,找到目標網站的gt,challenge和api_server三個值,然後,加上其他一些參數發送到 https://2captcha.com/in.php,會返回一個任務ID

然後等個15秒左右以後,再像 https://2captcha.com/res.php 請求,帶上任務ID加上一些其他參數

開始行動

 

  1. 在目標網站上找到gt,challenge,api_server三個東西,我們切換到dilidili找一下

我們點擊network,刷新網頁,重新加載所有請求,crtl+f,搜索challenge

 

竟然找到了,但是到底之不是這個呢,人家2captcha文檔說了,通常可以在initGeetest發現他,我們嘗試下

點擊Elements,ctrl+shift+f全局搜索一下,搜索initGeetest

 

還真有一個,我們點進去看看

 

還真有這個,我們打上斷點,再次刷新,匹配一下是否和network裏的一樣

 

 

上面是斷點的值,下面是network的值,至少看着一樣的,我們至少可以確定,有很大關係

至少我們確定了兩個值,gt和challenge,還差一個api_server

我們隨便輸入賬號密碼點擊登錄一下,觸發一下極驗,在elements中,搜索api_server

 

 

紅色圈起來的地方就表示是api_server,ok,基本工作基本完成

 

  1. 剛纔我們也說了,參數都找齊了,那我們就該請求打碼平臺了

 

那我們,就幹吶,前面說到,在network中,請求 https://passport.bilibili.com/web/captcha/combine?plat=11  就可以獲得gt,challenge,外加一個key

Ok,我們來請求一下

 

這樣,我們就拿到了gt,challenge

我們請求一下打碼平臺的接口,帶上自己參數

打碼平臺需要請求兩次,第一次返回的是任務ID,第二次纔是滑動模塊的成功值

 

注:challenge是動態的,其他的是靜態的

API_KEY是打碼平臺的key,開頭介紹的那個

 

兩個函數,我們就成功的拿到了打碼平臺返回的值

 

紅色圈起來的,就是破解極驗的第一個關鍵參數,這個參數拿到之後呢,就已經跟人家打碼平臺沒關係啦,我們只需要帶着相關參數,登錄嗶哩嗶哩就好了,但是這個參數要往哪發呢,在network經過一番查找後,似乎發現一個和登錄有關的接口

 

 

我們可以看到,紅色框圈起來的部分,正式2captcha平臺返回給我們的數據,key,正是 ...combine?plat=11  url返回的key,就是password,進行了加密,他是如何加密的呢

 

經過不斷的斷點,不斷地斷點...終於確定了,密碼會經過這個函數進行加密,它本質是 RSA非對稱加密 聽着就嚇人,不慌,盤它,

這個函數邏輯是先請求一個xxx這個url,帶上一個隨機數,然後會返回一個隨機hash,和一個公鑰key,公鑰key是固定的,然後將隨機hash和密碼進行加密,發送後他後,後臺進行解密

破解代碼

 

 

 

通過上述兩個函數,就模擬出了密碼,最後,

我們只需要提交到後臺就可以了,

 

 

示例效果

如果賬號密碼錯誤

 

如果賬號密碼正確

 

第一個表示跳轉的url,第二個是返回的cookie,如果我們在請求嗶哩嗶哩的其他東西,只需要帶着這個cookie就好了,ok,結束

 

完整代碼

嗶哩嗶哩.txt

發佈了125 篇原創文章 · 獲贊 440 · 訪問量 119萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章