У нас есть сервер, содержащий файлы .txt, в основном некоторые файлы журналов, растущие с течением времени. Когда я использую urllib2
для отправки GET
на сервер r = urllib2.urlopen('http://example.com')
, заголовки ответа будет:Запросы Python и urllib2 получают разные заголовки при подключении к одному и тому же хосту
Date: XXX
Server: Apache
Last-Modified: XXX
Accept-Ranges: bytes
Content-Length: 12345678
Vary: Accept-Encoding
Connection: close
Content-Type: text/plain
Хотя если r = requests.get('http://example.com')
:
Content-Encoding: gzip
Accept-Ranges: bytes
Vary: Accept-Encoding
Keep-alive: timeout=5, max=128
Last-Modified: XXX
Connection: Keep-Alive
ETag: xxxxxxxxx
Content-Type: text/plain
Второй ответ то же самое с тем, что я получаю, используя хром разработать инструменты. Так почему же они разные? Мне нужен заголовок , чтобы определить, сколько байтов мне нужно загружать каждый раз, потому что файл может расти очень большой.
EDIT: Использование httpbin.org/get
для теста:
urllib2 ответа:
{u'args': {},
u'headers': {u'Accept-Encoding': u'identity',
u'Host': u'httpbin.org',
u'User-Agent': u'Python-urllib/2.7'},
u'origin': u'ip',
u'url': u'http://httpbin.org/get'}
ответ заголовки:
Server: nginx
Date: Sat, 14 Jan 2017 07:41:16 GMT
Content-Type: application/json
Content-Length: 207
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
запрашивает ответ:
{u'args': {},
u'headers': {u'Accept': u'*/*',
u'Accept-Encoding': u'gzip, deflate',
u'Host': u'httpbin.org',
u'User-Agent': u'python-requests/2.11.1'},
u'origin': u'ip',
u'url': u'http://httpbin.org/get'}
заголовки ответа:
Server : nginx
Date : Sat, 14 Jan 2017 07:42:39 GMT
Content-Type : application/json
Content-Length : 239
Connection : keep-alive
Access-Control-Allow-Origin : *
Access-Control-Allow-Credentials : true
Есть _sending_ те же заголовки в каждом случае? – snakecharmerb
Вы уверены, что услуга, которую вы достигаете, не повреждена? Поскольку это корпоративная услуга, возможно, кто-то ошибся, и существует несколько разных веб-серверов под одним и тем же виртуальным IP-адресом? Если вы попытаетесь обновить (CTRL + F5) в хроме, вы последовательно получаете тот же ответ? – iTayb
@snakecharmerb Привет, да, сервер требует базового auth. В urllib2 я вручную добавляю «Авторизация»: «Базовый XXX», а в запросах я использую request.get ('url', auth = ('user', 'password')). Все остальные настройки по умолчанию. – dofine