【问题标题】:Python Requests Not Recieving CookiePython 请求未收到 Cookie
【发布时间】:2018-06-03 15:47:02
【问题描述】:

我有一个试图获取 cookie 的网络机器人。 流程如下: 我去获取验证码和 csrftoken(cookie) 我解决验证码并将解决方案发送到服务器。 他们发回会话 ID。

会话 id 是一个响应 cookie;虽然我似乎没有在 python 中得到它。

对服务器的POST 请求如下所示:

cookies={'csrftoken': 'h1239phtluwrane',}
headers = {'foo': 'bar'}
session=requests.Session()
r=session.post(URL, headers=headers, data=data, cookies=cookies)
try:
        cookies['sessionid']=session.cookies['sessionid']
except KeyError:
        print("Error getting correct cookie. %s" %session.cookies)

然后在session.cookies 中只有csrftoken 作为请求cookie....但是找不到响应cookie。

在另一个注意事项上。这个完全相同的代码曾经可以工作,但即使我没有编辑它也突然停止工作。我验证了服务器方法没有改变。

【问题讨论】:

  • 如何获取 CSRF 令牌?难道它每次都在变化,你需要考虑到这一点吗? r.status_code 的值是多少?谢谢。
  • status_code 正在返回 200 并且 CSRF 令牌确实发生了变化,我有一个搜索功能来获取这些,我已经确认它们正在工作。 TBH 我之前遇到过上述问题,解决它的方法是使用 session 而不是仅检查 POST 中的 cookie。
  • 好的,谢谢。您是否尝试在发布请求之前先将session.get() 设为URL
  • 不,但这听起来很有趣。你的理由是什么?
  • 您可以通过session.get() 获得新鲜饼干 - 即。新的会话 ID。此外,如果脚本的行为更像人类,那么服务器就无法识别脚本/机器人并阻止它。人类大多是第一次打开主页,从不将POST 作为第一个请求。

标签: python session cookies request


【解决方案1】:

要获取您的响应 cookie,请执行以下操作:

print(r.json()['cookies'])
#{'tasty_cookie': 'yum'}

【讨论】:

  • r.json() 返回ValueError: No JSON object could be decoded
猜你喜欢
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
相关资源
最近更新 更多