запросы с Python 3.x: отсутствует местоположение с кодом 302 status_code - PullRequest
0 голосов
/ 26 ноября 2018

Я использую запросы в Python 3 следующим образом:

r = requests.get(d, allow_redirects=False)

(где d - это URL, а именно d = 'http://1490korn.com').

То, что я получаю:

print(r.status_code)
302

И:

print(r.headers)
{'Pragma': 'no-cache', 'cache-control': 'no-cache', 'Location': 
'/VaZfZ/', 'Connection': 'Close', 'Proxy-Connection': 'Close'}

Почему я получаю так мало информации (для других моих URL-адресов я получаю дополнительную информацию, такую ​​как дата).И, в частности: почему информация о местоположении такая странная?

1 Ответ

0 голосов
/ 26 ноября 2018

Сервер просто сломан, половину времени.Ничто из того, что вы можете сделать на стороне клиента, не исправит это.Это не проблема Python, не проблема requests.

Когда вы используете базовые сетевые инструменты, такие как curl, иногда вы будете сталкиваться с точно такими же проблемами:

$ curl -D - http://1490korn.com
HTTP/1.1 302 Found
Pragma: no-cache
cache-control: no-cache
Location: /
Connection: close
Date: Mon, 26 Nov 2018 13:08:44 GMT

Переключатель командной строки -D - сообщает curlзаписать заголовки, которые он получает.

На этот раз присутствовал заголовок Date, а путь Location все еще неправильный, но неверный по-другому.Похоже, что сервер испытывает некоторые проблемы с надежностью, потому что когда вы повторяете команду несколько раз, некоторые ответы завершаются:

$ curl -D - http://1490korn.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.2
Date: Mon, 26 Nov 2018 13:10:01 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Location: http://www.kornradio.com
Connection: Keep-Alive

Это правильный ответ;обратите внимание на множество различий в заголовках.

...