1.Pycham的下載
網址:PyCharm: The only Python IDE you need
2.Python的下載
網址:python.org(python3.9版本之后都可以)
3.node.js的下載
網址:Node.js — 在任何地方運行 JavaScript(版本使用18就可以)
4.curl的使用
網址:Convert curl commands to code(復制網址的curl寫簡單的request)
5.Python代碼中運行js代碼
import subprocess
from functools import partialsubprocess.Popen = partial(subprocess.Popen, encoding="utf-8")import execjswith open("007 js逆向解密、加密數據.js", encoding="utf-8") as f:jsCode = f.read()
js_compile = execjs.compile(jsCode)
sign = js_compile.call("d", json_data)
6.Proxy補環境監聽
// proxy代理監控器
delete __dirname
delete __filenametop = self = window = globaldocument = {}
location = {}
navigator = {}
history = {}
screen = {}function getEnv(proxy_array) {for (var i = 0; i < proxy_array.length; i++) {handler = `{\nget: function(target, property, receiver) {\nconsole.log('方法:get',' 對象:${proxy_array[i]}',' 屬性:',property,' 屬性類型:',typeof property,' 屬性值類型:',typeof target[property]);return target[property];},set: function(target, property, value, receiver){\nconsole.log('方法:set',' 對象:${proxy_array[i]}',' 屬性:',property,' 屬性類型:',typeof property,' 屬性值類型:',typeof target[property]);return Reflect.set(...arguments);}}`eval(`try {${proxy_array[i]};${proxy_array[i]} = new Proxy(${proxy_array[i]}, ${handler});} catch (e) {${proxy_array[i]} = {};${proxy_array[i]} = new Proxy(${proxy_array[i]}, ${handler});}`)}
}proxy_array = ['window', 'document','location', 'navigator', 'history', 'screen']
getEnv(proxy_array)
7.?webpack細節
-
開頭進行補環境 window = global (先運行,看哪些環境需要進行補)
-
在加載函數中,注釋初始化,一般在加載器函數中(最后一行)的進行注釋 例如: // o(o.s = 0)
-
全局要調用加載器函數(看加載器函數中調用的是哪個對象就調用哪個全局變量) 例如: o.e/o.c/o.r(這時候我們就可以這樣調用window.zhang = o)
-
打上執行模塊日志,也在加載器函數中 (console.log("t:::",t))
使用webpack的步驟
(1) 定位入口確認使用了webpack對象
(2) 斷點加載器,一般通過刷新頁面觸發
(3) 注意這是一個單文件的還是多文件的webpack
(4) 將加載器文件拷貝到本地,做以下三件事
??? -- 全局化
??? -- 日志
??? -- 觀察初始化(5) 測試加載器的調用,根據模塊日志補充mod
8.js入口定位查找方法
第1知識點:關于json請求體
第2知識點:關于精準請求(如何排除干擾請求)
第3知識點:入口定位
???????? 一、關鍵字方法
??????????? (1) 方法關鍵字
??????????????? encrypt :加密入口
??????????????? decrypt :解密入口
??????????????? JSON.stringify:加密入口
??????????????? JSON.parse:解密入口
??????????? (2) key關鍵字
??????????? (3) headers關鍵字 xxx()
??????????? (4) 攔截器關鍵字
??????????????????? interceptors.request.use
??????????????????? interceptors.response.use
??????????? (5) 路徑關鍵字第4知識點:斷點與斷點調試
???????? 普通斷點
???????? XHR斷點
???????? 條件斷點
???????? 日志斷點
???????? 腳本斷點