Pypperteer бесконечно загружает страницу с динамическим содержимым. Как решить проблему?

Python 3.9
Chrome 104

Делаю автоматизированную регистрацию на сайте.
1. Подключаюсь через selenium к работающему chrome, запущенному через octo browser(антидетект)
2. Дохожу до последней стадии реги, на которой нужно заблокировать несколько реквестов. (Страница регистрации новой кампании google ads)
3. На последнем этапе подключаю pypperteer для intercepting запросов, обновляю страницу методом page.reload() и наблюдаю бесконечную загрузку. Часть запросов проходит и на этом останавливается.

Грузится бесконечно, но как только я завершаю работу программы, страница моментально прогружается.

Вот мой код pypperteer:
async def intercept_network_request(request: Request):
    print(request.url)
    await request.continue_()


async def skip_verif(endpoint):
    browser = await pyppeteer.connect(browserWSEndpoint=endpoint,
                                      defaultViewport=None)
    pages = await browser.pages()
    page = pages[0]

    await page.setRequestInterception(value=True)
    page.on('request', f=lambda req: asyncio.ensure_future(intercept_network_request(req)))
    await page.reload()
    input()


Так я вызываю эту функцию из основного кода:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(skip_verif(endpoint))
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
@MartinKlow
работа intercepting зависит от браузера, попробуй orbita (gologin) и этот код

import asyncio
import pyppeteer
from gologin import GoLogin

async def intercept_network_request(req):
    print(req.url)
    await req.continue_()
    


async def main():
    gl = GoLogin({
        "token": "yU0token",
        "profile_id": "yU0Pr0f1leiD",
        })

    debugger_address = gl.start()
    browser = await pyppeteer.connect(browserURL="http://"+debugger_address)
    page = await browser.newPage()
    await page.goto('https://www.google.com/search?q=sun+flower&rlz=1C1CHBF_enIN963IN963&source=lnms&tbm=isch&sa=X&sqi=2&ved=2ahUKEwjboKfMkoj0AhURppUCHS9hAuMQ_AUoAXoECAIQAw&biw=1920&bih=486&dpr=1')
    await page.setRequestInterception(True)
    new_resutls = page.on('request', 
        lambda req: asyncio.ensure_future(intercept_network_request(req)))
    await page.reload()


asyncio.get_event_loop().run_until_complete(main())
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект