python實現(xiàn)xd一站式登錄的三種方案

姓名:趙坤? ? 學(xué)號:20021210734

【嵌牛導(dǎo)讀】python語言由于其簡潔拉宗、靈活的語言特性咖祭,經(jīng)常被用來開發(fā)一些小工具來協(xié)助辦公,爬蟲就是其中廣泛應(yīng)用之一砾赔。網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛蝌箍,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間暴心,更經(jīng)常的稱為網(wǎng)頁追逐者)妓盲,是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本专普。通俗的講悯衬,爬蟲就是能夠自動訪問互聯(lián)網(wǎng)并將網(wǎng)站內(nèi)容下載下來的的程序或腳本,類似一個機(jī)器人脆诉,能把別人網(wǎng)站的信息弄到自己的電腦上甚亭,再做一些過濾贷币,篩選击胜,歸納,整理役纹,經(jīng)過整合的數(shù)據(jù)往往能產(chǎn)生更大的價值偶摔。爬蟲時,有的網(wǎng)站需要我們登錄后才能訪問關(guān)鍵信息促脉,如淘寶辰斋,必須登陸后才能看到自己收藏的商品。因此如何完成登錄操作是爬蟲技術(shù)的重要一環(huán)瘸味,web通信中的登錄宫仗,主要是通過cookie和session來進(jìn)行確認(rèn)的,今天我們就來分析一下xd一站式服務(wù)大廳的幾種登陸方案旁仿。

【嵌牛鼻子】python實現(xiàn)xd一站式登錄的3種方案

【嵌牛提問】還有其他登陸的方案嘛?

【嵌牛正文】如下:

一藕夫、如何判斷我們是否登錄成功?

可以使用如下網(wǎng)址進(jìn)行驗證:http://ehall.xidian.edu.cn/jsonp/userDesktopInfo.json在登陸成功時枯冈,瀏覽器已經(jīng)保存了認(rèn)證我們信息的cookie毅贮,因此在瀏覽器url欄中輸入該鏈接,可以請求到我們的個人信息(服務(wù)器認(rèn)為這是一個合法請求)尘奏。

圖一滩褥、正常登錄狀態(tài)下截圖

圖二、登陸成功時請求到的個人信息

如果是非登錄狀態(tài)下請求上述網(wǎng)頁炫加,則不會請求到任何數(shù)據(jù)瑰煎,如下圖所示:

圖三铺然、沒登錄狀態(tài)下請求到的響應(yīng)

接下來我們會在python代碼中請求這個網(wǎng)頁,如果能成功請求到數(shù)據(jù)酒甸,則說明我們已經(jīng)保持了登錄的狀態(tài)探熔。

二、方案一:獲取瀏覽器cookie保持登錄

正如前面提到的烘挫,當(dāng)我們在瀏覽器中輸入賬號诀艰、密碼,完成登錄操作后饮六,服務(wù)器會給瀏覽器返回一個cookie信息其垄,來存儲我們用戶的身份,因此我們只需要獲取到這個cookie卤橄,就可以在python代碼中也保持登陸狀態(tài)绿满,欺騙過服務(wù)器。

瀏覽器中獲取cookie的方式有很多窟扑,每個瀏覽器的操作也都大同小異喇颁,我們這里使用chrome進(jìn)行展示。

1嚎货、首先成功登錄進(jìn)入教務(wù)處橘霎,如上述圖一所示頁面;

2殖属、摁一下F12姐叁,喚起chrome的開發(fā)者工具,并點擊進(jìn)入Network標(biāo)簽下洗显,勾選下圖所示內(nèi)容外潜;

圖四、沒抓包時的devtools

3挠唆、如上提示所示处窥,摁下ctrl+R,強(qiáng)制刷新頁面玄组,然后再抓到的包中滔驾,任選一個user開頭的包,如我當(dāng)前選取的是userSearchHistory開頭的包巧勤,點擊這個包嵌灰,在response headers欄目下,復(fù)制出來其中的cookie信息即可颅悉。

圖五沽瞭、瀏覽器抓包獲取cookie

4、python模擬發(fā)送請求剩瓶,這里我們使用requests模塊發(fā)送上述提到的http://ehall.xidian.edu.cn/jsonp/userDesktopInfo.json請求驹溃,然后打印服務(wù)器返回的數(shù)據(jù)城丧,看看其中是否包含了圖二中展示的數(shù)據(jù)。

圖六豌鹤、數(shù)據(jù)請求代碼

根據(jù)圖七中的部分?jǐn)?shù)據(jù)亡哄,我們可以看到的確和圖二中的數(shù)據(jù)一致,成功請求到了我的個人信息數(shù)據(jù)布疙,方案一講解到此結(jié)束蚊惯。

圖七、部分返回數(shù)據(jù)截圖

三灵临、方案二:使用selenium完成模擬登錄并獲取cookie

Selenium簡介:Selenium?是一個用于Web應(yīng)用程序測試的工具截型。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣儒溉。支持的瀏覽器包括IE(7, 8, 9, 10, 11)宦焦,Mozilla FirefoxSafari顿涣,GoogleChrome波闹,Opera等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應(yīng)用程序看是否能夠很好得工作在不同瀏覽器和操作系統(tǒng)之上涛碑。測試系統(tǒng)功能——創(chuàng)建回歸測試檢驗軟件功能和用戶需求精堕。支持自動錄制動作和自動生成?.NetJava锌唾、Perl等不同語言的測試腳本锄码。

