Как парсить Яндекс.Маркет на python.Ошибка 403

Всем привет.Проблема с парсингом Яндекс.Маркет.Я хочу парсить телефоны . Когда я обращаюсь к Яндекс.Маркет,он мне возвращает 403 ответ ,то есть отказ в доступе.Вместо html кода который я хочу получить чтобы потом его распарсить ,я получаю html код в котором мне говорит Яндекс что мол мой ПК заражён (на самом деле с моим ПК всё норм).Ну и соответственно сделать норм парсер не получаеться из-за 403 ошибки.С другими сайтами получается и всё норм,но с Яндекс какие-то проблемы у меня.Как обойти эту ошибку?

Ссылка на страницу для парсинга - https://market.yandex.ru/catalog--smartfony/16814639/list?hid=91491&glfilter=16816262%3A16816264&onstock=1

import requests
import bs4


headers = requests.utils.default_headers()
headers.update({ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'})

url = "https://market.yandex.ru/catalog--smartfony/16814639/list?hid=91491&glfilter=16816262%3A16816264&onstock=1"

r = requests.get(url,headers)
r.encoding="UTF8"
soup = bs4.BeautifulSoup(r.content,"html.parser")
sel = soup.select("div.d0N9PZYfeg a")
for i in sel:
    print(i)

Ответы (1 шт):

Автор решения: hedgehogues

Убил какое-то катострофическое количество времени на вытаскивание данных. В чём причина была того, что у меня не работал скрипт, я так до конца и не разобрался. Скорее всего с сертификатами проблема была. Запустился из-под системного питона и всё заработало.

Укажите все заголовки, Которые есть у меня

import requests

url = "https://market.yandex.ru/catalog--smartfony/16814639/list?hid=91491&glfilter=16816262:16816264&onstock=1"

headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'Connection': 'keep-alive',
'Host': 'market.yandex.ru',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
}

response = requests.request("GET", url, headers=headers)

print(response.text.encode('utf8'))
print(response.status_code)
→ Ссылка