Попробуй таки через aiohttp
import aiohttp
url_to_scrape = ["http://example.com"] # Список сайтов
proxies = ["http://proxy1.com", "http://proxy2.com", "http://proxy3.com"]
async def connector(url, proxies, max_retries=3):
"""
url: list - список сайтов для коннекта
proxies: list - список проксей через которые хочешь ходить
max_retries: int - количество попыток для соединения перед переходом к другому прокси
"""
headers = {'User-Agent': 'Your User Agent'} # Тут свой набор хедеров вставишь
# Если сайт всегда будет один - убери начальный for
for site in url:
for proxy_url in proxies:
retries = 0
while retries < max_retries:
pconnect = aiohttp.ProxyConnector.from_url(proxy_url)
async with aiohttp.ClientSession(connector=pconnect) as session:
async with session.get(site, headers=headers) as response:
if response.status == 200:
print("Ура")
break # попытка успешна - вышли из цикла
else:
print(f"Сайт недоступен через {proxy_url}, попытка {retries + 1}/{max_retries}")
retries += 1
if retries >= max_retries:
print(f"Прокси не отвечает {proxy_url}, переходим к следующему")
await connector(url_to_scrape, proxies)
Ну дальше уже под себя ровняешь что тебе там надо