簡體   English   中英

使用帶有會話的 Python 請求登錄網站

[英]Logging Into Website Using Python Requests With Sessions

我正在查看一個網站並正在收集 cookie 的令牌,但我仍然沒有獲得登錄狀態。

這是我的代碼:

headers = {'Referer': 'https://www..com/accounts/login/'}

s = requests.Session()
# Get cookie
s.get('https://www..com/accounts/login/')
csrftoken = s.cookies['csrftoken']

payload = {
    'id_username': 'my_username',
    'id_password': 'my_password',
    'csrfmiddlewaretoken': csrftoken
}

p = s.post('https://www..com/accounts/login/', data=payload, headers=headers)
print(p.text)

我在打印 p.text 時沒有看到明顯的錯誤,但是,打印的 HTML 仍然顯示“登錄”而不是我的用戶名,這是我使用瀏覽器登錄時發生的情況。

你能看出我可能遺漏了什么嗎? 我的想法是 csrf 令牌在登錄后再次重置,但是當它在登錄調用中傳遞時如何捕獲它?

謝謝你。

在這里領取賞金:P

你的代碼很好。 甚至referer-header的格式也很好。

但這就是您的有效負載的外觀:

payload = {
    'username': 'my_username',
    'password': 'my_password',
    'csrfmiddlewaretoken': csrftoken
}

您總是通過這些請求的字段名稱,而不是 id。 我剛剛登錄成功。

祝項目好運,並記住在玩玩具錢以外的任何東西時實施保護措施。

ps:唯一缺少的有效載荷是“下一個”,但顯然沒有必要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM