Задать вопрос

Как парсить авито используя https прокси?

Приветствую!
Не понимаю в чем может быть проблема:
Код работает верно, НО когда добавляю прокси, то выходит 403 ошибка:

{
    "status": "too-many-requests",
    "result": {
        "message": "Доступ с вашего IP-адреса временно ограничен",
        "link": "ru.avito://1/firewall/captcha/show"
    }
}


Сам код:
import ssl

import cloudscraper
import requests
from requests.adapters import HTTPAdapter, PoolManager
from urllib3.util import ssl_

CIPHERS = "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"

class TlsAdapter(HTTPAdapter):
    def __init__(self, ssl_options=0, **kwargs):
        self.ssl_options = ssl_options
        super(TlsAdapter, self).__init__(**kwargs)

    def init_poolmanager(self, *pool_args, **pool_kwargs):
        ctx = ssl_.create_urllib3_context(ciphers=CIPHERS, cert_reqs=ssl.CERT_REQUIRED,
                                          options=self.ssl_options)
        self.poolmanager = PoolManager(*pool_args, ssl_context=ctx, **pool_kwargs)

def except_error():  # Эту функцию можно дополнить, например обработку капчи
    sys.exit(1)



# Адрес прокси-сервера
proxy_host = '5.101.87.46'
proxy_port = 8000
proxy_username = 'NDV8N0'
proxy_password = 'tb2Py1'


cookies = {
    
    'f': '5.32e32548b6f3e9784b5abdd419952845a68643d4d8df96e9a68643d4d8df96e9a68643d4d8df96e9a68643d4d8df96e94f9572e6986d0c624f9572e6986d0c624f9572e6986d0c62ba029cd346349f36c1e8912fd5a48d02c1e8912fd5a48d0246b8ae4e81acb9fa143114829cf33ca746b8ae4e81acb9fa46b8ae4e81acb9fae992ad2cc54b8aa8b175a5db148b56e9bcc8809df8ce07f640e3fb81381f359178ba5f931b08c66a59b49948619279110df103df0c26013a2ebf3cb6fd35a0ac91e52da22a560f550df103df0c26013a7b0d53c7afc06d0bba0ac8037e2b74f92da10fb74cac1eab71e7cb57bbcb8e0f71e7cb57bbcb8e0f71e7cb57bbcb8e0f0df103df0c26013a037e1fbb3ea05095de87ad3b397f946b4c41e97fe93686adbf5c86bc0685a4ff42a08f76f4956e8502c730c0109b9fbb88742379a681fe552709b26a275ecd440e28148569569b79099f064490bd264aaffcb3ba7c814b452ebf3cb6fd35a0ac0df103df0c26013a28a353c4323c7a3a140a384acbddd748ec69374753ddd6b03de19da9ed218fe23de19da9ed218fe2ddb881eef125a8703b2a42e40573ac3c8edd6a0f40cbfd87da3d420d6cca468c',
    'ft': '"lXh+9XB6Da+f+A03Jx6nMRILS6YV95XEpyuIlTPmZ1P6+eMfHKfBUtIwTF2CVRSTgiS9qEq4zI39C2Yr8L1oB4DwFXnxjTHs1RGOlLcQuA7c0bNfgOYNvgGHTc29VBWh3yWlLb1DikbE22G4WmDQ1mNDxQCmB698vyunxx4tZIT+Z5dxe8FDsGGdDXxtS/wt"',
 
}

headers = {
    'authority': 'www.avito.ru',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'cache-control': 'max-age=0',
    # 'cookie': 'srv_id=7etrx3vhcoPwcDc_.cNW_6bI6EgfXIPIuCWD28oDWVtuib7ijdgKWxEuAf_5g069aq8YL6TyipmThThU=.9Hb_zxG5MZ19t7L2l3cbF26f21vdST0bklsEBbknzrE=.web; gMltIuegZN2COuSe=EOFGWsm50bhh17prLqaIgdir1V0kgrvN; u=2xzrsp7y.1hwbhq.13hi7jk6ndc00; buyer_laas_location=621540; luri=all; buyer_location_id=621540; _ym_uid=1690297302431837220; _ym_d=1690297302; _gcl_au=1.1.1913198390.1690297302; _ym_isad=2; _ga=GA1.1.1627394497.1690297304; tmr_lvid=e1ef0b6537bfb5d336a44533e8c87088; tmr_lvidTS=1690297304327; uxs_uid=2b895610-2afc-11ee-94bb-635b59dcaff4; adrdel=1; adrcid=ANY1i3OeCiAGj19eApA1lXA; f=5.32e32548b6f3e9784b5abdd419952845a68643d4d8df96e9a68643d4d8df96e9a68643d4d8df96e9a68643d4d8df96e94f9572e6986d0c624f9572e6986d0c624f9572e6986d0c62ba029cd346349f36c1e8912fd5a48d02c1e8912fd5a48d0246b8ae4e81acb9fa143114829cf33ca746b8ae4e81acb9fa46b8ae4e81acb9fae992ad2cc54b8aa8b175a5db148b56e9bcc8809df8ce07f640e3fb81381f359178ba5f931b08c66a59b49948619279110df103df0c26013a2ebf3cb6fd35a0ac91e52da22a560f550df103df0c26013a7b0d53c7afc06d0bba0ac8037e2b74f92da10fb74cac1eab71e7cb57bbcb8e0f71e7cb57bbcb8e0f71e7cb57bbcb8e0f0df103df0c26013a037e1fbb3ea05095de87ad3b397f946b4c41e97fe93686adbf5c86bc0685a4ff42a08f76f4956e8502c730c0109b9fbb88742379a681fe552709b26a275ecd440e28148569569b79099f064490bd264aaffcb3ba7c814b452ebf3cb6fd35a0ac0df103df0c26013a28a353c4323c7a3a140a384acbddd748ec69374753ddd6b03de19da9ed218fe23de19da9ed218fe2ddb881eef125a8703b2a42e40573ac3c8edd6a0f40cbfd87da3d420d6cca468c; ft="lXh+9XB6Da+f+A03Jx6nMRILS6YV95XEpyuIlTPmZ1P6+eMfHKfBUtIwTF2CVRSTgiS9qEq4zI39C2Yr8L1oB4DwFXnxjTHs1RGOlLcQuA7c0bNfgOYNvgGHTc29VBWh3yWlLb1DikbE22G4WmDQ1mNDxQCmB698vyunxx4tZIT+Z5dxe8FDsGGdDXxtS/wt"; v=1690300709; _ym_visorc=b; sx=H4sIAAAAAAAC%2FwTAUQqDMAwG4Lv8z3uos%2F5ZepwmlYEUxpwBK9593wWSNBeuSl2YqU1qm9VlSWbiinIhUHCuybLnbfz2TxpHrXG899G%2F0ePcuuOBhjJR0%2FwSmZ73%2FQ8AAP%2F%2Frk2RJFsAAAA%3D; dfp_group=65; abp=0; _ga_M29JC28873=GS1.1.1690300859.2.1.1690301314.59.0.0; _buzz_fpc=JTdCJTIycGF0aCUyMiUzQSUyMiUyRiUyMiUyQyUyMmRvbWFpbiUyMiUzQSUyMi53d3cuYXZpdG8ucnUlMjIlMkMlMjJleHBpcmVzJTIyJTNBJTIyVGh1JTJDJTIwMjUlMjBKdWwlMjAyMDI0JTIwMTYlM0EwOCUzQTM4JTIwR01UJTIyJTJDJTIyU2FtZVNpdGUlMjIlM0ElMjJMYXglMjIlMkMlMjJ2YWx1ZSUyMiUzQSUyMiU3QiU1QyUyMnVmcCU1QyUyMiUzQSU1QyUyMjkxMjI0YWQxNGQzOTY0MmQ3ODc4NWVkMmUwNmE3ZmJkJTVDJTIyJTJDJTVDJTIyYnJvd3NlclZlcnNpb24lNUMlMjIlM0ElNUMlMjIxMTQuMCU1QyUyMiU3RCUyMiU3RA==; tmr_detect=0%7C1690301321734',
    'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    '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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
}

proxies = {
    'https': f'http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}'
}

