Python请求使用Cookie重新创建发布请求

时间:2015-05-17 19:38:03

标签: python cookies request

所以我正在查看我的chrome控制台,查看我正在发布的帖子请求,并且头文件中有一个'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%**************** 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 =谷歌| utmccn =(有机)| utmcmd =有机| utmctr =(未%20provided)

我主演了一些Cookie的数据,因此我的交易账户无法被抢劫,但你应该明白这一点。我该如何重新创建cookie?就像我应该创建一个dict,其中键是cookie中'='之前的值,而值是'='符号之后的值?对不起,如果问题不清楚,我不知道该怎么做。任何帮助都会很棒!

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

2 个答案:

答案 0 :(得分:0)

您可能需要查看cookies.的请求文档 你是对的,因为cookie值作为字典键/值传递给get调用。

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

答案 1 :(得分:0)

这里有两个选择。

如果您碰巧拥有确切的Cookie标题,则您希望将其重现为一个大字符串(例如,让requests - 驱动的作业接管您在浏览器中创建的会话,或者使用selenium或其他),您可以将其作为一个名为Cookie的任意标头传递,而不是弄清楚如何将其分开,以便requests可以(希望)重新组合相同的标题你想要的。

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

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

cookie = http.cookies.BaseCookie(cookie_string)

另外,请注意,在许多情况下,您甚至不需要这样做。如果您可以直接从requests开始登录和导航,而不是在Chrome中启动,则应该在每个请求中获得所需的全套Cookie。您可能需要使用Session,但这样做很难。