如何使用Python请求库或PyCurl使用以前的cookie制作帖子?

如何使用Python请求库或PyCurl使用以前的cookie制作帖子?,python,cookies,python-requests,httprequest,Python,Cookies,Python Requests,Httprequest,我正试图用一些数据和之前收到的cookies,用GET发一篇帖子。 我有一个正确工作的代码,但我需要使用。但是,尽管我正在执行相同的步骤,但using请求不起作用。 PyCurl的工作代码是: import time import urllib import pycurl curl = pycurl.Curl() curl.setopt(pycurl.URL, 'https://www.myURL.com/header?time='+str(int(time.time()))) curl.se

我正试图用一些数据和之前收到的cookies,用GET发一篇帖子。 我有一个正确工作的代码,但我需要使用。但是,尽管我正在执行相同的步骤,但using请求不起作用。 PyCurl的工作代码是:

import time
import urllib
import pycurl

curl = pycurl.Curl()
curl.setopt(pycurl.URL, 'https://www.myURL.com/header?time='+str(int(time.time())))
curl.setopt(pycurl.COOKIEJAR, 'cookie_1.txt')
curl.perform()
curl.close()

curl = pycurl.Curl()
curl.setopt(pycurl.URL, 'https://www.myURL.com/login')
post_data = {'actualURL': 'http://www.myURL.com', 'user': 'myemail@gmail.com', 'pass': 'asdfqwerty'}
curl.setopt(pycurl.COOKIEFILE, 'cookie_1.txt')
curl.setopt(pycurl.POSTFIELDS, urllib.urlencode(post_data))
curl.setopt(pycurl.COOKIEJAR, 'cookie_2.txt')
curl.perform()
curl.close()
我在“cookie_2.txt”文件中收到了正确答案以及cookie上的新数据。 但是,如前所述,下面的代码给出了错误403的响应

import time
import urllib
import requests

r1 = requests.get('https://www.myURL.com/header?time='+str(int(time.time())))
payload = {'actualURL': 'http://www.myURL.com', 'user': 'myemail@gmail.com', 'pass': 'asdfqwerty'}
r2 = requests.post('https://www.myURL.com/login', data=urllib.urlencode(payload), cookies=r1.cookies)
如您所见,我使用的cookies与前面提到的请求中收到的cookies相同。我检查了“r1.cookies”,设置正确。 此外,由于POST数据具有特殊字符,我使用了urllib中的编码(没有此编码,PyCurl无法工作)


我首先认为“请求”的问题来自POST数据上的特殊字符,但我尝试了编码,而不是编码,作为json字符串,。。。但什么都不管用。”r2.cookies'为空

如果您需要处理cookies,我建议
requests.Session()
,例如:

ses = requests.Session()  # use this object for all get / post requests #

payload = {'actualURL': 'http://www.myURL.com', 'user': 'myemail@gmail.com', 'pass': 'asdfqwerty'}
r1 = ses.get('https://www.myURL.com/header?time='+str(int(time.time())))
r2 = ses.post('https://www.myURL.com/login', data=payload)

print(ses.cookies.get_dict()) 

您可以在此处找到更多信息:

cookies仍然为空。我尝试了不同的POST数据选项,但不起作用。仅供参考,首先需要制作一个GET以提取JSSession和cookies,您可以制作帖子,因此答案的顺序是翻转的。通常您需要先发送您的creds以获得认证,然后继续,这就是我将帖子放在第一位的原因。我的代码只是一个例子,我不知道实际的网站如何处理身份验证和cookie,但我猜它可能是另一个丢失的HTTP头(用户代理、引用器等)。您需要检查网络流量,并查看在使用web浏览器或PyCurl成功获取Cookie时发送的标题。无论如何,我已更新代码以匹配您发送请求的顺序,请重试。如果它仍然打印空的dict,请尝试在
标题中使用“用户代理”
,并确保您的凭据是正确的。除非我有实际的url,否则我不能再帮你了。谢谢你更新代码,因为它让我意识到我在寻找
r2.cookies
,而不是
ses.cookies
。我已经检查过了,是的,当您在示例中编写它时,它不需要
urlencode
。谢谢