新聞中心
一、教程簡(jiǎn)介

1.1 基本介紹
通過分析登陸流程并使用 Python 實(shí)現(xiàn)模擬登陸到一個(gè)實(shí)驗(yàn)提供的網(wǎng)站,在實(shí)驗(yàn)過程中將學(xué)習(xí)并實(shí)踐 Python 的網(wǎng)絡(luò)編程,Python 實(shí)現(xiàn)模擬登陸的方法,使用 Firefox 抓包分析插件分析網(wǎng)絡(luò)數(shù)據(jù)包等知識(shí)。
模擬登錄可以幫助用戶自動(dòng)化完成很多操作,在不同場(chǎng)合下有不同的用處,無論是自動(dòng)化一些日常的繁瑣操作還是用于爬蟲都是一項(xiàng)很實(shí)用的技能。本課程通過 Firefox 和 Python 來實(shí)現(xiàn),環(huán)境要求如下:
- Python 庫:urllib, http.cookiejar, Django
- Firefox 要求:裝有 live http header插件 (已提供)
1.3 材料
1.4 準(zhǔn)備
1) 安裝抓包插件Live Http Headers
2)啟動(dòng)web應(yīng)用
使用 ps -aux | grep codebox 查詢獲得 codebox 的進(jìn)程號(hào),然后使用 kill -9 進(jìn)程號(hào) 停止 codebox 進(jìn)程。執(zhí)行過程見下圖:
首先安裝demo依賴的web框架django,并測(cè)試是否安裝成功:
啟動(dòng)成功后在瀏覽器中輸入 http://localhost:8000/polls 看到登錄頁面表示啟動(dòng)成功
二、分析登錄過程
要通過編程實(shí)現(xiàn)登錄,首先需要理解一般Web應(yīng)用的登陸過程。
2.1 抓取請(qǐng)求
2.2原理分析
為什么是2個(gè)請(qǐng)求而不是1個(gè)呢?通過分析登錄請(qǐng)求發(fā)現(xiàn),登陸成功之后服務(wù)器發(fā)送了302重定向響應(yīng),服務(wù)器要求瀏覽器重新請(qǐng)求首頁,這就產(chǎn)生了第二個(gè)請(qǐng)求。再來分析第二個(gè)請(qǐng)求,可以看到它相比登錄請(qǐng)求多了一個(gè)請(qǐng)求頭:
整個(gè)登錄流程如下圖所示:
服務(wù)器到底是如何區(qū)別不同用戶的session的?為什么登陸成功會(huì)后要回寫cookie呢?
2.3小結(jié)
對(duì)于服務(wù)器來說,登錄=驗(yàn)證+寫session。對(duì)于瀏覽器來說,登錄=發(fā)送登錄信息+獲取帶sessionid的cookie??梢哉f,只要獲得了sessionid,就算實(shí)現(xiàn)了模擬登錄。有了它我們便可以游離于系統(tǒng)之中。
三、使用Python實(shí)現(xiàn)登錄(簡(jiǎn)單實(shí)例)
理解了登錄過程的原理和細(xì)節(jié)之后,開始用Python來編寫模擬登陸程序吧。
3.1導(dǎo)入模塊
不要忘記編寫文件頭、導(dǎo)入必要的依賴模塊
3.2構(gòu)造登錄請(qǐng)求
登錄請(qǐng)求的實(shí)體部分如下:
全部Python代碼:
附加參數(shù)
防盜鏈
Web 應(yīng)用的資源都是有url的,只要獲得了url就能夠在任何地方引用。聽起來很方便,但這可能會(huì)導(dǎo)致你的資源被別人盜用。
3.3發(fā)送請(qǐng)求并保存cookie
Python代碼如下:
如果登陸成功
就可以在指定的文件my_cookies.txt中看到sessionid了。
3.4 使用cookie訪問系統(tǒng)服務(wù)
在我們模擬登錄成功后,就可以直接通過opener打開這個(gè)url來使用這項(xiàng)系統(tǒng)服務(wù)。代碼實(shí)現(xiàn)如下:
如果有是在另外一個(gè)python文件中使用這個(gè)cookie的話,再打開url之前需要先載入cookie:
教程取自實(shí)驗(yàn)樓。
分享名稱:通過抓包,實(shí)現(xiàn)Python模擬登陸各網(wǎng)站,原理分析!
鏈接URL:http://fisionsoft.com.cn/article/cdsiphj.html


咨詢
建站咨詢
