https - 在 python 获取请求时收到 500 内部服务器错误,相同的 url 在浏览器中有效
问题描述
我正在尝试使用基于从 API 获得的 url 的 python 请求打开和下载 pdf。这适用于许多文件,但对于存储在一个特定站点的文件,我会收到 500 Internal Server 错误响应。在响应中有一个简单的 html,只有文本:未验证。
当我在 Chrome 中粘贴相同的 url 时,我得到了 pdf。但是我可以在控制台中看到“503 - 无法加载资源”错误,因为它无法加载某些图标。这能以某种方式相关吗?
当我在没有标题的 Postman 中运行它时,该 url 也有效。
我似乎遇到了与此问题中描述的相同的问题: python requests http response 500 (site can bereached in browser) 但是将 User-Agent 添加到请求标头的修复没有帮助。是否需要一些其他标头数据,有没有办法检查我的 Chrome 浏览器发送的请求?
更新:我记录了 Chrome 发送的请求并将标头复制到我的 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)
我使用 Python 3.6.3
解决方案
我发现只有在通过请求运行 GET 时才会出现错误。所以我改为使用:urllib.request.urlopen(url)
在此处了解有关此方法的更多信息:在 Python 3 中从 Web 下载文件
推荐阅读
- c++ - 我已经使用 Qt C++ 创建了一个桌面应用程序。右键单击 QPush 按钮,它会打开诸如“BC、RT、MT 之类的项目。如何为此编写代码
- javascript - 将 URL 转换为驱动直接链接并使用正则表达式将其显示为图像
- php - Postman 和 Guzzle 给出不同数量的结果
- apache - .conf 文件 RewriteCond:错误的标志分隔符
- java - 禁止 Xerxes DocumentBuilderFactory 执行 HTTP 请求
- git - 控制面板的凭据管理器是否与 git 的凭据帮助程序凭据管理器和凭据管理器核心相同
- mysql - 如何在 Laravel 中进行手动查询
- angular - KeyCloak - 用户管理
- graph - 给定成本下图中访问的最大节点数
- reinforcement-learning - 为什么要为自定义环境继承 OpenAI 基础体操类