【问题标题】:Python3 requests, cookie is set but still 401 unauthorizedPython3 请求,cookie 已设置但仍 401 未授权
【发布时间】:2018-03-21 09:14:50
【问题描述】:

我可以通过 Firefox 访问需要身份验证的网站。通过删除所有其他 cookie,我可以准确地知道与会话关联的 cookie。

我需要从 python 脚本向这个网站发送 REST Get 请求。我这样设置cookie:

import requests

header = dict(PHPSESSID='cookie...')

resp = requests.get("http://website/with/rest/api?arguments...", cookies=header)

print(resp)
print(resp.text)

但答案始终是

<Response [401]>
Not Authorized

什么机制会阻止我通过脚本访问该网站?我不知道除了 cookie 之外的任何其他东西来识别我自己。

【问题讨论】:

  • 查看网站的其余文档。没有更多信息,我们无法为您提供帮助。有些网站需要授权/注册才能访问其余的 api。可能您缺少这样的初始步骤。
  • 我的问题主要是,我可以在 Firefox 开发者控制台中看到的 GET 和 python 脚本中的 GET 有什么区别?如果我设置完全相同的参数和cookie,应该没有区别吗?
  • 如果您不向我们显示 URL,就很难说出有什么区别。也许服务器查看用户代理,也许是其他一些标头。谁知道?
  • 其实就是这样,我需要添加用户代理。谢谢!

标签: python-3.x rest cookies python-requests


【解决方案1】:

你需要欺骗网站,让它认为你在使用浏览器。

为此,请使用类似 trick_header = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0'} 的标题并调用 requests.get("http://website/with/rest/api?arguments...", cookies=header, headers=trick_header)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多