selenium和chrome driver安裝教程---沒有安裝的朋友可以參考這篇文章進(jìn)行環(huán)境配置

從上面的介紹可以知道,使用selenium實現(xiàn)登錄就是我們在python程序中預(yù)先制定好瀏覽器的操作流程晌涕,比如訪問什么網(wǎng)頁,需要點擊什么按鈕痛悯,在什么位置余黎、什么時間輸入什么內(nèi)容等等,實際上就是用代碼復(fù)現(xiàn)人類真實的與瀏覽器交互的行為载萌,代碼如下惧财。

圖八、數(shù)據(jù)請求代碼

圖九扭仁、模擬瀏覽器執(zhí)行動作過程

可以看到我們使用selenium也是成功獲取到了全部的cookie信息和最終要的個人數(shù)據(jù)垮衷。

圖十、執(zhí)行結(jié)果分析

四乖坠、方案三:使用http協(xié)議實現(xiàn) post 登錄并逆向加密js

1搀突、對教務(wù)處發(fā)起登錄的請求進(jìn)行抓包分析,發(fā)現(xiàn)登陸時提交的參數(shù)一共有如下7個熊泵,其中password是經(jīng)過加密的仰迁,It根據(jù)經(jīng)驗知道是服務(wù)器返回的一串標(biāo)識符甸昏,一般存在于網(wǎng)頁源碼中,后面四個參數(shù)都是固定不變的徐许,因此我們只要找到password和It就可以了施蜜。

圖十一、登錄抓包結(jié)果

2雌隅、經(jīng)過在網(wǎng)頁源碼中尋找翻默,我們定位到了如下內(nèi)容,都是隱藏的input標(biāo)簽恰起,可以看到It在其中冰蘑,并且其余的四個登陸相關(guān)參數(shù)也在其中。多次刷新網(wǎng)頁之后也可以驗證我們之前說的村缸,It是變動的祠肥,而其余四個字段是不變的,不過我們還發(fā)現(xiàn)了一個不曾見到的字段“pwdDefaultEncryptSalt”梯皿,根據(jù)經(jīng)驗知道這是加密算法需要的“鹽”邮辽。

圖十二活喊、網(wǎng)頁源碼分析

3、接下來就只剩password加密算法的定位了,在devtools中搜索password字段坎炼,成功定位到可能存在加密的位置,并且看到了加密算法AES使套,而且前面提到的pwdDefaultEncryptSalt也在此處得到了應(yīng)用病往,猜測應(yīng)該是這里了。

圖十三冤议、加密位置定位

4斟薇、重新發(fā)送一次登錄請求,看能否在此處斷下來恕酸,果然斷下來了堪滨,只不過走的是下面的流程,經(jīng)過驗證后_p1的確是前面猜測pwdDefaultEncryptSalt參數(shù)蕊温,_p0是我們輸入的密碼123456袱箱。接下來只需要解這個加密算法即可,跳到這個AES加密算法定義的位置看看义矛。

圖十四发笔、斷點效果

5、跳到了這個文件中凉翻,可以看到用的是標(biāo)準(zhǔn)的croptyJS加密的了讨,那我們就不用扣代碼了,直接在py中調(diào)用crypto庫就可以了---實際上這個代碼也非常的好扣,直接整個文件拿下來就可以了量蕊。

圖十五铺罢、AES加密算法定位

6、由于使用post協(xié)議登錄這部分極可能被濫用残炮,為了不給教務(wù)網(wǎng)站維護(hù)者造成困擾韭赘,這部分代碼就不公布出來了,按照以上思路來做是可以正常實現(xiàn)登錄的势就。希望以上分享大家能喜歡泉瞻,謝謝大家看到這里。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苞冯,一起剝皮案震驚了整個濱河市袖牙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舅锄,老刑警劉巖鞭达,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異皇忿,居然都是意外死亡畴蹭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門鳍烁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叨襟,“玉大人,你說我怎么就攤上這事幔荒『觯” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵爹梁,是天一觀的道長右犹。 經(jīng)常有香客問我,道長卫键,這世上最難降的妖魔是什么傀履? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮莉炉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碴犬。我一直安慰自己絮宁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布服协。 她就那樣靜靜地躺著绍昂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窘游,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天唠椭,我揣著相機(jī)與錄音,去河邊找鬼忍饰。 笑死贪嫂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的艾蓝。 我是一名探鬼主播力崇,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赢织!你這毒婦竟也來了亮靴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤于置,失蹤者是張志新(化名)和其女友劉穎茧吊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體八毯,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡搓侄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宪彩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片休讳。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖尿孔,靈堂內(nèi)的尸體忽然破棺而出俊柔,到底是詐尸還是另有隱情,我是刑警寧澤活合,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布雏婶,位于F島的核電站,受9級特大地震影響白指,放射性物質(zhì)發(fā)生泄漏留晚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一告嘲、第九天 我趴在偏房一處隱蔽的房頂上張望错维。 院中可真熱鬧,春花似錦橄唬、人聲如沸赋焕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隆判。三九已至犬庇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侨嘀,已是汗流浹背臭挽。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留咬腕,地道東北人欢峰。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像郎汪,于是被迫代替她去往敵國和親赤赊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

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