Rett-oo
@Rett-oo

Почему запрос с requests работает, а с aiohttp возвращает 403?

Столкнулся с проблемой мне не понятной: при выполнении запроса с requests(с сессией или без) запрос проходит нормально, в тоже время при выполнении запроса с помощью aiohttp ответ приходит 403. Ниже мвп для проверки(куки и заголовки можете подставить свои:

import requests
import aiohttp
import asyncio
from bs4 import BeautifulSoup, ResultSet, Tag

cookies = {}

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8',
    'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
    'Referer': 'https://www.vseinstrumenti.ru/brand/bosch-3/',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'same-origin',
    'Priority': 'u=0, i',
}

session = requests.Session()

resp = session.get('https://www.vseinstrumenti.ru/brand/bosch-3/page1/', cookies=cookies, headers=headers)
assert resp.status_code == 200


def parse(text):
    soup = BeautifulSoup(text, features='lxml')

    items: ResultSet[Tag] = soup.find(
        'div', id='product-listing-top'
    ).find(
        'div', attrs={'data-qa': 'listing'}
    ).find_all('div', attrs={'data-qa': 'products-tile'})

    print(items)


print('REQUESTS')
parse(resp.text)
# print(resp.headers)
# print(resp.cookies)


async def gd():
    async with aiohttp.ClientSession(
        'https://www.vseinstrumenti.ru',
        cookies=cookies,
        headers=headers
    ) as session:
        async with session.get('/brand/bosch-3/page1/', cookies=cookies, headers=headers) as resp:
            print(resp.status)
            resp = await resp.text()

    return resp


async def main():
    data = await gd()

    parse(data)


print('AIOHTTP')
asyncio.run(main())


В чем может быть проблема?
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
Rett-oo
@Rett-oo Автор вопроса
В моем случае сайт делал запросы, перед получением html документа, которые не отображаются в браузерах Chrome и Mozilla. Пришлось воспользоваться сторонним софтом. Особо не разбирался, но в моём случае ожидаемо не приходило или приходило не то значение cf_clearance куки клаудфеера.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы