python模擬登陸的幾種方法
客戶端向服務(wù)器發(fā)送請(qǐng)求,cookie則是表明我們身份的標(biāo)志。而“訪問(wèn)登錄后才能看到的頁(yè)面”這一行為,恰恰需要客戶端向服務(wù)器證明:“我是剛才登錄過(guò)的那個(gè)客戶端”。于是就需要cookie來(lái)標(biāo)識(shí)客戶端的身份,以存儲(chǔ)它的信息(如登錄狀態(tài))
1、先在瀏覽器中登錄,然后打開開發(fā)者選項(xiàng),找到一個(gè)請(qǐng)求方法為POST的請(qǐng)求,復(fù)制Requests Headers中的cookie在爬取需要登錄的頁(yè)面時(shí)加上此cookies即可
import requestsurl = '......'headers = {'cookies':'......'}response = requests.get(url=url, headers=headers)2、 模擬登錄,并用session維持會(huì)話,用requests的session模擬登錄后session會(huì)記錄cookies,接下來(lái)的請(qǐng)求會(huì)被放在同一個(gè)會(huì)話中。舉個(gè)簡(jiǎn)單例子,在 requests 中,如果直接利用 get()或 post()等方法的確可以做到模擬網(wǎng)頁(yè)的請(qǐng)求,但是這實(shí)際 上是相當(dāng)于不同的會(huì)話,也就是說(shuō)相當(dāng)于你用了兩個(gè)瀏覽器打開了不同的頁(yè)面。設(shè)想這樣一個(gè)場(chǎng)景,第一個(gè)請(qǐng)求利用 post()方法登錄了某個(gè)網(wǎng)站,第二次想獲取成功登錄后的自 己的個(gè)人信息,你又用了一次 get()方法去請(qǐng)求個(gè)人信息頁(yè)面。 實(shí)際上,這相當(dāng)于打開了兩個(gè)瀏覽器, 這是兩個(gè)完全不相關(guān)的會(huì)話,能成功獲取個(gè)人信息嗎?那當(dāng)然不能
import requests'''下面的data是先在瀏覽器中登錄,然后打開開發(fā)者選項(xiàng),找到一個(gè)請(qǐng)求方法為POST的請(qǐng)求,復(fù)制里面的Form Data'''url = '......'data = { username:'......', password:flz_sanqianchi, rememberMe:true, lt:LT-82465-9HtQnC7ZASZHohtnQlrqMvXo7cI2B7, execution:e1s1, }headers = {'user-agent':'Mozolla/5.0'}'''這里用requests的session來(lái)請(qǐng)求網(wǎng)頁(yè),做到維持同一會(huì)話的目的'''session = requests.Session()reqsonse = session.post(url=url, headers=headers, data=data)'''接下來(lái)就可以請(qǐng)求別的登陸后的頁(yè)面,而不需要處理cookies'''url2 = '這里是已經(jīng)登錄后的某一頁(yè)面'response = session.get(url=url2, headers=headers)以上這篇python模擬登陸,用session維持回話的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選