2015-05-17 124 views
1

所以我一直在尋找我的POST請求,我是做鍍鉻控制檯,並且在頭文件中的「餅乾」值具有此數據:Python的請求重新創建POST請求與餅乾

strTradeLastInventoryContext = 730_2; bCompletedTradeOfferTutorial = TRUE; steamMachineAuth76561198052177472 = 3167F37117 ************ B82C2E; steamMachineAuth76561198189250810 = E292770040E ************ B5F97703126DE48E; rgDiscussionPrefs =%7B%22cTopicRepliesPerPage%******%7D;的sessionid = 053257f1102e4967e2527ced; steamCountry = US%7C708d3 ************ e569cc75495; steamLogin = 76561198052177472%7C%**************** 12DE568 7C4EC6FBDFA0; steamLoginSecure = 765611 ********************* 44BEC4E8BDA86264E; webTradeEligibility =%7B%22allowed%22%3A1%2C%22allowed_at_time%22%3A0%2C%22steamguard_required_days%22%3A15%2C%22sales_this_year%22%3A9%2C%22max_sales_per_year%22%3A200%2C%22forms_request **** *********** cooldown_days%22%3A7%7D; strInventoryLastContext = 730_2; recentlyVisitedAppHubs = 42700%2C2 *********** 930%2C440;的timezoneoffset = -14400,0; __utma = 268881843.1147920287.1419547163.1431887507.1431890089.151; __utmb = 268881843.0.10.1431890089; __utmc = 268881843; __utmz = 268881843.1431885538.149.94.utmcsr = google | utmccn =(有機)| utmcmd =有機| utmctr =(不是%20提供)

我出示了一些cookie的數據,所以我的交易賬戶不能被搶劫,但你應該明白這一點。我應該如何去重新創建cookie?就像我應該創建一個字典,其中的鍵是cookie中'='之前的值,而值是'='後面的值?對不起,如果問題不清楚,我不知道如何去做這件事。任何幫助將是偉大的!

Ex。 Cookie = {strTradeLastInventoryContext:730_2,...}

回答

0

這裏真的有兩種選擇。


如果您正好有你想完全照搬作爲一個大的字符串(例如,有一個requests驅動的工作接管你在瀏覽器中創建一個會話,手動或使用selenium或確切Cookie頭無論如何),只需將它作爲一個名爲Cookie的任意標題即可傳遞,而不必知道如何將其拆分,只有這樣requests才能(希望)能夠重新組合所需的相同標題。


如果,另一方面,你需要動態地創建它的部分,那麼,你會想要做你正在做的,把它拆開來建立一個名爲cookie字典的東西,然後用它與requests.get(url, cookies=cookie)req.cookies.update(cookie)或類似(如果您使用會話和準備好的請求)。然後你可以在發送之前輕鬆修改字典。

但最簡單的方法不是手動將cookie分開。我很確定WebKit開發者工具可以直接在Chrome中爲您做到這一點。或者,如果沒有,你可以只複製餅乾作爲一個字符串,然後使用http.cookies模塊(在Python 2.x的稱爲cookie),像這樣:

cookie = http.cookies.BaseCookie(cookie_string) 

另外請注意,在許多情況下,你甚至不需要這樣做。如果您可以從requests直接驅動登錄和導航,而不是從Chrome開始,那麼它最終會在每個請求中提供所需的全套Cookie。您可能需要使用Session,但這樣做很難。

+0

是的,我試圖做的只是粘貼在Cookie標籤下的長Cookie中,但我仍然收到401錯誤。我可能在其中一個表單文件中混淆了其他內容。順便說一句,你知道調試發佈請求的好方法嗎?知道它失敗並不是那麼有用。謝謝! –

+0

@FaTalCubez:那麼,你已經得到了發送'請求'的完整標題和正文(與發送的Chrome進行比較)以及401錯誤的主體,這兩者通常對調試非常有幫助。但這並不總是足夠的 - 特別是對於調試與登錄相關的問題而言,服務器開發人員通常更傾向於因爲(真實或錯誤放置的)安全原因而爲自己而非_easier_做出決定。 – abarnert

+0

重要的是我要發送的json文件的鍵的順序是否重要?因爲在語法上它們是有序的,但是當我調試請求時,它們會移動。 –

0

您可能想要查看cookies. 的請求文檔您正確的是將cookie值作爲字典鍵/值傳遞給get調用。

cookies = {'cookie_key': 'somelongstring'} 
requests.get(url, cookies=cookies)