【发布时间】:2017-05-01 09:02:04
【问题描述】:
我正在尝试使用一些数据和之前使用 GET 收到的 cookie 进行 POST。 我有一个带有PyCurl 的代码可以正常工作,但我需要使用Requests。但是,尽管我正在执行相同的步骤,但 using Request 不起作用。 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)
如您所见,我使用从之前的请求中收到的相同 cookie,如提到的 here。我检查了“r1.cookies”并且设置正确。 此外,由于 POST 数据有特殊字符,我使用了来自 urllib 的编码(没有这个 PyCurl 不起作用)。
我首先认为“Requests”上的问题来自 POST 数据上的特殊字符,但我尝试过编码,没有编码,作为 json 字符串,......但没有任何效果。 'r2.cookies' 为空
【问题讨论】:
标签: python cookies python-requests httprequest