當前位置:
首頁 > 最新 > python:模擬瀏覽器登陸網頁

python:模擬瀏覽器登陸網頁

平時爬取網頁,以及模擬12306搶票中,最重要的一點就是模擬瀏覽器輸入驗證碼,登陸網頁。

只有打開驗證碼這一關,才能進行下一步操作。 下面,我們先來講一講簡單地模擬登陸,這次模擬登錄的網站是英語課本隨行課堂《視聽說教程3》上的聽力訓練網址:外教社課程中心

工具如下:

IDE:pycharm python3.6

OS:window10

抓包分析

首先我們看一下 url get到的網頁:

看見上面的登錄按鈕了嗎? 這也就是登錄的窗口,我們點擊一下:

F12加F5刷新可以得到,我們點擊之後,訪問的真正的url,請求方式是get請求。

當我隨便輸入一個賬號和密碼,以及驗證碼時,瀏覽器會提交給伺服器一個post請求,而我們輸入的數據存儲在表單之中,利用F12可以容易分析到:

我進行一個post請求,訪問的真正的url是我畫紅線的部分,而我提交的數據呢? 我們繼續往下面找:

看我所標誌的區域,分別是我剛剛輸入的賬號,密碼,以及一些驗證信息。 這裡的賬號和密碼均為明文,並未加密,所以很容易分析:我剛剛輸入的賬號和密碼分別是:sghen/123456(這裡的抓包分析之後,如果大家仔細想想,通過wifi是不是就可以很容易獲取別人的賬號和密碼了呢。)

bs4爬取網頁分析

而其中的「lt」是一個隨機的網頁驗證碼,後面的內容,通過之前的爬蟲學習,我們應該很容易的得到:

如圖,我所指的標籤中,「value」屬性所對應的值便是這個網頁驗證碼,所以,代碼如下:

http協議的一點理解:

在這裡說一下session模塊。session()的作用是建立一個會話,它能夠自動的保存cookie值,在這裡補充一點http協議的知識:http(或者https)請求網頁是無狀態的,也就是不會建立聯繫。比如,我用電腦訪問了這個網頁,然後第二次又同樣的進行訪問,伺服器那邊是不知道兩次訪問的人是不是都是我這台客戶機的。 如果要建立聯繫,那麼就需要cookie。 當客戶機發出一個http請求的時候,伺服器如果接收到了請求,那麼它會返回一個set-cookie給客戶機。同時,客戶機將會把這個數據保存到自己請求頭中,對應的鍵叫做:」cookie「。兒之和鍵對應的值就是cookie值,如果你進行下一次訪問的時候,在請求頭裡面加上了這個cooike值,那麼伺服器一段將能夠判斷出你是上一次訪問的客戶機,所以就能夠進行下一步的訪問。

說到這裡,我們就可以編寫代碼了:

值得注意的是:res2.encoding=res2.apparent_encoding這句十分的重要,因為大量網頁為了使用戶訪問時的速度更快,一般都會對網頁進行壓縮傳輸,通常使用的壓縮方式是:gzip

如果不對response進行轉碼的話,輸出的內容很可能是亂碼,所以這一句是很有必要的。

完整代碼:

我們來查看一下剛剛保存的html文件,是否模擬登錄成功:

顯然,已經登錄成功! 下面就可以進一步抓包,完成更多操作了,不用多說,大家應該懂的,嘿嘿!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 生物信息與python 的精彩文章:

TAG:生物信息與python |