Введение
Для выполнения действий в браузере посредством написанного на каком-либо языке программирования кода, вам необходимо использовать сторонние библиотеки, такие как 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}