requests模組高階應用 模擬登入

2022-09-19 03:03:09 字數 3376 閱讀 6459

爬取某些使用者的使用者資訊。

對古詩詞網進行模擬登入。

爬取首頁資料,獲取驗證碼資訊並儲存

通過超級鷹對驗證碼進行自動識別

點選登入後獲取到登入頁面的url,模擬對登入頁面發起post請求,引數中攜帶驗證碼(動態變化的)

直接獻上**:

#

@time : 2022/1/20 0020 9:56

#@author : tzy0425

#@file : 古詩詞網實現模擬登陸.py

import

requests

from lxml import

etree

from chaojiying import

chaojiying_client

#封裝識別驗證碼的函式

defgetcode(filepath):

chaojiying = chaojiying_client('

超級鷹使用者賬號

', '

超級鷹使用者密碼

', '

軟體id

本地檔案路徑

return chaojiying.postpic(im, 1004)

#對驗證碼進行捕獲和識別

#解析動態引數

#使用session進行post請求的傳送

response = requests.post(url=login_url,data=data,headers=headers)

login_page_text =response.text

print

(response.status_code)

with open(

'./gushici.html

','w

',encoding='

utf-8

') as fp:

fp.write(login_page_text)

正常情況下,上述**便可成功的模擬使用者進行登入,執行後生成的html應為登入成功後跳轉的首頁,但執行後卻發現,返回的狀態碼雖然是200,但生成的頁面卻是登入頁面而不是登入成功後的使用者介面,why???

別急,從以下幾點解釋後就會明白。

無狀態,也就是當使用者向伺服器發出請求後,服務端並不會記錄當前使用者的相關狀態。

所以說,**中發起的第二次基於個人主頁頁面(即登入成功後跳轉到的頁面)請求的時候,前提是已經登入成功,但由於http / https協議無狀態的特性,服務端並不知道該請求是基於登入狀態下的請求,所以它會重新返回給你登入介面,那麼服務端是通過什麼記錄客戶端的相關狀態的呢? ------ cookie

手動處理:通過抓包工具獲取cookie值,將該值封裝到headers中。(不建議,因為有的cookie是動態變化的,而且操作繁瑣)

自動處理:首先我們要知道,cookie值是**於在登入時傳送的post請求後,由服務端建立。其次,要用到session會話物件,它可以進行請求的傳送(編碼方式和requests相同),並且如果在請求的過程中產生了cookie,則該cookie會被自動儲存在session物件中。

session使用流程:

(1)建立乙個session物件:session = requests.session()

(2)使用session物件進行模擬登入post請求的傳送

(3)session物件對個人主頁對應的get請求進行傳送

那麼,經過分析,其實只需要把之前通過requests進行請求,改為通過session進行請求即可,對於**來說就是在最開始建立session物件,然後把後面的requests的部分改為session即可。

最後,在介紹一種反爬機制與對應的反反爬策略:

**相關的**:快**、西祠**、www.goubanjia.com

**ip的型別:http與https,分別應用於對應的協議當中

**ip的匿名度:

(1)透明:伺服器知道該次請求使用了**,也知道請求對應的真實ip

(2)匿名:伺服器知道使用了**,但不知道真實ip

(3)高匿:伺服器不知道使用了**,更不知道真實的ip

只需要在requests的請求引數中新增proxies,然後賦乙個**ip即可。

import

requests

url = '

'headers =

page_text = requests.get(url=url,headers=headers,proxies=).text

with open(

'ip.html

','w

',encoding='

utf-8

') as fp:

fp.write(page_text)

requests模組高階使用

編輯本隨筆 cookie作用 伺服器使用cookie來記錄客戶端的狀態資訊 實現流程 執行登陸操作 獲取cookie 在發起個人主頁請求時,需要將cookie攜帶到該請求中 注意 session物件,也可以傳送請求,如果伺服器端會給客戶端返回cookie,session物件自動將cookie進行儲存...

Python高階(requests模組)

requests 是用python語言編寫,基於 urllib的第三方庫,在呼叫http介面,以及http測試時常用。需要學會requests與response,其中response是requests請求返回的物件。1.requests.get url,params none,kwargs 2.re...

requests 模組基礎應用

0.import requests response requests.get url response.text 1.response響應物件的常用屬性,方法 response.status code 響應的狀態碼 response.text 響應的內容 str response.content ...