溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python利用requests.Session如何實(shí)現(xiàn)一個(gè)模擬登錄功能

發(fā)布時(shí)間:2020-11-18 14:56:44 來(lái)源:億速云 閱讀:1235 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

Python利用requests.Session如何實(shí)現(xiàn)一個(gè)模擬登錄功能?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

登錄特點(diǎn):明文傳輸,有特殊標(biāo)志數(shù)據(jù)

會(huì)話(huà)對(duì)象requests.Session能夠跨請(qǐng)求地保持某些參數(shù),比如cookies,即在同一個(gè)Session實(shí)例發(fā)出的所有請(qǐng)求都保持同一個(gè)cookies,而requests模塊每次會(huì)自動(dòng)處理cookies,這樣就很方便地處理登錄時(shí)的cookies問(wèn)題。在cookies的處理上會(huì)話(huà)對(duì)象一句話(huà)可以頂過(guò)好幾句urllib模塊下的操作。即相當(dāng)于urllib中的:

cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
urllib.request.install_opener(opener)

模擬登錄V站

本篇文章的任務(wù)是利用request.Session模擬登錄V2EX(http://www.v2ex.com/)這個(gè)網(wǎng)站,即V站。

工具: Python 3.5,BeautifulSoup模塊,requests模塊,Chrome

這個(gè)網(wǎng)站登錄的時(shí)候抓到的數(shù)據(jù)如下:

Python利用requests.Session如何實(shí)現(xiàn)一個(gè)模擬登錄功能

其中用戶(hù)名(u)、密碼(p)都是明文傳輸?shù)?,很方便。once的話(huà)從分析登錄URL:http://www.v2ex.com/signin 的源文件(下圖)可以看出,應(yīng)該是每次登錄的特有數(shù)據(jù),我們需要提前把它抓出來(lái)再放到Form Data里面POST給網(wǎng)站。

Python利用requests.Session如何實(shí)現(xiàn)一個(gè)模擬登錄功能

抓出來(lái)還是老方法,用BeautifulSoup神器即可。這里又學(xué)到一種抓標(biāo)簽里面元素的方法,比如抓上面的"value",用soup.find('input',{'name':'once'})['value']即可

即抓取含有 name="once"的input標(biāo)簽中的value對(duì)應(yīng)的值。

于是構(gòu)建postData,然后POST。

怎么顯示登錄成功呢?這里通過(guò)訪(fǎng)問(wèn)http://www.v2ex.com/settings 即可,因?yàn)檫@個(gè)網(wǎng)址沒(méi)有登錄是看不了的:

Python利用requests.Session如何實(shí)現(xiàn)一個(gè)模擬登錄功能

經(jīng)過(guò)上面的分析,寫(xiě)出源代碼(參考了alexkh的代碼):

import requests
from bs4 import BeautifulSoup
 
url = "http://www.v2ex.com/signin"
UA = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.13 Safari/537.36"
 
header = { "User-Agent" : UA,
      "Referer": "http://www.v2ex.com/signin"
      }
 
v2ex_session = requests.Session()
f = v2ex_session.get(url,headers=header)
 
soup = BeautifulSoup(f.content,"html.parser")
once = soup.find('input',{'name':'once'})['value']
print(once)
 
postData = { 'u': 'whatbeg',
       'p': '*****',
       'once': once,
       'next': '/'
       }
 
v2ex_session.post(url,
         data = postData,
         headers = header)
 
f = v2ex_session.get('http://www.v2ex.com/settings',headers=header)
print(f.content.decode())

然后運(yùn)行發(fā)現(xiàn)成功登錄:

Python利用requests.Session如何實(shí)現(xiàn)一個(gè)模擬登錄功能

上面趴下來(lái)的網(wǎng)頁(yè)源代碼即為http://www.v2ex.com/settings的代碼。這里once為91279.

Python利用requests.Session如何實(shí)現(xiàn)一個(gè)模擬登錄功能

至此,登錄成功。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI