【发布时间】:2014-05-27 02:13:51
【问题描述】:
我正在为 Sickbeard 构建一个额外的提供程序,但我的 cookie 出现了问题。 在使用 requests 时为什么 HTTP 响应中缺少 cookie 之后,我一直在寻找很长时间。
login_params = {'uid': sickbeard.PROVIDER_USERNAME,
'pwd': sickbeard.PROVIDER_PASSWORD,
}
try:
response = self.session.post(self.urls['login'], data=login_params, timeout=30)
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError), e:
logger.log(u'Unable to connect to ' + self.name + ' provider: ' +ex(e), logger.ERROR)
return False
响应只包含一个 cookie __cdfuid cookie:
requests.utils.dict_from_cookiejar(self.session.cookies)['__cfduid']
我在登录提供程序时获得(和想要)的 cookie 是 __cdfuid | uid | 通过:
requests.utils.dict_from_cookiejar(self.session.cookies)['__cfduid']
requests.utils.dict_from_cookiejar(self.session.cookies)['uid'] #Not passed
requests.utils.dict_from_cookiejar(self.session.cookies)['pass'] #Not passed
我不知道这是否重要,但 __cdfuid cookie 是唯一一个具有 HttpOnly 和 path=/ 参数设置。另外两个只有过期和实际数据。
【问题讨论】:
-
什么是
response.cookies? -
只有一个参数,__cfduid 不是其他两个。
-
您怎么知道
uid和passcookie 已设置? -
当我查看
response.text时,我看到我已成功登录,因此我认为cookie 已设置。当我在 Chrome 中尝试相同的发布请求时,我得到了带有uid和passcookie 集的标题。 -
成功登录并不意味着必须设置
uid和pass。如果在请求之前清除 Chrome 中的 cookie 会发生什么?
标签: python http session cookies python-requests