Vision

Подключение к браузеру

Введение

Для выполнения действий в браузере посредством написанного на каком-либо языке программирования кода, вам необходимо использовать сторонние библиотеки, такие как Puppeteer, Playwright, Selenium и др.

Важно отметить, что на данный момент, подключиться с целью автоматизации можно только к тем профилям, которые были запущены через API.

Прочитать о том, как запускать и останавливать профили посредством API вы можете в соответствующей документации.

Запуск и остановка профилей

Методы запуска и остановки профилей посредством API

В данном документе вы сможете найти документацию по подключению к профилю через одну из вышеуказанных библиотек с использованием нескольких языков программирования.

Puppeteer

Общая информация

Puppeteer это библиотека Node.js, которая позволяет автоматизировать процессы в Chromium-based браузере при помощи Chrome DevTools Protocol.

Иными словами, вы можете автоматизировать свои действия в браузерном профиле: открытие вкладок, прогулка по сайту, ввод данных в формы и так далее.

Ниже мы добавили несколько примеров работы с профилем посредством Puppeteer на JavaScript (Node.js) и Python (Pyppeteer). В каждом примере присутствуют комментарии для вашего удобства.

Инструкции по добавлению библиотек в свой проект вы сможете найти на сайте разработчика.

Примеры

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.connect({
    browserURL: 'http://127.0.0.1:20701',
    defaultViewport: null,
});

const context = browser.browserContexts()[0];
const page = await context.newPage();

await page.goto('https://google.com');

await page.close();
browser.disconnect();
})();
import asyncio
from pyppeteer import connect

async def main():
    browser = await connect(browserURL='http://127.0.0.1:20701', defaultViewport=None)

    page = await browser.newPage()
    await page.goto('https://www.google.com')

    await page.close()
    await browser.disconnect()

asyncio.get_event_loop().run_until_complete(main())

Playwright

Общая информация

Playwright — это библиотека Node.js для автоматизации Chromium, Firefox и WebKit с помощью API.

По функционалу ничем не уступает Puppeteer и другим библиотекам автоматизации.

Примеры

const { chromium } = require('playwright');

(async () => {
    const browser = await chromium.connectOverCDP('http://127.0.0.1:19397');
    const context = browser.contexts()[0];
    // Create a new page in the context.
    const tab = await context.newPage();
    // Navigate to a URL.
    await tab.goto('https://www.google.com', {waitUntil: 'domcontentloaded'});
    // Close the tab.
    await tab.close();
    await browser.close();
})();
import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.connect_over_cdp(endpoint_url='http://127.0.0.1:20701')
        context = browser.contexts[0]

        page = await context.new_page()
        await page.goto('https://www.google.com')

        await page.close()


asyncio.get_event_loop().run_until_complete(main())
using Microsoft.Playwright;

using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.ConnectOverCDPAsync("http://127.0.0.1:16591");

var context = browser.Contexts[0];
var page = await context.NewPageAsync();

await page.GotoAsync("https://www.google.com", new PageGotoOptions() { WaitUntil = WaitUntilState.NetworkIdle });

var title = await page.TitleAsync();
Console.WriteLine(title);

Chromiumoxide (Rust)

Общая информация

Автоматизация с использованием языка программирования Rust осуществляется через библиотеку Chromiumoxide

Примеры

use futures_util::StreamExt;

//// Cargo.toml
// [dependencies]
// chromiumoxide = { version = "0.5.6", default-features = false, features = [
//     "tokio",
//     "tokio-runtime",
// ] }
// futures-util = "0.3.29"
// tokio = { version = "1.34.0", default-features = false, features = [
//     "rt-multi-thread",
//     "macros",
// ] }

#[tokio::main]
async fn main() {
// Connect to a browser instance
let (client, mut handler) = chromiumoxide::Browser::connect("http://127.0.0.1:20701")
    .await
    .expect("failed to connect to browser");

// Spawn a thread with the handler
tokio::spawn(async move {
    loop {
        let _ = handler.next().await.expect("failed to handle");
        }
    });

    // Create a new tab
let tab = client
    .new_page("about:blank")
    .await
    .expect("failed to create tab");

// Navigate to a URL
tab.goto("https://www.google.com")
    .await
    .expect("failed to navigate");

// Print the title of the page
let title = tab.get_title().await.expect("failed to get title");
println!("title: {:?}", title);

// Close the tab and disconnect
tab.close().await.expect("failed to close tab");
}

Chromedp (Golang)

Общая информация

Автоматизация с использованием языка программирования Go осуществляется через библиотеку chromedp

Chromedp - это быстрый и простой способ управлять браузерами, поддерживающими протокол Chrome DevTools Protocol, в Go без внешних зависимостей.

Примеры

package main

import (
"context"

"github.com/chromedp/chromedp"
)

func main() {
ctx, cancel := chromedp.NewRemoteAllocator(context.Background(), "http://127.0.0.1:17986")
defer cancel()

ctx, cancel = chromedp.NewContext(ctx)
defer cancel()

// Open google.com.
if err := chromedp.Run(ctx,
    chromedp.Navigate("https://www.google.com/"),
); err != nil {
    panic(err)
}
}

На этой странице