目標網頁:https://m.gojoy.cn/pages/login/ 將我刪除i ndex?from=%2Fpages%2Fuser%2Findex
需要工具:chrome和油猴
油猴代碼:
// ==UserScript== // @name Json.stringify // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @include * // @grant none // ==/UserScript== (function(){ "use strict"; var rstringify = JSON.stringify; JSON.stringify = function(a){ console.log("Detect Json.stringify", a); return rstringify(a); } })();
第一步,F12,在第三行數字上,右鍵選擇 Add conditional breakpoint, 用於越過反調試
如果還是卡住那么,點擊這個,變成藍色
然后點擊
第二步,如果已經加載完成了, 隨便輸入賬號密碼,點擊登錄,查看Network里的新url。發現是login為登錄請求
點擊查看,發現下面有一串看不懂的參數,猜測這就是將賬號密碼等東西進行加密得出來的
嘗試一、全文搜索username , password 以找不到,失敗告終
嘗試二、查看以什么格式加載的
首先看到Response Headers中有個Access-Control-Allow-Credentials:true 說明這個是個跨域請求
關掉詳細信息后看到是 xhr 方式加載
打 XHR斷點,輸入 相應的字串,進行HOOK
上述完成后,再次輸入好賬號密碼,登錄
如果沒問題的話就會停在
call stack(回調調用棧)中,一個個往下點擊,直到看到類似於ajax加載的格式代碼
so,找到了s這個位置就很像ajax,然后在3643那個位置點擊左鍵,設置斷點
先點擊讓當前代碼先執行完畢,重新點擊頁面的登錄按鈕
沒什么意外就會停在s這個位置,從上到下將t,y,h,Q,u,d,全部在console中打印出來
看到u的值證明沒找錯!!!說明就是通過這里進行與后端的通信,且根據Q這個函數進行的將u內容進行不知名的操作
所以可以猜測應該是這里得出了上面request中那一串很長的參數
雙擊上面輸出內容中native code 就會跳轉到函數定義 (一般而言,natvie code是跟不進去的)
跳轉后,找到這個函數return,所以點擊 { ,找到對應的 } ,找到返回值位置return a[o.m[[o.m.i[";"]]].q](o.m[[o.m.i[";"]]].x),給其打上斷點
然后,還是先讓當前跑完,重新點擊登錄,然后就會停在新增加的斷點位置
接下來,在console打印出返回值
出現個與login網頁中很相似的參數值,那么還是讓當前跑完,然后點擊Network查看最新的login的詳細信息,看看是不是一樣的
然而很顯然一模一樣!!!!
所以說這個函數 , 對username和password操作后的出來的
那么此時入口發現了,之后只需要execjs包執行或者,將js代碼翻譯為python代碼放進爬蟲中操作就可以了
上面為最常用的操作
============================================================================
接下來油猴腳本操作方式效果一樣,但是更快速定位!!!!
建好腳本后開啟,如何使用腳本,寫腳本這里暫不論述
輸入好賬密后點擊登錄,console就會打印出下圖 ,然后點擊紅框位置,跳轉后打上斷點
先執行完畢后,再重新點擊登錄,查看調用棧,點擊s
跳轉后,拖動滑動條到最左邊,看到位置2就和上面的所找到的js函數一摸一樣,方便很多對吧!!!!