我正在嘗試使用請求(python 3.4)創建一個會話,在該會話中我登錄到gamefaqs.com並導航到董事會頁面,以便我可以抓取內容以獲取相關信息我正在努力完成。我直接從firefox中的開發人員控制檯複製標題和有效負載信息。使用請求登錄身份驗證
import requests
import urllib3
url = 'http://www.gamefaqs.com/user/login'
url2 = 'http://www.gamefaqs.com/user/Leight_Weight/boards'
header = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-US,en;q=0.5',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0',
'Referer': 'http://www.gamefaqs.com/',
'Connection': 'keep-alive',
'Host': 'www.gamefaqs.com',
}
payload = {
'path': "http://www.gamefaqs.com/",
'key': "71548de4",
'EMAILADDR': "username",
'PASSWORD': "password",
}
with requests.Session() as s:
p = s.get(url, headers=header)
p = s.post(url, headers=header, data=payload, cookies = s.cookies)
我遇到的問題是我沒有收到從網站傳遞給我的會話的驗證cookie。我正在使用fiddler來跟蹤來自Python的發佈請求。儘管請求頭信息與firefox中的請求頭信息相同,但響應頭信息卻非常不同。
從Firefox的響應報頭(由提琴手所見): Firefox Response Header
從Python中的響應報頭(由提琴手所見): Python Response Header
此時我在一個位的虧損。據我可以告訴我的代碼是健全的,並且請求標頭是正確的,但是沒有收到認證cookie證明有什麼錯誤。如果你查看響應頭,代碼是不同的(302 vs 200)。我不確定錯誤是什麼。