Антидетект браузер VisionVision Docs

CDP расширения

Введение

В Vision стандартный Chrome DevTools Protocol расширен собственными командами человекоподобного ввода и виртуальной мыши. Они помогают сделать автоматизацию менее заметной для антифрод-систем: вместо мгновенных «роботизированных» действий ввод текста и движения курсора выглядят естественно — так, как если бы их выполнял реальный пользователь.

Доступно два расширения:

  • Human Type — человекоподобный ввод текста с естественными задержками между нажатиями.
  • VirtualMouse — виртуальный курсор с плавной, естественной траекторией движения — как у реального пользователя.

Эти команды являются расширениями Vision и недоступны в обычном Chromium или Chrome.

CDP Extras доступны начиная с тарифа Base и выше.

Подключение

Команды отправляются в рамках обычной CDP-сессии к уже запущенному профилю — через любую библиотеку автоматизации, которая поддерживает Chrome DevTools Protocol (Playwright, Puppeteer и др.).

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

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

Как подключиться к запущенному профилю через Playwright, Puppeteer и другие библиотеки

Human Type

Команда Input.typeText печатает текст в текущий сфокусированный редактируемый элемент, имитируя ручной ввод: символы появляются по одному со случайной задержкой между нажатиями.

Параметры

Prop

Type

Пример

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

(async () => {
    const browser = await chromium.connectOverCDP('http://127.0.0.1:19397');
    const context = browser.contexts()[0];
    const page = await context.newPage();
    const client = await context.newCDPSession(page);

    await page.goto('https://example.com');
    // Текст вводится в текущий сфокусированный редактируемый элемент
    await client.send('Input.typeText', {
        text: 'Введено с помощью Human Type',
        minDelay: 55,
        maxDelay: 130,
    });

    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('http://127.0.0.1:19397')
        context = browser.contexts[0]
        page = await context.new_page()
        client = await context.new_cdp_session(page)

        await page.goto('https://example.com')
        # Текст вводится в текущий сфокусированный редактируемый элемент
        await client.send('Input.typeText', {
            'text': 'Введено с помощью Human Type',
            'minDelay': 55,
            'maxDelay': 130,
        })

        await browser.close()

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

VirtualMouse

VirtualMouse — это настоящий курсор внутри браузера, который движется так, будто им управляет живой человек: плавная траектория и естественные микроотклонения. Никаких мгновенных телепортов и идеально прямых линий, по которым антифрод-системы вычисляют автоматизацию.

Доступные команды:

  • VirtualMouse.create — создаёт виртуальный курсор.
  • VirtualMouse.configure — меняет настройки движения для последующих команд.
  • VirtualMouse.move — перемещает курсор в точку x, y.
  • VirtualMouse.click — перемещает курсор (если переданы координаты) и выполняет левый клик. Без координат используется текущая позиция курсора.
  • VirtualMouse.destroy — удаляет виртуальный курсор.

Параметры движения

Передаются в VirtualMouse.create и VirtualMouse.configure.

Prop

Type

Параметры клика

Передаются в VirtualMouse.click.

Prop

Type

Пример

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

(async () => {
    const browser = await chromium.connectOverCDP('http://127.0.0.1:19397');
    const context = browser.contexts()[0];
    const page = await context.newPage();
    const client = await context.newCDPSession(page);

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

    // Создаём виртуальный курсор
    await client.send('VirtualMouse.create', {
        speed: 1.2,
        x: 100,
        y: 100,
        noiseScale: 1.0,
        includeReaction: true,
        seed: 12345,
    });

    try {
        await client.send('VirtualMouse.move', { x: 500, y: 240 });
        await client.send('VirtualMouse.click', { duration: 40 });
    } finally {
        // Удаляем курсор в любом случае
        await client.send('VirtualMouse.destroy');
    }

    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('http://127.0.0.1:19397')
        context = browser.contexts[0]
        page = await context.new_page()
        client = await context.new_cdp_session(page)

        await page.goto('https://example.com')

        # Создаём виртуальный курсор
        await client.send('VirtualMouse.create', {
            'speed': 1.2,
            'x': 100,
            'y': 100,
            'noiseScale': 1.0,
            'includeReaction': True,
            'seed': 12345,
        })

        try:
            await client.send('VirtualMouse.move', {'x': 500, 'y': 240})
            await client.send('VirtualMouse.click', {'duration': 40})
        finally:
            # Удаляем курсор в любом случае
            await client.send('VirtualMouse.destroy')

        await browser.close()

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

Готовые примеры

Полные рабочие примеры для JavaScript и Python собраны в отдельном репозитории.

browser-vision/cdp-extras

Примеры использования Human Type и VirtualMouse из собственного кода автоматизации

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