在 python 获取请求时收到 500 内部服务器错误,在浏览器中也是如此 url

500 Internal server error received on python get request, the same url works in browser

我正在尝试使用 python 请求打开和下载 pdf,这些请求基于我从 API 获得的 urls。这适用于许多文件,但对于存储在一个特定站点的文件,我会收到 500 Internal Server 错误响应。在响应中有一个简单的 html,只有文本:未验证。

当我在 Chrome 中粘贴相同的 url 时,我得到了 pdf。但是我可以在控制台中看到“503 - 无法加载资源”错误,因为它无法加载某些图标。这能以某种方式相关吗?

当我 运行 在 Postman 中完全没有 header 时,url 也可以工作。

我遇到了与这个问题中描述的问题相同的问题: 但是,将 User-Agent 添加到请求的 header 的修复没有帮助。是否需要其他一些 header 数据,是否有任何方法可以检查我的 Chrome 浏览器发送的请求?

更新:我记录了 Chrome 发送的请求并将 header 复制到我的 python 请求。仍然是同样的错误。我试过使用我们没有相同的 cookie。

这是我的代码:

import requests
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
               'Accept-Encoding': 'gzip, deflate, br',
               'Accept-Language': 'nb,en-GB;q=0.9,en-US;q=0.8,en;q=0.7',
               'Connection': 'keep-alive',
               'Cookie': 'JSESSIONID=a95b392a6d468e2188e73d2c296b; NSC_FS-NL-CET-XFC-IUUQ-8081=ffffffff3d9c37c545525d5f4f58455e445a4a4229a1; JSESSIONID=7b1dd39854eee82b2db41225150e',
               'Host': url.split('/')[2],
               'Upgrade-Insecure-Requests': '1',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
response = requests.get(url, headers=headers, verify=True)

我用的是Python3.6.3

我发现只有当我 运行 通过请求获取 GET 时才会出现错误。所以我改为使用:urllib.request.urlopen(url)

在此处了解有关此方法的更多信息:Download file from web in Python 3