Python網絡爬蟲之js逆向之遠程調用(rpc)免去摳代碼補環境簡介

python進階學習交流 發佈 2022-03-14T15:15:23+00:00

大家好,我是黑臉怪。這篇文章主要給大家介紹jsrpc,方便大家日後在遇到JS逆向的時候派上用場。前言jsrpc是指在瀏覽器開啟一個ws和go服務連接,以調用http接口的形式來通信,瀏覽器端收到調用通信執行原先設置好的js代碼。

大家好,我是黑臉怪。這篇文章主要給大家介紹jsrpc,方便大家日後在遇到JS逆向的時候派上用場。

前言

jsrpc是指在瀏覽器開啟一個ws和go服務連接,以調用http接口的形式來通信,瀏覽器端收到調用通信執行原先設置好的js代碼。可以用於js逆向調用加密函數直接返回結果,也可以用來直接獲取數據。

該工具和代碼,已經上傳到git,下載即可用。

下載地址:https://github.com/jxhczhl/JsRpc#jsrpc-hliang

代碼目錄結構

-- main.go (伺服器的主代碼)
-- resouces/JsEnv.js (客戶端注入js環境)

基本介紹

運行伺服器程序和js腳本,即可讓它們通信,實現調用接口執行js獲取想要的值(加解密)

實現

原理:在網站的控制台新建一個WebScoket客戶端連結到伺服器通信,調用伺服器的接口 伺服器會發送信息給客戶端 客戶端接收到要執行的方法執行完js代碼後把獲得想要的內容發回給伺服器 伺服器接收到後再顯示出來

說明:本方法可以https證書且支持wss

在https的網站想要新建WebSocket連接如果是連接到普通的ws可能會報安全錯誤,好像連接本地(127.0.0.1)不會報錯~ 可以用本地和wss 你自己看著玩。

無https證書者。直接編譯main.go,我試了一下,發現使用本地ip(127.0.0.1)可以在https的網站直接連接ws使用 默認埠12080。

有https證書者。修改main.go文件 把r.Run()注釋掉,把r.RunTls注釋取消掉 並且參數設置證書的路徑 直接輸入名字就是當前路徑 默認埠:12443。

另外的題外話,有域名沒證書不會搞的 或者有域名有公網(非固定IP的)都可以搞成的,自己研究研究。

使用方法

首先下載編譯好的文件,下載地址:https://github.com/jxhczhl/JsRpc/releases/tag/Windows

直接雙擊打開編譯好的文件,開啟服務。

api 簡介

  • /list :查看當前連接的ws服務
  • /ws :瀏覽器注入ws連接的接口
  • /result :獲取數據的接口 (數據格式json: {"group":"hhh","hello":"好睏啊yes","name":"baidu","status":"200"} )

說明:接口用?group和name來區分 如注入ws的例子 ws://127.0.0.1:12080/ws?group={}&name={}, group和name都可以隨便,這是調用的接口:http://127.0.0.1:12080/go?group={}&name={}&action={}&param={},group和name填寫上面注入時候的,action是註冊的方法名,param是可選的參數。

注入JS,構建通信環境

打開JsEnv 複製粘貼到網站控制台(注意有時要放開斷點)。

注入ws與方法

// 連接通信
var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=hhh&name=baidu");
// 註冊一個方法 第一個參數hello為方法名,
// 第二個參數為函數,resolve裡面的值是想要的值(發送到伺服器的)
// param是可傳參參數,可以忽略
demo.regAction("hello", function (resolve, param) {
    var c = "好睏啊" + param;
    resolve(c);
})

訪問接口,獲得數據

http://127.0.0.1:12080/go?group=hhh&name=baidu&action=hello¶m=yes
// 其中 hello是會變的 是action名字。 用代碼訪問的時候要注意這個名字
{
  "group":"hhh",
  "hello":"好睏啊yes",
  "name":"baidu",
  "status":"200"
}

總結

大家好,我是黑臉怪。 這篇文章主要給大家介紹jsrpc,文章的理論性很強,看上去十分的粗獷,不過別擔心,接下來我給大家出幾篇關於使用jsrpc來進行逆向的文章,針對實際的網站應用此工具,讓大家加深對該工具的理解和認識。點擊閱讀原文,即可可以前往項目git地址。

jsrpc是指在瀏覽器開啟一個ws和go服務連接,以調用http接口的形式來通信,瀏覽器端收到調用通信執行原先設置好的js代碼。可以用於js逆向調用加密函數直接返回結果,也可以用來直接獲取數據。日後用在爬蟲中,可以事半功倍。

小夥伴們,快快用實踐一下吧!如果在學習過程中,有遇到任何問題,歡迎加我好友,我拉你進Python學習交流群共同探討學習。

關鍵字: