導航:首頁 > 編程語言 > python模擬登錄百度

python模擬登錄百度

發布時間:2025-04-01 16:07:47

python模擬登錄的四種方法

Python模擬登錄的四種方法

特點:

簡單,但需要先在瀏覽器登錄

原理:

簡單地說,cookie保存在發起請求的客戶端中,伺服器利用cookie來區分不同的客戶端。因為http是一種無狀態的連接,當伺服器一下子收到好幾個請求時,是無法判斷出哪些請求是同一個客戶端發起的。而「訪問登錄後才能看到的頁面」這一行為,恰恰需要客戶端向伺服器證明:「我是剛才登錄過的那個客戶端」。於是就需要cookie來標識客戶端的身份,以存儲它的信息(如登錄狀態)。當然,這也意味著,只要得到了別的客戶端的cookie,我們就可以假冒成它來和伺服器對話。這給我們的程序帶來了可乘之機。

我們先用瀏覽器登錄,然後使用開發者工具查看cookie。接著在程序中攜帶該cookie向網站發送請求,就能讓你的程序假扮成剛才登錄的那個瀏覽器,得到只有登錄後才能看到的頁面。

具體步驟:

1、用瀏覽器登錄,獲取瀏覽器里的cookie字元串

先使用瀏覽器登錄。再打開開發者工具,轉到network選項卡。在左邊的Name一欄找到當前的網址,選擇右邊的Headers選項卡,查看Request Headers,這里包含了該網站頒發給瀏覽器的cookie。對,就是後面的字元串。把它復制下來,一會兒代碼里要用到。

注意,最好是在運行你的程序前再登錄。如果太早登錄,或是把瀏覽器關了,很可能復制的那個cookie就過期無效了。

2、寫代碼

urllib庫的版本:

requests庫的版本:

原理:

我們先在程序中向網站發出登錄請求,也就是提交包含登錄信息的表單(用戶名、密碼等)。從響應中得到cookie,今後在訪問其他頁面時也帶上這個cookie,就能得到只有登錄後才能看到的頁面。

具體步驟:

1、找出表單提交到的頁面

還是要利用瀏覽器的開發者工具。轉到network選項卡,並勾選Preserve Log(重要!)。在瀏覽器里登錄網站。然後在左邊的Name一欄找到表單提交到的頁面。

怎麼找呢?看看右側,轉到Headers選項卡。首先,在General那段,Request Method應當是POST。其次最下方應該要有一段叫做Form Data的,裡面可以看到你剛才輸入的用戶名和密碼等。也可以看看左邊的Name,如果含有login這個詞,有可能就是提交表單的頁面(不一定!)。

這里要強調一點,「表單提交到的頁面」通常並不是你填寫用戶名和密碼的頁面!所以要利用工具來找到它。

2、找出要提交的數據

雖然你在瀏覽器里登陸時只填了用戶名和密碼,但表單里包含的數據可不只這些。從Form Data里就可以看到需要提交的所有數據。

3、寫代碼

urllib庫的版本:

requests庫的版本:

明顯感覺requests庫用著更方便啊~

原理:

session是會話的意思。和cookie的相似之處在於,它也可以讓伺服器「認得」客戶端。簡單理解就是,把每一個客戶端和伺服器的互動當作一個「會話」。既然在同一個「會話」里,伺服器自然就能知道這個客戶端是否登錄過。

具體步驟:

1、找出表單提交到的頁面

2、找出要提交的數據

這兩步和方法二的前兩步是一樣的

3、寫代碼

requests庫的版本

特點:

功能強大,幾乎可以對付任何網頁,但會導致代碼效率低

原理:

如果能在程序里調用一個瀏覽器來訪問網站,那麼像登錄這樣的操作就輕而易舉了。在Python中可以使用Selenium庫來調用瀏覽器,寫在代碼里的操作(打開網頁、點擊……)會變成瀏覽器忠實地執行。這個被控制的瀏覽器可以是Firefox,Chrome等,但最常用的還是PhantomJS這個無頭(沒有界面)瀏覽器。也就是說,只要把填寫用戶名密碼、點擊「登錄」按鈕、打開另一個網頁等操作寫到程序中,PhamtomJS就能確確實實地讓你登錄上去,並把響應返回給你。

