Я делаю запрос следующим образом:
# 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
.