乾貨|Python大佬手把手帶你破解嗶哩嗶哩網滑動驗證(下篇)

/1 前言/

昨天我發佈了Python大佬手把手帶你破解嗶哩嗶哩網滑動驗證(上篇),沒有來得及學習破解理論的小夥伴可以戳進去看看噢!今天這篇文章,我們直接進行講解嗶哩嗶哩極驗破解,重點進行方法實現。

webp

  本篇文章主要是針對嗶哩嗶哩的滑動驗證碼進行破解。

/2 打碼參數獲取/

  1、根據上篇文章的總結,我們需要在目標網站(嗶哩嗶哩)上找到gt,challenge,api_server這三個參數,所以我們現在切換到嗶哩嗶哩找一下。

webp

2、我們打開瀏覽器,點擊嗶哩嗶哩網頁的network,刷新網頁,重新加載所有請求,之後使用crtl+f快捷鍵,迅速搜索challenge,如下圖所示。

webp

3、通過上圖我們可以看到,可以找到那個參數,但是到底是不是這個呢?放心,人家2captcha文檔說了,通常可以在initGeetest發現它。我們再嘗試查找一下,點擊Elements,然後使用快捷鍵ctrl+shift+f全局搜索一下,搜索initGeetest,如下圖所示。

webp

4、如上圖所示,還真有一個,我們點進去看看詳情。

webp

可以看到在829行的位置,還真的有initGeetest這個值。我們在這裏打上斷點,再次刷新看看,匹配一下是否和network裏的一致。

5、首先,我們看看斷點對應的值,點進去看看詳情,如下圖所示。可以看到gt和challenge這兩個參數對應的值。

webp

6、接下來再看看network裏邊對應的值,我們點進去看看詳情。

webp

誒,至少這兩個地方的值看着一樣的,我們可以確定,他們之間肯定有很大關係。到目前爲止,我們已經確定了兩個值,即gt和challenge,還差一個api_server,繼續往下進行。

7、接下來我們隨便輸入賬號密碼點擊登錄一下,觸發一下極驗,在elements元素中,搜索api_server,如下圖所示。

webp

上圖中紅色框框圈起來的地方表示的就是api_server。至此,基本工作已經完成了。

/3 具體實現/

1、在第二節中,我們已經找到了打碼請求參數,找齊參數之後,接下來我們就該請求打碼平臺了。

2、在前面已經說到,在network中,請求鏈接https://passport.bilibili.com/web/captcha/combine?plat=11就可以獲得gt,challenge,外加一個key,即可發送請求了,部分代碼如下所示。

webp

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

完整的代碼,我會放到後面的github鏈接,覺得不錯的話,記得給個star噢!

3、接下來我們請求一下打碼平臺的接口,帶上自己參數。但是需要注意的是打碼平臺需要請求兩次,第一次返回的是任務ID,第二次纔是滑動模塊的成功值。

webp

  注:challenge是動態的,其他的是靜態的;API_KEY是打碼平臺的key,在上篇文章開頭介紹提及的那個key。

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

webp

5、下圖中紅色圈起來的,就是破解極驗的第一個關鍵參數,這個參數拿到之後,就已經跟人家打碼平臺沒關係啦!我們只需要帶着相關參數,登錄嗶哩嗶哩就好了。

webp

6、但是這個參數要往哪發呢?在network經過一番查找後,似乎發現一個和登錄有關的接口,如下圖所示。

webp

webp

通過上圖,我們可以看到,紅色框圈起來的部分,正是2captcha平臺返回給我們的數據;而那個key值正是 ...combine?plat=11這個url返回的key。就是password,進行了加密,那麼他是如何加密的呢?一起來看看

  7、如下圖所示,經過不斷的斷點,不斷的斷點...終於確定了,密碼會經過這個函數進行加密,它本質是 RSA非對稱加密,聽着就嚇人,不過不要慌,盤它就是了。

webp


這個函數邏輯是先請求一個//passport.bilbilli.com/login?act=get&r="",這個url,帶上一個隨機數,然後會返回一個隨機hash,和一個公鑰key,公鑰key是固定的,然後將隨機hash和密碼進行加密,發送給它後,後臺進行解密。

  8、破解代碼部分如下圖所示。

webp

webp

webp

    通過上述兩個函數,就模擬出了密碼,最後,我們只需要提交到後臺就可以了。

/4 示例效果/

1、如果賬號或者密碼錯誤的話,將會有如下圖的提示。

webp


  2、如果賬號和密碼都正確的話,將會有如下圖的提示。

webp


  上圖中第一個表示的是跳轉的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,感興趣的小夥伴們可以去嘗試一下噢!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章