具體步驟:

1、安裝selenium庫、PhantomJS瀏覽器

2、在源代碼中找到登錄時的輸入文本框、按鈕這些元素

因為要在無頭瀏覽器中進行操作,所以就要先找到輸入框,才能輸入信息。找到登錄按鈕,才能點擊它。

在瀏覽器中打開填寫用戶名密碼的頁面,將游標移動到輸入用戶名的文本框,右鍵,選擇「審查元素」,就可以在右邊的網頁源代碼中看到文本框是哪個元素。同理,可以在源代碼中找到輸入密碼的文本框、登錄按鈕。

3、考慮如何在程序中找到上述元素

Selenium庫提供了find_element(s)_by_xxx的方法來找到網頁中的輸入框、按鈕等元素。其中xxx可以是id、name、tag_name(標簽名)、class_name(class),也可以是xpath(xpath表達式)等等。當然還是要具體分析網頁源代碼。

4、寫代碼

⑵ 用Python模擬人工操作發送http請求

使用Python的Requests庫進行HTTP請求操作,是編寫爬蟲程序的重要步驟。下面將詳細介紹利用該庫進行模擬人工操作發送HTTP請求的具體步驟。

首先,需要確保安裝了Requests庫。安裝方式為在命令行輸入`pip install requests`。

發送get請求獲取網頁內容,只需使用`requests.get(url)`方法。例如,獲取網路首頁內容的代碼如下:

python
import requests
url = 'https://www..com'
res = requests.get(url)
print(res.text)

發送post請求模擬登錄,同樣使用`requests.post(url, data=data)`。同時,為避免被伺服器識別為爬蟲,應添加headers頭部信息。以下為模擬登錄並獲取信息的代碼示例:

python
import requests
url = 'https://www.example.com/login'
data = {'username': 'your_username', 'password': 'your_password'}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
res = requests.post(url, data=data, headers=headers)
if res.status_code == 200:
print(res.text)
else:
print('登錄失敗')

headers頭部信息的設置對於防止被伺服器識別為爬蟲至關重要。常見的headers包括User-Agent、Referer、Accept、Cookie等。它們能幫助我們模擬真實的瀏覽器行為,降低被封IP的風險。

User-Agent信息用於模擬瀏覽器類型,通常根據瀏覽器類型設置相應的值。Referer信息用於指示請求的來源,Accept則用於指定客戶端能接受的資源類型。Cookie信息用於保持與網站的會話狀態。

在實際應用中,要根據網站的具體要求進行headers的配置。如果沒有特殊要求,通常使用瀏覽器的請求信息作為參考。同時,避免頻繁請求同一目標,以降低被封IP的風險。合理使用Requests庫,能有效提升爬蟲程序的穩定性和效率。

閱讀全文

與python模擬登錄百度相關的資料

熱點內容
文本命令行 瀏覽:95
撲克牌睡眠解壓 瀏覽:190
rc4演算法流程圖 瀏覽:157
胡蘿卜解壓方法 瀏覽:35
掃描pdf格式軟體 瀏覽:876
程序員在銀行開賬戶 瀏覽:516
android資料庫下載 瀏覽:749
中午伺服器崩潰怎麼辦 瀏覽:425
產品經理和程序員待遇 瀏覽:442
解憂程序員免費閱讀 瀏覽:109
錄像免壓縮 瀏覽:508
總結所學過的簡便演算法 瀏覽:362
南昌哪些地方需要程序員 瀏覽:761
三台伺服器配置IP地址 瀏覽:175
如何用命令方塊連續對話 瀏覽:280
win7linux共享文件夾 瀏覽:304
命令符打開本地服務 瀏覽:601
android應用程序源碼 瀏覽:705
安卓開發工程師簡歷怎麼寫 瀏覽:63
熱水器水量伺服器是什麼意思 瀏覽:119