Python запрашивает изменение заголовка хоста при добавлении пользовательского агента пользователя - PullRequest
2 голосов
/ 09 марта 2019

Я делаю запрос следующим образом:

# WORKING VERSION

proxies= {'http': my_proxy_info}

r = requests.get(url, proxies=proxies, stream=True)

Я просматриваю консольные журналы отправляемых заголовков запроса GET и вижу эти два значения, среди прочего:

# WORKING VERSION REQUEST HEADERS

GET /downloads/001.epub HTTP/1.1  # NOTE Relative Path Here
Host: www.host-domain.org

Это отлично работает;Я могу загрузить файл как положено.

Однако, когда я пытаюсь добавить пользовательское значение User-Agent в мои заголовки, как это:

# FAILING VERSION

headers = {'User-Agent': 'My Custom User-Agent Value'}
proxies= {'http': my_proxy_info}

r = requests.get(url, proxies=proxies, headers=headers, stream=True)

Я отмечаю следующий выводв консоли:

# FAILING VERSION REQUEST HEADERS

 GET http://www.host-domain.org/downloads/001.epub HTTP/1.1  # NOTE Full Path Here
 Host: www.host-domain.org

Обратите внимание на разницу в параметре GET - в успешной версии, похоже, используется относительный путь запроса.

Во многих случаях я успешно использовал этот методно только недавно начали использовать его для загрузки файлов .epub, используя следующий подход:

with open ('output.epub', 'wb')as file:
    for chunk in data.iter_content(chunk_size=1024):
        file.write(chunk)

Нет ошибок, но файл поврежден при записи.Уберите пользовательский заголовок User-Agent, и файл будет отлично записан.

Как добавить значение User-Agent клиента в заголовки, не изменяя другие значения заголовка?

Дополнительная информация: Я делаю http-запросы без параметра stream = True к веб-сайту и не испытываю проблем при чтении простых текстовых http-ответов, таких как HTML-разметка для веб-страницы, даже при использовании пользовательского значения заголовка User-Agent.

...