過程:
知道如何尋找登入的介面
知道如何確定js的位置
知道如何觀察js的執行過程
知道js的執行方法
我們要登入需要對密碼進行加密和獲取rkey欄位的值
rkey欄位的值我們直接傳送請求rkey請求就可以獲得
密碼是先反轉然後使用rsa進行加密, js**很複雜, 我們希望能通過在python中執行js來實現
實現思路:
使用session傳送rkey獲取登入需要資訊
根據獲取資訊對密碼進行加密
使用session傳送登入請求
importrequests
import
json
import
js2py
#- 實現思路:
#- 使用session傳送rkey獲取登入需要資訊
#- url:
#- 方法: get
#獲取session物件
session =requests.session()
headers =
#設定session的請求頭資訊
session.headers =headers
response = session.get("
")#print(response.content.decode())
n = json.loads(response.content)['
data']
#- 根據獲取資訊對密碼進行加密
#- 準備使用者名稱和密碼
phonenum = "
131...
"password = "
****"#
- 使用js2py生成js的執行環境:context
context =js2py.evaljs()
#- 拷貝使用到js檔案的內容到本專案中
#- 讀取js檔案的內容,使用context來執行它們
with open("
bigint.js
", '
r', encoding='
utf8
') as f:
context.execute(f.read())
with open(
"rsa.js
", '
r', encoding='
utf8
') as f:
context.execute(f.read())
with open(
"barrett.js
", '
r', encoding='
utf8
') as f:
context.execute(f.read())
#- 向context環境中新增需要資料
context.t =
context.n =n
#- 執行加密密碼的js字元
js = '''
t.password = t.password.split("").reverse().join(""),
setmaxdigits(130);
var o = new rsakeypair(n.e,"",n.n)
, r = encryptedstring(o, t.password);
'''context.execute(js)
#- 通過context獲取加密後密碼資訊
#print(context.r)
password =context.r
#- 使用session傳送登入請求
#- url:
#- 請求方法: post
#- 資料:
#- phonenum: 15565280933
#- password: (加密後生產的)
#- c1: 0
#- rkey: rkey請求獲取的
data =
#print(session.headers)
response = session.post("
", data=data)
(response.content.decode())
#訪問登入的資源
response = session.get("
")print(response.content.decode())
爬蟲 js逆向 js反解析
案例 分析有道翻譯 1 找到請求的url 2 分析請求要攜帶的引數 請求頭,引數。先分析出最常見的要攜帶的請求頭引數 3 分析請求引數,哪些是改變的 4 在js中搜尋,salt或者sign返回的地方 5 找到 位置,分析js 按住ctrl f 在js中搜尋。圖中錯了,時間戳是13位 6 分析總結 e...
實戰 js逆向簡單逆向
1.目標 獲取 的列表頁和詳情頁內容 2.進行 訪問,發現資訊內容是動態載入的 3.檢視json的介面,經過多次請求檢視,只有sign欄位是js加密的,其他欄位都是固定的 4.對sign欄位進行搜尋可以找到加密位置有md5,但是這次使用穩妥的笨辦法 5.在source選項卡中新增請求斷點 6.然後進...
Js逆向分析
1 知道如何尋找登入介面 2 知道如何確定js的位置 3 知道如何觀察js的執行過程 4 知道js的執行方法1 知道如何尋找登入介面 2 知道如何確定js的位置 3 知道如何觀察js的執行過程 4 知道js的執行方法a 登入的form表單中action對應的url位址 b 通過抓包分析發現,在這個u...