最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【B站API研究】客戶端分享視頻API研究歷程

2022-07-22 00:18 作者:Microsoft365  | 我要投稿

眾所周知,bilibili帳號的LV等級是身份的重要象征,而由于B站每日獲取經(jīng)驗值數(shù)量方法有限,高等級的bilibili帳號往往較為稀有。為了快速升級LV,不少小伙伴選擇堅持完成大部分“每日任務”來獲得更多經(jīng)驗值。但“每日任務”列表中的任務有些簡單,有些較為復雜,像如每日在客戶端分享視頻這項任務,顯然比較耗費時間與精力。為了節(jié)省時間、提高效率,筆者結(jié)合少許HTML相關知識與網(wǎng)絡抓包技術(shù)經(jīng)驗,對B站客戶端分享視頻的API做了略微研究,借助JS腳本實現(xiàn)了每日任務完成的自動化過程,在此略作分享,如有不當,敬請批評指正!


  • 了解任務要求

在PC Web端打開個人中心,即可查看每項任務及對應的完成情況。這里注意最后一個每日分享視頻任務,以前并沒有客戶端分享的要求,更新要求之后,Web端分享無效,也就是說,如果想要通過網(wǎng)絡抓包方式獲取API,必須借助App客戶端。

Web端個人中心頁面

明確了這個限制,下面我們開始著手搭建App抓包環(huán)境。筆者這里結(jié)合自身實踐經(jīng)歷,選擇了安卓模擬器方案。

所用所有軟件及環(huán)境(不必完全一致,僅作示例):安卓模擬器(以雷電模擬器為例),Xposed(安裝JustTrustMe插件),嗶哩嗶哩App(普通版),BurpSuite


  • 準備基礎環(huán)境:安裝模擬器+Xposed+JustTrustMe插件

這一步主要是準備App軟件安裝和網(wǎng)絡抓包的基礎環(huán)境,Xposed+JustTrustMe可以實現(xiàn)安卓App的近乎無感http/https抓包,是后面抓包的必要條件。

網(wǎng)上教程不勝枚舉,這里不再詳細概述,有興趣可以自行上網(wǎng)搜索,或參考下面的文章:

https://blog.csdn.net/sinat_28371057/article/details/118518850

Tips:很多教程給出的是用Fiddler進行抓包,而筆者則出于個人習慣選擇了BurpSuite,經(jīng)測試兩種軟件都可以正常抓包,這里可以根據(jù)自身習慣和喜好進行選擇。


  • 配置抓包環(huán)境:安裝配置Fiddler/BurpSuite+安裝對應證書

這一步的目的是讓Android系統(tǒng)信任抓包軟件(的證書),從而可以使用抓包軟件解析加密流量的內(nèi)容。

——配置Burp:

  1. 新建一個Burp實例,轉(zhuǎn)到Proxy-Intercept選項卡,點擊Intercept is on的藍色按鈕使其變成白色的Intercept is off,從而關閉http/https流量的截獲功能。

  2. 轉(zhuǎn)到Proxy-Options選項卡,在Proxy Listeners處點擊 Add

  3. 在彈出的窗口的Binding選項卡中,Bind to port填寫要監(jiān)聽的端口(可以是任意一個不會被其他程序使用的端口,例如8080、8443等),Bind to address這里可以選擇 All Interfaces(在所有網(wǎng)絡接口上抓包),也可以選擇Specific address(指定要監(jiān)聽的IP),完成后點擊OK

  4. 勾選新建項目的Running前面的復選框,同時取消勾選其他項目的復選框(以避免數(shù)據(jù)包過多影響分析判斷),Burp配置完成。

筆者這里使用了電腦的WLAN內(nèi)網(wǎng)IP地址

——安裝證書:

首先說一句,Burp默認提供的證書類型為der后綴,Android系統(tǒng)無法直接安裝。為求方便,筆者選擇了網(wǎng)頁在線轉(zhuǎn)換證書,轉(zhuǎn)換經(jīng)歷是:der->pem->cer,而Fiddler默認的證書則可以直接安裝到Android系統(tǒng)中,省去了轉(zhuǎn)換這一步驟。筆者對證書研究有限,如果有更好的方式,歡迎留言反饋!

打開瀏覽器,訪問上一步已經(jīng)勾選Running的項目的IP:Port地址,例如筆者勾選了10.0.0.10:8080的Running復選框,則訪問10.0.0.10:8080,如下圖。然后點擊右上角的 CA Certificate,在彈出的下載窗口中選擇保存,即可獲得證書。

Tips:當然,你也可以選擇上一步中的Import / export CA certificate,通過導出證書的方式獲取證書。

之后使用網(wǎng)頁在線服務,轉(zhuǎn)換der證書到pem類型,再從pem類型轉(zhuǎn)換到cer/crt類型。筆者使用的網(wǎng)站:http://web.chacuo.net/netsslcer2pem

最后,你應該會成功獲得后綴名為crt/cer的證書文件,將其使用共享文件夾功能共享到Android系統(tǒng)文件夾中,然后打開它,按照提示完成安裝即可。


  • 安裝App客戶端

恕筆者能力有限,這一章節(jié)實在想不出什么好講的內(nèi)容來。


  • 打開網(wǎng)絡代理轉(zhuǎn)發(fā)

這一步是將Android系統(tǒng)的流量轉(zhuǎn)發(fā)到抓包軟件。

