【網(wǎng)絡(luò)爬蟲教學(xué)】一分鐘帶你快速找出JS加密入口(一)

Hi,大家好滓走,歡迎大家參閱由IT貓之家精心制作的JS實(shí)戰(zhàn)系列教學(xué)課程垦江,我是作者叮當(dāng)貓,在上期教學(xué)中搅方,我分享了如何快速尋找拼多多商城加密字段的入口函數(shù)比吭,不知大家學(xué)會了沒有呢?如果您是第一次觀看本教學(xué)姨涡,歡迎前往:網(wǎng)絡(luò)爬蟲頻道查閱衩藤,本期我們就來探討下,在日常爬取數(shù)據(jù)的過程中涛漂,當(dāng)我們遇到請求頭部授權(quán)加密時赏表,如何處理检诗,我們將以亞航官網(wǎng)作為演示的目標(biāo),如大家有不懂的歡迎留言瓢剿,或加入我們的QQ技術(shù)交流群探討:544185435

首選我們打開亞航的首頁逢慌,并輸入查詢條件,我們需要取得它的查詢請求间狂,以便于我們分析它的加密字段攻泼,這里我們?yōu)榱烁玫难菔荆捎昧薋iddler進(jìn)行抓包前标,大家在點(diǎn)擊搜索前記得打開Fiddler坠韩。

通過簡單的分析,我們不難發(fā)現(xiàn)炼列,它的請求接口為:https://k.airasia.com/shopprice-pwa/0/0/CAN/KUL/2020-01-14/1/0/0?,那么我們再看看Fiddler左下角的請求窗口音比,里面的“Authorization”正是我們要分析的加密字段俭尖,我們的首要任務(wù)是打開調(diào)試工具,尋找加密字段是如何生成的洞翩,So稽犁,開啟調(diào)試之旅吧!

像往常一樣骚亿,我們可以試試最簡單粗暴的方式已亥,直接在控制臺搜索相關(guān)的字段名稱,我們可以看到来屠,找出了四個匹配的請求虑椎,那么我們逐個點(diǎn)進(jìn)去看看吧,(對了俱笛,最后一個請求捆姜,看上去應(yīng)該是谷歌的統(tǒng)計(jì)文件,所以我們沒必要看這個請求迎膜。)

不知大家發(fā)現(xiàn)沒泥技,在打開main開頭的那個JS文件時,非常的卡磕仅,而且需要非常長的時間才能加載出來珊豹,在之前分析該加密字段時,該文件大概約3萬多行代碼榕订,當(dāng)時要加載它需要20分鐘左右店茶,但這次分析時,我發(fā)現(xiàn)它約有10萬+行的代碼量卸亮,所以在調(diào)試的時候非常非常的卡忽妒,導(dǎo)致我錄制視頻的時候都耽誤了許久,這也促使我放棄了通過這種尋找方式,So段直,其實(shí)我今天要分享的是另一種查詢方式吃溅,當(dāng)然其實(shí)也是要經(jīng)歷這個調(diào)試過程的,但相對來說鸯檬,我們要調(diào)試的次數(shù)則相對少了許多决侈。

下面,我們將使用chrome extension構(gòu)建一個函數(shù)鉤子喧务,進(jìn)行debugger赖歌,使用它,我們將可以快速的找到加密的入口功茴;以節(jié)省更多的調(diào)試時間庐冯;它的實(shí)現(xiàn)原理是:監(jiān)聽XMLHttpRequest接口,一旦發(fā)現(xiàn)匹配數(shù)據(jù)則觸發(fā)debugger強(qiáng)制斷下坎穿,事實(shí)上展父,在很多諸如Cookie加密、或是header加密里鉤子函數(shù)非常有效玲昧,命中率極高栖茉,由于本文的目標(biāo)是分析授權(quán)加密,它屬于header加密的一種孵延,所以我們只需監(jiān)聽它的setRequestHeader(可在此查看API屬性:?https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/setRequestHeader?)接口即可吕漂,它有兩個參數(shù),我們只需實(shí)現(xiàn)這個方法即可尘应。

var org = window.XMLHttpRequest.prototype.setRequestHeader;

window.XMLHttpRequest.prototype.setRequestHeader = function(key,value){

? ? if(key=='Authorization'){

debugger;

? ? }

? ? return org.apply(this,arguments);

}