s = requests.session()
adapter = TlsAdapter(ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1)
s.mount("https://", adapter)

scraper = cloudscraper.create_scraper(delay=10, browser={'custom': 'ScraperBot/1.0'})
scraper.mount("https://", adapter)
# прбовал и через cloudscraper
url = 'https://www.avito.ru/web/1/main/items'
params = {
    'forceLocation': False,
    'locationId': 653040,
    'lastStamp': 1683748131,
    'limit': 30,
    'offset': 89,
    'categoryId': 4
}
r = scraper.get(url, params=params, headers=headers, cookies=cookies)
print(r.text)

# так код работает, все выдается верно


Но как только я добавляю прокси
r = scraper.get(url, params=params, headers=headers, cookies=cookies, proxies=proxies)


То выходит 403 ошибка.

Важно!

1. ip прокси точно не в блоке, тестил через антидект браузер, все работает правильно. Если бы ip был в блоке, то я бы не смог зайти в авито (висела бы окошко, что доступ закрыт из-за подозрительного ip)
2. Пробовал мобильные прокси с ротацией, тоже не получается
3. Пробовал `socks5` прокси, также не получается

Хотя буквально месяц назад таких проблема не было. В чем может быть дело?

Возможно кто-то ответит мол " А ты используй http, тип так:
proxies = {
'http': f'http://{proxy_username}:{proxy_password}@{proxy_ho...}'
}
"
Сразу хочу ответить, что когда вы указываете http, то запросы будут проходить через локальный ip, а не через прокси, именно поэтому будет "верный" ответ.
  • Вопрос задан
  • 1298 просмотров
Подписаться 4 Средний 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
Noizefan
@Noizefan
import cloudscraper

че эта
browser={'custom': 'ScraperBot/1.0'}

а это?
'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',

нахрена? sec-ch-* начали указывать новые браузеры, при том что маскируются под старые, будь сразу старым, и более того, попробуй не хром а например фф.

cookies = {

'f': '5.32e32548b6f3e9784b5abdd419952845a68643d4d8df96e9a68643d4d8df96e9a68643d4d8df96e9a68643d4d8df96e94f9572e6986d0c624f9572e6986d0c624f9572e6986d0c62ba029cd346349f36c1e8912fd5a48d02c1e8912fd5a48d0246b8ae4e81acb9fa143114829cf33ca746b8ae4e81acb9fa46b8ae4e81acb9fae992ad2cc54b8aa8b175a5db148b56e9bcc8809df8ce07f640e3fb81381f359178ba5f931b08c66a59b49948619279110df103df0c26013a2ebf3cb6fd35a0ac91e52da22a560f550df103df0c26013a7b0d53c7afc06d0bba0ac8037e2b74f92da10fb74cac1eab71e7cb57bbcb8e0f71e7cb57bbcb8e0f71e7cb57bbcb8e0f0df103df0c26013a037e1fbb3ea05095de87ad3b397f946b4c41e97fe93686adbf5c86bc0685a4ff42a08f76f4956e8502c730c0109b9fbb88742379a681fe552709b26a275ecd440e28148569569b79099f064490bd264aaffcb3ba7c814b452ebf3cb6fd35a0ac0df103df0c26013a28a353c4323c7a3a140a384acbddd748ec69374753ddd6b03de19da9ed218fe23de19da9ed218fe2ddb881eef125a8703b2a42e40573ac3c8edd6a0f40cbfd87da3d420d6cca468c',
'ft': '"lXh+9XB6Da+f+A03Jx6nMRILS6YV95XEpyuIlTPmZ1P6+eMfHKfBUtIwTF2CVRSTgiS9qEq4zI39C2Yr8L1oB4DwFXnxjTHs1RGOlLcQuA7c0bNfgOYNvgGHTc29VBWh3yWlLb1DikbE22G4WmDQ1mNDxQCmB698vyunxx4tZIT+Z5dxe8FDsGGdDXxtS/wt"',

}

что это за куки и с чего они вообще нужны?

сделай 4 запроса, два с и без прокси на ngrok, два с и без прокси на авито - по хедерам станет понятно что и почему тебя режет
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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