在爬蟲(chóng)調(diào)試的時(shí)候一個(gè)良好的調(diào)試習(xí)慣,正確的調(diào)試技巧身堡。絕對(duì)能讓您在抓包们童,定位及JS解密與JS逆向等各種方面事半功倍。
優(yōu)秀的調(diào)試習(xí)慣
無(wú)痕模式
無(wú)痕瀏覽(隱私瀏覽模式敦跌、隱身窗口澄干、InPrevate),是指不留下上網(wǎng)瀏覽記錄的互聯(lián)網(wǎng)瀏覽方式柠傍。但是麸俘,用戶(hù)下載的文件和建立的收藏夾或書(shū)簽會(huì)保存下來(lái)。支持該模式的瀏覽器包括但不限于百度瀏覽器惧笛,F(xiàn)irefox火狐从媚,搜狗瀏覽器,360安全瀏覽器患整,Avant browser 拜效,世界之窗瀏覽器,Google Chrome各谚,Internet Explorer 8及更新版本紧憾,Edge,Safari.
主要特性
不記錄上網(wǎng)痕跡昌渤,保護(hù)您的個(gè)人隱私
不記錄 Cookies
不記錄 Internet 臨時(shí)文件
不記錄網(wǎng)頁(yè)表單數(shù)據(jù)(用戶(hù)名赴穗、密碼、搜索關(guān)鍵詞等)
不記錄撤銷(xiāo)頁(yè)面列表膀息,即歷史記錄
等等
特別提醒
通過(guò)無(wú)痕瀏覽不會(huì)影響其他用戶(hù)般眉、服務(wù)器或軟件。但請(qǐng)謹(jǐn)防以下情況:
- 進(jìn)行無(wú)痕瀏覽時(shí)潜支,您下載的文件甸赃、新收藏的網(wǎng)址、新修改的瀏覽器配置將仍然被保留毁腿。
- 因特網(wǎng)服務(wù)提供商或雇主還是可以追溯用戶(hù)訪問(wèn)過(guò)的頁(yè)面辑奈。
- 如果想要清除電腦中的網(wǎng)頁(yè)瀏覽痕跡苛茂,可以使用安全軟件(如360安全衛(wèi)士)的清理痕跡按鈕或手動(dòng)刪除歷史記錄和緩存文件。
- 因?yàn)槭菬o(wú)痕瀏覽鸠窗,同樣瀏覽器原先保存的密碼和賬號(hào)同樣無(wú)法使用妓羊,這也會(huì)給網(wǎng)絡(luò)瀏覽帶來(lái)不便之處。
- 網(wǎng)站收集或分享您的相關(guān)信息
- 以提供免費(fèi)表情圖片為名跟蹤按鍵記錄的惡意軟件
- 在您瀏覽過(guò)程中的監(jiān)視者
- 瀏覽器插件信息的竊取
注意事項(xiàng)
- IE 和 Chrome 都會(huì)在無(wú)痕瀏覽下默認(rèn)關(guān)閉擴(kuò)展功能稍计,而 FireFox 不一樣躁绸,在隱私模式下仍然可以使用插件,這無(wú)疑又給隱私泄露提供了另一個(gè)途徑臣嚣。
- 所以在關(guān)閉Firefox的隱私瀏覽模式后净刮,您需要檢查瀏覽器插件是否記錄了瀏覽信息,或在隱私模式前暫時(shí)禁用不需要開(kāi)啟的插件硅则,否則您的信息可能會(huì)被公開(kāi)
- 部分插件(如Adobe Flash Player)擁有一套自己的Cookie系統(tǒng)淹父,在隱私模式下 Cookies 仍然會(huì)正常工作,甚至在隱私模式下獲取的 Cookies 一樣是公開(kāi)可讀的怎虫。在退出無(wú)痕瀏覽后您需要手動(dòng)清除Cookis才能做到完全無(wú)痕腐碱。
系統(tǒng)隔離技術(shù)
通過(guò)一些輕量級(jí)的虛擬系統(tǒng)實(shí)現(xiàn)荷憋,具體原理:輕量級(jí)的虛擬系統(tǒng)可以實(shí)現(xiàn)與主機(jī)系統(tǒng)相互隔離目標(biāo),隔離的實(shí)現(xiàn)是通過(guò)鏡像主機(jī)系統(tǒng)環(huán)境生成獨(dú)立的操作系統(tǒng)桌面環(huán)境鳖擒,用戶(hù)可以在虛擬環(huán)境下安裝和使用Internet Explorer帖池,遨游兴革,QQ瀏覽器壁拉,F(xiàn)irefox等等第三方瀏覽器兵志,輕量級(jí)虛擬系統(tǒng)具有啟動(dòng)資源占用率低,可移動(dòng)便攜方便姜骡。這類(lèi)產(chǎn)品有:VMware Workstation 导坟,Prayaya v3虛擬系統(tǒng),Ceedo溶浴,Macpac等等乍迄。
沙盒技術(shù)
所謂沙盒技術(shù),具體見(jiàn)百科(sandbox)士败,沙盒技術(shù)可以重定向主機(jī)系統(tǒng)環(huán)境操作到其他的存儲(chǔ)空間,以及重定向變量褥伴,同時(shí)沙盒退出后會(huì)自動(dòng)消失原先的虛擬環(huán)境連接由此達(dá)到安裝到沙盒中的應(yīng)用程序不在主機(jī)系統(tǒng)中保留痕跡的目的谅将。這類(lèi)產(chǎn)品有:360安全瀏覽器,Google 瀏覽器重慢,火狐瀏覽器饥臂,遨游瀏覽器等
為什么建議使用無(wú)痕模式進(jìn)行調(diào)試
當(dāng)我們使用瀏覽器訪問(wèn)的時(shí)候,難免會(huì)由于cookies未及時(shí)手動(dòng)清理似踱,JS緩存等各種情況存在造成調(diào)試誤差隅熙。讓人難以快速正確的調(diào)試出問(wèn)題稽煤。
多瀏覽器
多瀏覽器在這里指使用多個(gè)不同的瀏覽器進(jìn)行調(diào)試,而非僅僅使用Chrome囚戚。其中的益處不言而喻酵熙,多瀏覽器能夠快速的找到不同。
優(yōu)秀的調(diào)試方式與技巧
優(yōu)秀的調(diào)試技巧驰坊,能夠讓你事半功倍匾二,極大的降低調(diào)試難度。
巧用DevTools搜索工具快速定位數(shù)據(jù)接口
當(dāng)我們確定了需要抓取數(shù)據(jù)的目標(biāo)網(wǎng)站拳芙,往往是這種情況察藐。里面參雜了不少不包含數(shù)據(jù)的包,例如這樣舟扎。
那么如果需要過(guò)去該頁(yè)面數(shù)據(jù)分飞,就必須找到對(duì)應(yīng)的數(shù)據(jù)包,一個(gè)一個(gè)去找明顯不現(xiàn)實(shí)睹限。有什么方法可以快的定位到該數(shù)據(jù)包呢譬猫?我們可以這樣操作。
第一步:鼠標(biāo)左鍵點(diǎn)擊“放大鏡”邦泄,呼出Search面板删窒。
第二步:搜索對(duì)應(yīng)的內(nèi)容,支持大小寫(xiě)敏感顺囊,正則
第三步:根據(jù)結(jié)果肌索,鼠標(biāo)雙擊對(duì)應(yīng)內(nèi)容,即可直接跳至對(duì)應(yīng)包位置
巧用重放攻擊快速定位加密位置
當(dāng)網(wǎng)站有相關(guān)的驗(yàn)證時(shí)特碳,由于參數(shù)過(guò)多诚亚,無(wú)法快速的確定哪個(gè)參數(shù)才是真正決定是否為真實(shí)數(shù)據(jù)的時(shí)候,那么我們可以采用重放攻擊的方式午乓。進(jìn)行測(cè)試從而快速定位加密位置站宗。
重放攻擊
重放攻擊(Replay Attacks)又稱(chēng)重播攻擊、回放攻擊益愈,是指攻擊者發(fā)送一個(gè)目的主機(jī)已接收過(guò)的包梢灭,來(lái)達(dá)到欺騙系統(tǒng)的目的,主要用于身份認(rèn)證過(guò)程蒸其,破壞認(rèn)證的正確性敏释。重放攻擊可以由發(fā)起者,也可以由攔截并重發(fā)該數(shù)據(jù)的敵方進(jìn)行摸袁。攻擊者利用網(wǎng)絡(luò)監(jiān)聽(tīng)或者其他方式盜取認(rèn)證憑據(jù)钥顽,之后再把它重新發(fā)給認(rèn)證服務(wù)器。重放攻擊在任何網(wǎng)絡(luò)通過(guò)程中都可能發(fā)生靠汁,是計(jì)算機(jī)世界黑客常用的攻擊方式之一蜂大。
重放攻擊的原理
重放攻擊的基本原理就是把以前竊聽(tīng)到的數(shù)據(jù)原封不動(dòng)地重新發(fā)送給接收方闽铐。很多時(shí)候,網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)是加密過(guò)的奶浦,此時(shí)竊聽(tīng)者無(wú)法得到數(shù)據(jù)的準(zhǔn)確意義兄墅。但如果他知道這些數(shù)據(jù)的作用,就可以在不知道數(shù)據(jù)內(nèi)容的情況下通過(guò)再次發(fā)送這些數(shù)據(jù)達(dá)到愚弄接收端的目的财喳。例如察迟,有的系統(tǒng)會(huì)將鑒別信息進(jìn)行簡(jiǎn)單加密后進(jìn)行傳輸,這時(shí)攻擊者雖然無(wú)法竊聽(tīng)密碼耳高,但他們卻可以首先截取加密后的口令然后將其重放扎瓶,從而利用這種方式進(jìn)行有效的攻擊。再比如泌枪,假設(shè)網(wǎng)上存款系統(tǒng)中概荷,一條消息表示用戶(hù)支取了一筆存款,攻擊者完全可以多次發(fā)送這條消息而偷竊存款
重放攻擊的類(lèi)型
1.根據(jù)重放消息的接收方與消息的原定接收方的關(guān)系碌燕,重放攻擊可分為3種:
第一種是直接重放误证,即重放給原來(lái)的驗(yàn)證端,直接重放的發(fā)送方和接收方均不變修壕。
第二種是反向重放愈捅,將原本發(fā)給接收方的消息反向重放給發(fā)送方。
第三種是第三方重放慈鸠,將消息重放給域內(nèi)的其他驗(yàn)證端蓝谨。
2.基于重放法發(fā)生在什么回合,可以將重放攻擊分為兩類(lèi):
(1)在當(dāng)前回合外攻擊中青团,重放的消息來(lái)自協(xié)議當(dāng)前回合之外譬巫,因此至少涉及協(xié)議的兩個(gè)回合運(yùn)行,可以并發(fā)也可以順序地實(shí)現(xiàn)督笆。
①交錯(cuò)攻擊需要兩回合或多回合同時(shí)執(zhí)行協(xié)議芦昔,著名的例子是Lowe對(duì)NSPK協(xié)議的攻擊。 [5]
②經(jīng)典重放也涉及當(dāng)前回合外執(zhí)行協(xié)議娃肿,但不要求同時(shí)執(zhí)行協(xié)議咕缎。攻擊者存儲(chǔ)在前面的回合中所傳送的消息,并抓住機(jī)會(huì)重放它們料扰,對(duì)協(xié)議的當(dāng)前回合進(jìn)行攻擊锨阿。Denning和Sacco對(duì)NSSK協(xié)議的攻擊,就是經(jīng)典重放的一個(gè)著名例子记罚。
(2)在當(dāng)前回合內(nèi)攻擊中,重放的消息來(lái)自協(xié)議當(dāng)前回合壳嚎。
**3.考查攻擊者對(duì)消息重定向桐智,這種分類(lèi)法稱(chēng)為目的地分類(lèi)法末早。分類(lèi)如下。 **
(1)偏轉(zhuǎn)重放攻擊:重放消息重新定向说庭,發(fā)送給不同于原接收者的第三方然磷。這種情形可進(jìn)一步分為如下子類(lèi):
①重放消息重定向,發(fā)送給原發(fā)送者刊驴,稱(chēng)為反射重放攻擊姿搜。
②重放消息重定向,發(fā)送給第三方捆憎,即不同于原發(fā)送者和原接收方的第三方舅柜。
(2)攻擊者通過(guò)延時(shí)的方法(可能涉及不同的協(xié)議回合),將消息傳送給目的地躲惰,稱(chēng)為直接重放攻擊致份。
以上信息來(lái)自百度百科
簡(jiǎn)單操作流程如下
首先先確定數(shù)據(jù)包,獲取該數(shù)據(jù)包中的URL础拨。使用代碼或腳本間隔一定時(shí)間發(fā)送網(wǎng)絡(luò)請(qǐng)求氮块。若根據(jù)時(shí)間到推移,手動(dòng)對(duì)于請(qǐng)求參數(shù)的修改诡宗。進(jìn)行多次驗(yàn)證滔蝉。基本結(jié)構(gòu)圖如下:
多次請(qǐng)求驗(yàn)證塔沃,確定加密處蝠引。
妙用中間人攻擊進(jìn)行抓包
在很多情況下一個(gè)DevTools解決所有,但也有很少部分針對(duì)此進(jìn)行了限制芳悲。
中間人攻擊
中間人攻擊(Man-in-the-MiddleAttack立肘,簡(jiǎn)稱(chēng)“MITM攻擊”)是一種“間接”的入侵攻擊,這種攻擊模式是通過(guò)各種技術(shù)手段將受入侵者控制的一臺(tái)計(jì)算機(jī)虛擬放置在網(wǎng)絡(luò)連接中的兩臺(tái)通信計(jì)算機(jī)之間名扛,這臺(tái)計(jì)算機(jī)就稱(chēng)為“中間人”谅年。
中間人原理圖,如下所示
使用中間人進(jìn)行”代理“攔截和轉(zhuǎn)發(fā)肮韧。從而實(shí)現(xiàn)抓包的目的.
進(jìn)階
抓包抓不到融蹂?
多體現(xiàn)在Android抓包
強(qiáng)制代理
VPN轉(zhuǎn)發(fā)
各種斷點(diǎn)助力調(diào)試
程序斷點(diǎn)的相關(guān)概念便不在此過(guò)多贅述,若想了解請(qǐng)自行搜搜
DOM斷點(diǎn)
DOM斷點(diǎn)一般有三種方式弄企,subtree modification超燃、attribute modification、node removal拘领。如下圖所示意乓,
在這里使用下了一個(gè)node removal斷點(diǎn)。那么當(dāng)我們刪除此節(jié)點(diǎn)的時(shí)候?qū)⒂|發(fā)斷點(diǎn)约素。如下圖所示
JS斷點(diǎn)
Js斷點(diǎn)有兩種届良,一種是Js運(yùn)行斷點(diǎn)笆凌,一種是Js調(diào)試斷點(diǎn)。
Js運(yùn)行斷點(diǎn):當(dāng)網(wǎng)頁(yè)執(zhí)行Js的時(shí)便會(huì)立即進(jìn)入調(diào)試模式士葫。操作方式如下
首先打開(kāi)開(kāi)發(fā)者工具乞而,
然后進(jìn)入source選項(xiàng)卡
然后進(jìn)入右欄中 Event Listener Breakpoints中
最后勾選Script
即可開(kāi)啟,當(dāng)網(wǎng)站運(yùn)行時(shí)慢显。便會(huì)進(jìn)入debugger模式
Js調(diào)試斷點(diǎn): 此斷點(diǎn)需要開(kāi)發(fā)者的去下
首先打開(kāi)開(kāi)發(fā)者工具爪模,
然后進(jìn)入source選項(xiàng)卡
找到對(duì)應(yīng)位置,鼠標(biāo)左鍵點(diǎn)擊荚藻。
即可完成
若網(wǎng)頁(yè)運(yùn)行到此處屋灌,便會(huì)觸發(fā)斷點(diǎn)。
XHR斷點(diǎn)
XMLHttpRequest
(XHR)是一種創(chuàng)建AJAX請(qǐng)求的JavaScript API鞋喇。它的方法提供了在瀏覽器和服務(wù)器之間發(fā)送請(qǐng)求的能力声滥。
當(dāng)網(wǎng)站是Ajax請(qǐng)求當(dāng)時(shí)候,XHR斷點(diǎn)將是一個(gè)非常不錯(cuò)的調(diào)試技巧侦香。
XHR斷點(diǎn)也有兩種落塑,一種是發(fā)生任何XHR請(qǐng)求的時(shí)候都出發(fā)斷點(diǎn),另一種是特定條件的XHR斷點(diǎn)罐韩。
操作如下
打開(kāi)DevTools憾赁,進(jìn)入source選項(xiàng)卡。點(diǎn)開(kāi)XHR/fetch Breakpoints散吵。
鼠標(biāo)左鍵點(diǎn)擊旁邊的“+”號(hào)龙考,直接Enter即可完成。如下圖所示:
特定XHR斷點(diǎn):
鼠標(biāo)左鍵點(diǎn)擊旁邊的“+”號(hào)矾睦,在輸入欄中輸入限定條件晦款,如Id,輸入完成后Enter
Hook
Hook 又叫作鉤子技術(shù)枚冗,它就是在程序運(yùn)行的過(guò)程中缓溅,對(duì)其中的某個(gè)方法進(jìn)行重寫(xiě),在原有的方法前后自定義的代碼赁温。相當(dāng)于在系統(tǒng)沒(méi)有調(diào)用該函數(shù)之前坛怪,鉤子程序就先捕獲該消息,可以先得到控制權(quán)股囊,這時(shí)鉤子函數(shù)便可以加工處理(改變)該函數(shù)的執(zhí)行行為袜匿。執(zhí)行函數(shù)后釋放控制權(quán)限,繼續(xù)運(yùn)行原有邏輯稚疹。
示意圖如下居灯,
(func(args...){
// Hook 邏輯
})(args...)
常實(shí)現(xiàn)的有 Devtools Hook,本地文件映射Hook,插件Tempermonkey Hook
Devtools 直接注入:
Devtools 直接注入的優(yōu)點(diǎn):可以直接把Hook函數(shù)copy至console中穆壕,直接運(yùn)行待牵。簡(jiǎn)單便捷。
缺點(diǎn):比較難修改已經(jīng)注入的Hook喇勋。難以復(fù)用。
文件映射Hook
在本地書(shū)寫(xiě)Hook函數(shù)偎行,后使用DevTools中source選項(xiàng)卡中的Overrides進(jìn)行文件映射川背。當(dāng)網(wǎng)頁(yè)運(yùn)行滿(mǎn)足Hook條件時(shí)候,便會(huì)觸發(fā)Hook函數(shù)蛤袒。
Tempermonkey Hook
Tampermonkey 是第一個(gè)可以用來(lái)讓 Chrome 支持更多 UserScript 的 Chrome 擴(kuò)展熄云,它可以加入更多的 Chrome 本身不支持的用戶(hù)腳本功能。Tempermonkey下載與使用請(qǐng)自行搜索
優(yōu)點(diǎn):可定制化妙真,通用化缴允。有針對(duì)的進(jìn)行開(kāi)發(fā)。
缺點(diǎn):需要下載珍德,需要學(xué)習(xí)Tempermonkey 的使用
JS注入
當(dāng)我們?cè)L問(wèn)網(wǎng)站時(shí)候练般,一般情況下會(huì)將Js緩存到本地,進(jìn)行相關(guān)運(yùn)行锈候。那么說(shuō)如果我將本地的保存薄料,修改其中邏輯,并覆蓋其服務(wù)器下發(fā)的Js泵琳。這就是注入攻擊
其原理是保存服務(wù)器下發(fā)的Js文件形成類(lèi)似于“緩存”的功能摄职,修改并覆蓋下發(fā)Js文件即可完成。
常見(jiàn)的實(shí)現(xiàn)方法有三種
DevTools中source選項(xiàng)卡中的Overrides進(jìn)行文件映射
-
Tempermonkey
以上操作获列,請(qǐng)參考上文
-
Charles或其他第三方工具
image
點(diǎn)位插樁調(diào)試
其核心原理為:監(jiān)聽(tīng)核心變量
首先在對(duì)應(yīng)位置鼠標(biāo)右鍵呼出谷市,選擇add conditional break...
輸入監(jiān)聽(tīng)值
放入 Logpoint中。完成后運(yùn)行js即可在對(duì)應(yīng)級(jí)別內(nèi)看到日志輸出
<center>
<font color=red size=5px style="font-family: cursive">希望以上方法與技巧對(duì)你有所幫助</br></font>
<font color=red size=3px style="font-family: cursive">知道的越多击孩,不知道的越多迫悠。</font>
</center>