как передать заголовки в async с помощью session.get()

Я хотел бы знать, как передать заголовок в следующем вызове get

      headers = {
'User-Agent': 'Mozilla'
}
async def fetch(url, session):
async with session.get(url) as response:
    resp = await response.read()
    return resp

Я попробовал сделать следующее, но не получил ответа.

      headers = {
'User-Agent': 'Mozilla'
}
async def fetch(url, session):
async with session.get(url, headers=headers) as response:
    resp = await response.read()
    return resp

Цель состоит в том, чтобы вызывать разные URL-адреса в асинхронном режиме. Необходимо знать, есть ли другой альтернативный способ, но в любом случае необходимо передать заголовки, чтобы получить правильный ответ.

1 ответ

Решение

Вы можете использовать httpbin.org для запросов, чтобы увидеть, как серверы видят ваш запрос:

      import asyncio
import aiohttp
from pprint import pprint


headers = {
    'User-Agent': 'Mozilla'
}


async def fetch(url, session):
    async with session.get(url, headers=headers) as response:
        res = await response.json()
        pprint(res)


async def main():
    async with aiohttp.ClientSession() as session:
        await fetch("http://httpbin.org/get", session)


asyncio.run(main())

Результат:

      {'args': {},
 'headers': {'Accept': '*/*',
             'Accept-Encoding': 'gzip, deflate',
             'Host': 'httpbin.org',
             'User-Agent': 'Mozilla',
             'X-Amzn-Trace-Id': 'Root=1-602f94a7-3aa49d8c48ea04345380c67b'},
 'origin': '92.100.218.123',
 'url': 'http://httpbin.org/get'}

Как видишь 'User-Agent': 'Mozilla' было отправлено.

Другие вопросы по тегам