上述為最簡單的一個JS重寫接口案例惶凝,我們定義了org函數(shù)用以接收源setRequestHeader對象,然后將setRequestHeader賦值成我們自定義的新函數(shù)菩收,一旦網(wǎng)頁調(diào)用setRequestHeader接口梨睁,事實(shí)上它調(diào)用的是我們定義好的接口,那么勢必就會觸發(fā)上述的判斷條件娜饵,一旦條件成立坡贺,且控制臺為開啟模式時則會自動斷下來,我們便可看到它所提交的信息箱舞,但事實(shí)上遍坟,僅僅依靠上述的文件是不行的,我們還需要一個調(diào)用者晴股,這個調(diào)用者不是我們愿伴,而是瀏覽器,chrome提供了一個非常強(qiáng)大的擴(kuò)展機(jī)制电湘,使得我們可以自定義chrome隔节,而且鹅经,擴(kuò)展執(zhí)行的空間是與實(shí)際的Dom環(huán)境隔離的,也就是說網(wǎng)頁不知道是誰篡改了接口怎诫,并且瘾晃,我們可以在網(wǎng)頁加載之前就重寫了自帶的函數(shù),因?yàn)閿U(kuò)展的執(zhí)行順序比網(wǎng)頁優(yōu)先幻妓,事實(shí)上蹦误,我們可以使用擴(kuò)展開發(fā)出各式各樣的擴(kuò)展,但我們這里僅簡單的介紹如何編寫這個插件肉津,其他的不在本文討論的范圍內(nèi)强胰。

chrome extension 事實(shí)上就是一個目錄+文件的結(jié)構(gòu),其中根目錄必須包含manifest.json這個文件妹沙,我們?nèi)绻{(diào)用我們的JS偶洋,就必須定義好相關(guān)的權(quán)限,我們這里僅僅只是調(diào)用Content Script腳本初烘,所以僅僅只給了個”tab”的權(quán)限涡真,大家如果有其他操作請前往非官方中文API查詢, 而manifest.json 文件的內(nèi)容如下:

{

"name": "Injection",

"version": "2.0",

"description": "RequestHeader鉤子",

"manifest_version": 2,

"content_scripts": [

{

"matches": [

"<all_urls>"

],

"js": [

"Injection.js"

],

"all_frames": true,

"permissions": [

"tabs"

],

"run_at": "document_start"

}

]

}

我們不妨將上面我們寫的JS代碼保存到一個JS文件中肾筐,并命名為:“Injection.js”;請記住缸剪,這兩個文件都要放在同一個目錄中吗铐,然后,我們打開chrome杏节,點(diǎn)擊設(shè)置 -> 點(diǎn)擊更多工具 -> 點(diǎn)擊擴(kuò)展插件 進(jìn)入插件頁面唬渗,如果我們的瀏覽器是非開發(fā)者模式,則需要點(diǎn)擊打開開發(fā)者模式奋渔,然后點(diǎn)擊加載以解壓的擴(kuò)展程序镊逝,選擇我們剛創(chuàng)建的那個文件夾,(是文件夾不需要點(diǎn)進(jìn)去)點(diǎn)擊確定后添加完成嫉鲸。

添加完成后會像上圖紅色框框里標(biāo)識的那樣撑蒜,開啟后我們就可以進(jìn)行后續(xù)的捕獲操作了。

回到網(wǎng)站這邊玄渗,請確定瀏覽器的任務(wù)欄中有插件的圖標(biāo)后座菠,點(diǎn)擊Search進(jìn)行航班搜索,如無意外的話呢藤树,它應(yīng)該就會命中斷點(diǎn)并停下來浴滴,如果沒有斷下來,請刷新一遍頁面岁钓,這里我們是不是就能看到我們要的參數(shù)了呢升略?嗯微王,就是這么簡單,你學(xué)會了嗎品嚣?

So炕倘,后面的操作就跟之前文章的一樣啦,慢慢的去分析就能找到入口囖腰根,有一點(diǎn)值得注意的是激才,由于亞航這次更新后加密文件行數(shù)高達(dá)10萬+行,這使得我們調(diào)試起來非常的麻煩额嘿,因?yàn)榇蟛糠謺r間都浪費(fèi)在等待加載過程中了瘸恼,這里我給大家提供一下最關(guān)鍵的入口關(guān)鍵詞:ssrDataTkn ,事實(shí)上册养,我們直接搜索這個“ssrDataTkn”就可以很快找到入口了东帅,這是為了減少大家調(diào)試的時間,其實(shí)在往下找我們很很快就能找到球拦,只是調(diào)試可能要很久靠闭,而實(shí)際上入口函數(shù)是在main開頭的那個請求里面,因?yàn)榧虞d非常的緩慢坎炼,我這里就直接將入口函數(shù)貼上來啦愧膀,它位于78341行的:processSSRData 函數(shù),參數(shù)是從接口:https://k.airasia.com/ssr/getssrdata?返回的數(shù)據(jù)中提取谣光,詳細(xì)操作可以前往Youtube檩淋、YoukuB站?上觀看我們精心制作的視頻萄金!

