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

Введение

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

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

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

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

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

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

Puppeteer

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

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

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

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

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

Примеры

1const puppeteer = require('puppeteer');
2
3(async () => {
4    const browser = await puppeteer.connect({
5    browserURL: 'http://localhost:20701',
6    defaultViewport: null,
7});
8
9const context = browser.browserContexts()[0];
10const page = await context.newPage();
11
12await page.goto('https://google.com');
13
14await page.close();
15browser.disconnect();
16})();

Playwright

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

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

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

Примеры

1const { chromium } = require('playwright');
2
3(async () => {
4    const browser = await chromium.connectOverCDP('http://localhost:19397');
5    const context = browser.contexts()[0];
6    // Create a new page in the context.
7    const tab = await context.newPage();
8    // Navigate to a URL.
9    await tab.goto('https://www.google.com', {waitUntil: 'domcontentloaded'});
10    // Close the tab.
11    await tab.close();
12    await browser.close();
13})();

Chromiumoxide (Rust)

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

Автоматизация с использованием языка программирования Rust осуществляется через библиотеку Chromiumoxide (opens in a new tab)

Примеры

1use futures_util::StreamExt;
2
3//// Cargo.toml
4// [dependencies]
5// chromiumoxide = { version = "0.5.6", default-features = false, features = [
6//     "tokio",
7//     "tokio-runtime",
8// ] }
9// futures-util = "0.3.29"
10// tokio = { version = "1.34.0", default-features = false, features = [
11//     "rt-multi-thread",
12//     "macros",
13// ] }
14
15#[tokio::main]
16async fn main() {
17    // Connect to a browser instance
18    let (client, mut handler) = chromiumoxide::Browser::connect("http://localhost:20701")
19        .await
20        .expect("failed to connect to browser");
21
22    // Spawn a thread with the handler
23    tokio::spawn(async move {
24        loop {
25            let _ = handler.next().await.expect("failed to handle");
26            }
27        });
28
29        // Create a new tab
30    let tab = client
31        .new_page("about:blank")
32        .await
33        .expect("failed to create tab");
34
35    // Navigate to a URL
36    tab.goto("https://www.google.com")
37        .await
38        .expect("failed to navigate");
39
40    // Print the title of the page
41    let title = tab.get_title().await.expect("failed to get title");
42    println!("title: {:?}", title);
43
44    // Close the tab and disconnect
45    tab.close().await.expect("failed to close tab");
46}
47

Chromedp (Golang)

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

Автоматизация с использованием языка программирования Go осуществляется через библиотеку chromedp (opens in a new tab)

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

Примеры

1package main
2
3import (
4    "context"
5
6    "github.com/chromedp/chromedp"
7    )
8
9func main() {
10    ctx, cancel := chromedp.NewRemoteAllocator(context.Background(), "http://localhost:17986")
11    defer cancel()
12
13    ctx, cancel = chromedp.NewContext(ctx)
14    defer cancel()
15
16    // Open google.com.
17    if err := chromedp.Run(ctx,
18        chromedp.Navigate("https://www.google.com/"),
19    ); err != nil {
20        panic(err)
21    }
22}