Python使用POST自動登錄網頁

準備好登錄網頁所需的帳號密碼,使用Chrome或Edge的開發人員工具找出關鍵的登錄資料後,再利用session.post便可以讓python自動登入該網站。


以使用Chrome為例,在登錄頁面處按下F12(或按滑鼠右鍵選擇“檢查”) ,這時會在頁面的右側出現一個”開發者工具”的設定,這時 選擇“Network”頁籤並將”Preserve log”打勾,在輸入帳號與密碼後執行登入的按鍵,這時會出現許多網頁執行與讀取的各種資訊行。

等待頁面運行完畢後會出現如下圖的執行紀錄,而最重要的關鍵的登錄資訊就埋藏在這眾多的訊息當中某一項內,下面將利用一些技巧將其找出來。

  • 在這些項目中尋找有login、sign in、member…等等各種 登入的相關字眼的網頁,真的找不到也可以一個一個點選(圖檔或js檔就不用試)
  • 當找到正確的網頁時,在右側延伸的功能欄位內會出現兩個重要資訊:
    1. 在General中的Request Method為POST
    2. 在Form Data中會出現剛剛輸入的帳號與密碼

    有出現上述的兩個特徵基本上就代表找對網頁
  • 記錄 Request URL所標示的網址

在Python的程式中將會使用到requests.Session()這個模組,它可以將帳號密碼甚至cookie等資訊,在登錄頁面中的表單欄位中模擬輸入,達到自動登錄的功能,這裡會用到 .post()這個函式。

session = requests.Session()

session.post(loginURL, headers = headers, data = formdata)

在.post()中有幾個關鍵參數設定,對應上面程式碼依序是(登入網址headers登錄帳密),其中登入網址就是上面Request URL所標示的網址headers直接照範例程式碼填入

loginURL = 'https://OOOXXX.com/member.php?action=login'	

headers = {
	'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
	}
formdata = {	
	'username':'DayoffGarage',   
	'password':'xxxxxxXXXXXxx',
	}

上述程式在完成登錄後就可以進入指定的網頁(goto_URL)進行後續的分析或爬蟲,這裡用到的是.get()這個函式。

goto_URL = 'https://OOOXXX.com/Infomation.php'

response = session.get(goto_URL, headers = headers)

最後print出網頁內容來確定是否有成功登錄,完整的程式碼如下:

import requests

loginURL = 'https://OOOXXX.com/member.php?action=login'	

headers = {
	'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
	}
formdata = {	
	'username':'DayoffGarage',   
	'password':'xxxxxxXXXXXxx',
	}
session = requests.Session()

session.post(loginURL, headers = headers,data = formdata)

goto_URL = 'https://OOOXXX.com/Infomation.php'
response = session.get(goto_URL, headers = headers)

print (response.text)

發表留言