Стенд не имитирует обход защиты — он показывает методологию ускорения ЦИКЛА уже рабочей связки (4 сайта, эмуляция человека, 50 IP), без переделки логики обхода.
Один сайт ждёт своей очереди, пока не закончится предыдущий — время суммируется. Плюс на каждый сайт отдельные лишние проверки/переходы, которых можно избежать.
Все 4 сайта опрашиваются одновременно, каждый — своим срезом из пула 50 IP. Время круга = время САМОГО МЕДЛЕННОГО сайта, а не суммы всех.
# было: 4 сайта по очереди, каждый ждёт предыдущий for site in sites: result = scrape_site(site) # блокирует поток целиком save(result) # стало: 4 сайта одновременно, свой IP-срез на каждый async def run_cycle(sites, proxy_pool): sem = asyncio.Semaphore(len(proxy_pool)) async def one(site): async with sem: return await scrape_site_async(site, next_proxy()) results = await asyncio.gather(*[one(s) for s in sites]) changed = [r for r in results if r.hash != last_seen[r.site]] # дельта save_all(changed)
Стенд под проект «Доработка / создание нового парсера» · freelancehunt.com/.../1648821