這里以雷電模擬器為例,筆者使用adb調(diào)試功能打開網(wǎng)絡代理轉(zhuǎn)發(fā):

  1. 找到雷電模擬器的快捷方式指向位置,在同目錄下存在名為adb.exe的程序。

  2. 按住Shift的同時右鍵該目錄的空白處,選擇 在此處打開powershell窗口,在窗口內(nèi)輸入以下命令并回車:

    adb shell settings put global http_proxy [ip]:[port]

    [ip]替換為在第一步中設置的IP地址(筆者的IP地址為10.0.0.10)。如果第一步中選擇了All interface,則隨意填寫一個本機IP地址。

    [port]替換為第一步中設置的端口。

    最終的命令應該像這樣:adb shell settings put global http_proxy 10.0.0.10:8080

    注意:powershell可能不允許直接以應用程序名稱作為命令的開頭,因此你可能需要輸入為這樣:.\adb shell settings put global http_proxy 10.0.0.10:8080

  3. 如果你想關閉轉(zhuǎn)發(fā)功能,只需要將上文中的[ip]:[port]替換為 :0即可,如:adb shell settings put global http_proxy :0

到此處,你應該可以在代理軟件中觀察到些許流量記錄。對于Burpsuite,可以在Proxy-HTTP Proxy中查看,如下圖所示。點擊任意一個HTTPS數(shù)據(jù)包,你應該可以直接查看數(shù)據(jù)包的明文信息。

成功!

如果沒有任何流量記錄,嘗試打開App并刷新幾下,以此產(chǎn)生一些網(wǎng)絡流量。


  • 觸發(fā)任務行為,觀察網(wǎng)絡流量

Tips:為了提高效率、減少無用數(shù)據(jù)包的干擾,建議你在開始操作之前再打開網(wǎng)絡代理轉(zhuǎn)發(fā)功能,在完成操作之后立刻關閉網(wǎng)絡代理轉(zhuǎn)發(fā)功能!

為了獲取我們所需要的流量,我們需要在App中進行相應的操作。以分享視頻為例,我們可以打開App,在使用自己的賬戶登錄App后,選擇任意一個視頻,點擊“分享”-“動態(tài)”-“發(fā)布”,如下圖所示:

完成分享后,回到抓包軟件,分析流量記錄??梢钥吹剑诜窒硗瓿珊蟮膸缀跻凰查g,有一個URL中帶有 finish 名稱的記錄,這有可能是我們所需要的API。右鍵這條記錄,選擇Highlight,點擊一種顏色來把它突出顯示出來。單擊這條記錄,可以查看數(shù)據(jù)包的詳細信息。

這里我們可以在Response一欄看到返回數(shù)據(jù)的詳細信息,有一行字引起我們高度注意:“每天首次分享成功,等級經(jīng)驗值+5”,這在一定程度上確認了我們的猜測。

接下來,重點分析Request內(nèi)容??梢钥吹?,請求內(nèi)容中有大量未知參數(shù)。部分參數(shù)可以通過查找資料獲得相應信息,而部分參數(shù)則沒有相關介紹。這里提一下筆者的研究結(jié)果:

  1. Headers頭部只保留HTTP包的基本信息即可,自定義頭可以全部去掉

  2. Body中的參數(shù)的必要性尚未研究,有興趣可以自行刪減參數(shù)進行測試

  3. Body中access_key需要手動生成,appkey對于普通版本Android App為1d8b6e7d45233436,oid=aid,sid=cid,ts=時間戳(毫秒舍去),sign=md5(body內(nèi)容+appsec),appsec=560c52ccd288fed045859ed18bffd973,share_session_id可選

如果有興趣深入研究,可以參考Github上的API收集項目:https://github.com/SocialSisterYi/bilibili-API-collect

另外的兩個每日任務研究思路類似,在此不做贅述,讀者大可以舉一反三。


  • 制作JS腳本,實現(xiàn)自動化

為了節(jié)省大家的時間,筆者已經(jīng)制作了一個JS腳本,可以自動完成登錄、觀看、分享視頻,有興趣可以去筆者的Github(主頁鏈接在個人簡介中有)下載:https://github.com/ICONQUESTION/BilibiliJS

使用方法:掛載到油猴即可,具體教程網(wǎng)上甚多,不再重復。

經(jīng)過筆者一段時間嘗試,腳本運行情況穩(wěn)定,每日任務均可以自動完成,至此目的達成

任務成功完成


關于b站每日任務API的研究就到此告一段落了。如果你有更好的方法,或?qū)Ρ疚闹械挠^點看法有不同的見解,歡迎在下方的評論區(qū)留言!

感謝閱讀。


【B站API研究】客戶端分享視頻API研究歷程的評論 (共 條)

分享到微博請遵守國家法律
德令哈市| 营山县| 房山区| 息烽县| 黄浦区| 佛冈县| 岐山县| 集贤县| 萝北县| 年辖:市辖区| 枣庄市| 介休市| 乐山市| 汝城县| 万荣县| 宣威市| 白河县| 拜泉县| 固阳县| 奇台县| 治多县| 巴林左旗| 彭山县| 图木舒克市| 静安区| 班戈县| 晋州市| 嘉荫县| 绥棱县| 新营市| 长岭县| 池州市| 田阳县| 齐齐哈尔市| 铁岭县| 泗阳县| 疏勒县| 永安市| 汶川县| 巴青县| 茌平县|