Python请求使用cookie重新创建Post请求

Python请求使用cookie重新创建Post请求,python,cookies,request,Python,Cookies,Request,所以我在我的chrome控制台上查看我发出的post请求,头文件中有一个包含以下数据的“cookie”值: strTradeLastInventoryContext=7302;bCompletedTradeOffertial=真;蒸汽机76561198052177472=3167F37117*************B82C2E;蒸汽机76561198189250810=E29277004E**********B5F97703126DE48E;rgDiscussionPrefs=%7B%22cT

所以我在我的chrome控制台上查看我发出的post请求,头文件中有一个包含以下数据的“cookie”值:

strTradeLastInventoryContext=7302;bCompletedTradeOffertial=真;蒸汽机76561198052177472=3167F37117*************B82C2E;蒸汽机76561198189250810=E29277004E**********B5F97703126DE48E;rgDiscussionPrefs=%7B%22cTopicRepliesPerPage%***********%7D;会话ID=053257f1102e4967e2527ced;蒸汽国=美国%7C708d3*************e569cc75495;steamLogin=76561198052177472%7C%7C4EC6FBDFA0**********************12DE568;steamLoginSecure=765611****************44BEC4E8BDA86264E;WebTradeQualifiety=%7B%22允许的%22%3A1%2C%22允许的时间%22%3A0%2C%22steamguard\u需要的天数%22%3A15%2C%22sales\u本年度%22%3A9%2C%22max\u年销售额%22%3A200%2C%22forms\u请求*************冷却天数%22%3A7%7D;strInventoryLastContext=7302;最近访问的AppHubs=42700%2C2**********930%2C440;时区偏移=-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=organic | utmctr=(未提供%20)

我用星号标出了一些cookie的数据,这样我的交易账户就不会被抢,但你应该明白这一点。我应该如何着手重新创建cookie?我应该创建一个dict,其中键是cookie中“=”之前的值,值是“=”符号之后的值吗?对不起,如果问题不清楚,我不知道该怎么做。任何帮助都会很好


例如cookie={strTradeLastInventoryContext:730_2,…}

您可能需要查看请求文档以了解 您是对的,cookie值作为字典键/值传递给get调用

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

这里有两种选择


如果您碰巧有一个确切的
Cookie
头,您希望将其完全复制为一个大字符串(例如,让
请求
驱动的作业接管您在浏览器中手动或使用
selenium
或其他方式创建的会话),您只需将其作为名为
Cookie
的任意头传递,而无需弄清楚如何将其拆分,这样
请求
就可以(希望)重新组合您想要的相同头


另一方面,如果您需要动态地创建它的一部分,那么是的,您将需要执行您正在执行的操作,将其拆分以构建名为
cookie
,然后将其用于
请求.get(url,cookies=cookie)
,或
请求cookies.update(cookie)
或类似的操作(如果您使用的是会话和准备好的请求)。然后,您可以在发送dict之前轻松修改它

但最简单的方法是不要手动分离cookie。我很确定WebKit开发工具可以直接在Chrome中为您做到这一点。或者,如果没有,您可以将cookie复制为字符串,然后使用模块(在Python 2.x中调用),如下所示:

cookie = http.cookies.BaseCookie(cookie_string)


另外,请注意,在许多情况下,您甚至不需要这样做。如果您可以直接从
请求
驱动登录和导航,而不是从Chrome开始,那么每个请求中都应该包含所需的全套cookie。您可能需要使用,但这很难做到。

是的,我试着在标题中的cookie标记下粘贴长cookie,但仍然收到401错误。我可能把其中一个表单文件中的其他东西弄乱了。顺便问一下,你知道调试post请求的好方法吗?仅仅知道失败并没有多大帮助。谢谢@法塔库贝兹:好吧,你已经得到了
请求
发送的完整的头和正文(与Chrome发送的头和正文相比),还有401错误的正文,这两者在调试中通常都非常有用。但这并不总是足够的,尤其是在调试登录相关问题时,因为(真实的或放错位置的)安全原因,服务器开发人员通常更倾向于不遗余力地让您更难而不是更容易。我将发送的json文件的密钥顺序是否重要?因为从语法上讲,它们是有序的,但当我调试请求时,它们会被移动。@FaTalCubez:没关系。JSON对象,如Python dict,被定义为没有任何固有的顺序。然而,如果您正在处理一个只针对一个特定JS前端进行测试的写得很糟糕的服务器,那么他们可能会假设一个订单,即使他们不应该这样做,所以这也不是不可能的。您只需手动编写字符串并将其作为字符串发送,而不必使用
json.dumps
或让
请求为您指定dict,就可以非常轻松地进行测试。