500 Внутренняя ошибка сервера получена на Python запросе получения, тот же URL работает в браузере - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь открыть и загрузить PDF-файлы, используя запросы Python, основанные на URL-адресах, которые я получаю от API. Это работает для многих файлов, но для файлов, хранящихся на одном конкретном сайте, я получаю ответ 500 Internal Server error. В ответе есть простой HTML-код только с текстом: не аутентифицирован.

Когда я вставляю тот же URL в Chrome, я получаю PDF. Однако я вижу ошибку «503 - Не удалось загрузить ресурс» в консоли, так как не удалось загрузить какой-либо значок. Может ли это быть как-то актуально?

URL-адрес также работает, когда я запускаю его в Postman без заголовков.

У меня, похоже, та же проблема, что и в этом вопросе: Python запрашивает HTTP-ответ 500 (сайт доступен в браузере) Однако исправление добавления User-Agent в заголовок запроса не помогает. Могут ли потребоваться какие-либо другие данные заголовка, и есть ли способ проверить, какой запрос отправляет мой браузер Chrome?

Обновление: я записал, какой запрос отправляет Chrome, и скопировал заголовок в мой запрос на python. Все та же ошибка. Я пробовал с нашим без того же печенья.

Вот мой код:

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

1 Ответ

0 голосов
/ 29 июня 2018

Я обнаружил, что я получаю сообщение об ошибке только при запуске GET через запросы. Поэтому я перешел на использование: urllib.request.urlopen(url)

Подробнее об этом подходе можно прочитать здесь: Загрузить файл из Интернета на Python 3

...