![](/img/trans.png)
[英]Python Requests (Web Scraping) - Building a cookie to be able to view data in a website
[英]Python Requests Cookie Issues (Web Scraping)
我目前正在編寫一個網絡爬蟲,為我的 Python Flask 服務器提供數據。 我的目標是向服務器發送 POST 請求並檢索 JSON。 我的 Flask API 目前托管在運行 Linux 的 Heroku dyno 上。 不久前,服務器添加了 cookie 驗證,這意味着我必須使用 cookie 發送我的 POST 請求。 但是,服務器最近還添加了某種 IP 匹配,這意味着我無法在我的 Windows 機器上為 Heroku 服務器使用相同的 cookie 字符串。 這是我在兩台機器上運行的內容:
import requests
url = "https://coursebook.utdallas.edu/clips/clip-coursebook.zog" # POST endpoint
payload = "action=search&s%5B%5D=ecs+3390&s%5B%5D=term_20f" # "ecs 3390" is the query
headers = {
'Connection': 'keep-alive',
'Accept': '*/*',
'DNT': '1',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Origin': 'https://coursebook.utdallas.edu',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': 'https://coursebook.utdallas.edu/search',
'Accept-Language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,zh-TW;q=0.6',
'Cookie': 'PTGSESSID=052a6577047da9c404825cc393c56445'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
在我的 Windows 機器上,我收到了很好的響應; 但是,當我使用相同的代碼在 MacOS 上運行它時,它會返回一個空白響應,因為 cookie 不匹配(您可以使用完全相同的代碼嘗試它); 如果我然后在 Mac 上訪問該網站並手動獲取 cookie 字符串以正常方式發送請求,並將其替換為 Python 代碼,它現在可以在 Mac 上運行。
但是,這需要我親自打開瀏覽器,轉到 url,然后單擊按鈕發送 POST 請求,然后從開發人員控制台獲取 cookie 字符串。 這在 Heroku dynos 上顯然是不可能的,這意味着我已經從我的 raspberry pi 運行這個服務器一段時間了。
我試圖獲取登錄頁面( https://coursebook.utdallas.edu/search ),我可以在其中發送 GET 請求並從標題中獲取 SET-COOKIES,但該 cookie 字符串似乎不起作用奇怪的。 我很確定這應該很簡單,因為在網站上發送請求似乎一點也不難。 為長篇文章道歉,但如果您有任何想法,請告訴我! 我的 raspberry pi 會感謝大家終於能夠關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.