Python 请求重新创建 Post 带有 Cookie 的请求

Python Requests Recreate Post Request with Cookies

所以我正在查看我的 chrome 控制台以查找我发出的 post 请求,头文件中有一个 'cookie' 值包含此数据:

strTradeLastInventoryContext=730_2; bCompletedTradeOfferTutorial=true; steamMachineAuth76561198052177472=3167F37117************B82C2E; steamMachineAuth76561198189250810=E292770040E************B5F97703126DE48E; rgDiscussionPrefs=%7B%22cTopicRepliesPerPage%******%7D; sessionid=053257f1102e4967e2527ced; steamCountry=US%7C708d3************e569cc75495; steamLogin=76561198052177472%7C%7C4EC6FBDFA0******************12DE568; 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 中“=”之前的值,而值是“=”符号之后的值?抱歉,如果问题不清楚,我不确定该怎么做。任何帮助都会很棒!

例如。 cookie = {strTradeLastInventoryContext: 730_2, ...}

您可能需要查看 cookies. 的请求文档 你说得对,cookie 值作为字典 key/value.

传递给 get 调用
cookies = {'cookie_key': 'somelongstring'}
requests.get(url, cookies=cookies)

这里真的有两个选项。


如果你碰巧有 Cookie header 你想完全复制一个大字符串(例如,让 requests 驱动的工作接管 session 你在浏览器中创建的,手动或使用 selenium 或其他),你可以将其作为任意 header 命名为 Cookie 传递,而不是弄清楚如何将它分开所以 requests 可以(希望)重新组装你想要的 header。


另一方面,如果您需要动态创建它的一部分,那么是的,您将想要做您正在做的事情——将它拆开以构建一个名为 cookie 的字典,然后将它与 requests.get(url, cookies=cookie)req.cookies.update(cookie) 或类似的方法一起使用(如果您使用的是 session 和准备好的请求)。然后你可以在发送之前轻松修改dict。

但最简单的方法是不要手动将 cookie 分开。我很确定 WebKit 开发人员工具有一种方法可以直接在 Chrome 中为您完成这项工作。或者,如果没有,您可以将 cookie 复制为字符串,然后使用 Python 2.x 中的 http.cookies module (called cookie,如下所示:

cookie = http.cookies.BaseCookie(cookie_string)

另外请注意,在很多情况下,您甚至不需要这样做。如果您可以直接从 requests 驱动登录和导航而不是从 Chrome 开始,它应该以每个请求中所需的完整 cookie 集结束。您可能需要使用 Session,但这很难。