擴(kuò)展延申

今天寫的文章有點(diǎn)長蟀悦,感謝各位看官耐心的看完,事實(shí)上上述的JS代碼嵌入到擴(kuò)展中氧敢,并不能起到攔截的效果日戈,因?yàn)樵趩訒r就已經(jīng)執(zhí)行完了,所以我們需要做一點(diǎn)小小的修改孙乖。

var code = function(){

var org = window.XMLHttpRequest.prototype.setRequestHeader;

window.XMLHttpRequest.prototype.setRequestHeader = function(key,value){

if(key=='Authorization'){

debugger;

}

return org.apply(this,arguments);

}

}

var script = document.createElement('script');

script.textContent = '(' + code + ')()';

(document.head||document.documentElement).appendChild(script);

script.parentNode.removeChild(script);

請將上述代碼替換成上面的JS代碼浙炼,最后再次感謝大家觀看本教學(xué),如有任何疑問或建議歡迎留言的圆,本文僅作學(xué)術(shù)交流之用鼓拧,如若閣下認(rèn)為本文侵犯了您的權(quán)益,請與我留言越妈,我將配合刪除季俩!

原文轉(zhuǎn)至:IT貓之家?轉(zhuǎn)載請注明出處!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梅掠,一起剝皮案震驚了整個濱河市酌住,隨后出現(xiàn)的幾起案子店归,更是在濱河造成了極大的恐慌,老刑警劉巖酪我,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件消痛,死亡現(xiàn)場離奇詭異,居然都是意外死亡都哭,警方通過查閱死者的電腦和手機(jī)秩伞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來欺矫,“玉大人纱新,你說我怎么就攤上這事∧屡浚” “怎么了脸爱?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長未妹。 經(jīng)常有香客問我簿废,道長,這世上最難降的妖魔是什么络它? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任族檬,我火速辦了婚禮,結(jié)果婚禮上化戳,老公的妹妹穿的比我還像新娘导梆。我一直安慰自己,他們只是感情好迂烁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著递鹉,像睡著了一般盟步。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躏结,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天却盘,我揣著相機(jī)與錄音,去河邊找鬼媳拴。 笑死黄橘,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的屈溉。 我是一名探鬼主播塞关,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼子巾!你這毒婦竟也來了帆赢?” 一聲冷哼從身側(cè)響起小压,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎椰于,沒想到半個月后怠益,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘾婿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年蜻牢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偏陪。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡抢呆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出竹挡,到底是詐尸還是另有隱情镀娶,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布揪罕,位于F島的核電站梯码,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏好啰。R本人自食惡果不足惜轩娶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望框往。 院中可真熱鬧鳄抒,春花似錦、人聲如沸椰弊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秉版。三九已至贤重,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間清焕,已是汗流浹背并蝗。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秸妥,地道東北人滚停。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像粥惧,于是被迫代替她去往敵國和親键畴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 概要 64學(xué)時 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,197評論 0 3
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,101評論 1 32
  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,201評論 0 7
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級和職位的變化影晓,入門級到專家級镰吵,廣度和深度都會有所增加檩禾。 題目類型: 理論知...
    怡寶丶閱讀 2,582評論 0 7
  • # Ajax標(biāo)簽(空格分隔): 筆記整理---[TOC]### 從輸入網(wǎng)址開始:- 在學(xué)習(xí)ajax之前,你應(yīng)該先了...
    V8閱讀 259評論 1 0