亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在請求中發現 Scrapy 和無效的 cookie

在請求中發現 Scrapy 和無效的 cookie

莫回無 2023-04-18 14:41:23
網頁抓取需求要從此處的eventbrite 鏈接的第一頁抓取事件的標題。方法雖然該頁面沒有太多的 javascript,而且頁面分頁也很簡單,但抓取頁面上每個事件的標題非常容易,并且沒有問題。但是我看到有一個 API,我想重新設計 HTTP 請求,以提高效率和結構化數據。問題我能夠使用 requests python 包模擬 HTTP 請求,使用正確的標頭、cookie 和參數。不幸的是,當我將相同的 cookie 與 scrapy 一起使用時,它似乎在抱怨 cookie 字典中的三個鍵是空白的'mgrefby': '', 'ebEventToTrack': '', 'AN': '', 。盡管它們在與請求包一起使用的 HTTP 請求中是空白的。請求包代碼示例import requestscookies = {    'mgrefby': '',    'G': 'v%3D2%26i%3Dbff2ee97-9901-4a2c-b5b4-5189c912e418%26a%3Dd24%26s%3D7a302cadca91b63816f5fd4a0a3939f9c9f02a09',    'ebEventToTrack': '',    'eblang': 'lo%3Den_US%26la%3Den-us',    'AN': '',    'AS': '50c57c08-1f5b-4e62-8626-ea32b680fe5b',    'mgref': 'typeins',    'client_timezone': '%22Europe/London%22',    'csrftoken': '85d167cac78111ea983bcbb527f01d2f',    'SERVERID': 'djc9',    'SS': 'AE3DLHRwcfsggc-Hgm7ssn3PGaQQPuCJ_g',    'SP': 'AGQgbbkgEVyrPOfb8QOLk2Q893Bkx6aqepKtFsfXUC9SW6rLrY3HzVmFa6m91qZ6rtJdG0PEVaIXdCuyQOL27zgxTHS-Pn0nHcYFr9nb_gcU1ayxSx4Y0QXLDvhxGB9EMsou1MZmIfEBN7PKFp_enhYD6HUP80-pNUGLI9R9_CrpFzXc48lp8jXiHog_rTjy_CHSluFrXr2blZAJfdC8g2lFpc4KN8wtSyOwn8qTs7di3FUZAJ9BfoA',}headers = {    'Connection': 'keep-alive',    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Mobile Safari/537.36',    'X-Requested-With': 'XMLHttpRequest',    'X-CSRFToken': '85d167cac78111ea983bcbb527f01d2f',    'Content-Type': 'application/json',    'Accept': '*/*',    'Origin': 'https://www.eventbrite.com',    'Sec-Fetch-Site': 'same-origin',    'Sec-Fetch-Mode': 'cors',    'Sec-Fetch-Dest': 'empty',    'Referer': 'https://www.eventbrite.com/d/ny--new-york/human-resources/?page=2',    'Accept-Language': 'en-US,en;q=0.9',}
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

看起來他們正在使用not value而不是更準確的value is not None.?打開一個問題是你唯一的長期資源,但是子類化 cookie 中間件是短期的,非 hacky 修復。

一個 hacky 修復是利用這樣一個事實,即他們在執行此操作時沒有正確轉義 cookie 值,'; '.join()因此您可以將 cookie 的值設置為合法的 cookie 指令(我選擇是HttpOnly因為您不關心 JS),然后cookiejar出現丟棄它,產生你關心的實際價值

>>> from scrapy.downloadermiddlewares.cookies import CookiesMiddleware

>>> from scrapy.http import Request

>>> cm = CookiesMiddleware(debug=True)

>>> req = Request(url='https://www.example.com', cookies={'AN': '; HttpOnly', 'alpha': 'beta'})

>>> cm.process_request(req, spider=None)

2020-08-01 15:08:58 [scrapy.downloadermiddlewares.cookies] DEBUG: Sending cookies to: <GET https://www.example.com>

Cookie: AN=; alpha=beta

>>> req.headers

{b'Cookie': [b'AN=; alpha=beta']}


查看完整回答
反對 回復 2023-04-18
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

目前的解決方案是使用舊版本的 scrapy(2.2.0 或更低版本),因為最新的 2.3.0 是添加此 cookie 檢查的地方。


查看完整回答
反對 回復 2023-04-18
  • 2 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號