Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.

Bablosoft News
  • Теперь вместе с сервисом FingerprintSwitcher можно использовать популярные фреймворки автоматизации. Список поддерживаемых фреймворков: selenium, puppeteer, playwright. Вы также можете использовать любую другую библиотеку автоматизации браузера, которая может работать через CDP.

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

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

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

    Вот как это выглядит для проекта, написанного с использованием фреймворка puppeteer:

    Видео


    Как начать использовать?

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

    • Puppeteer. Плагин для фреймворка puppeteer(puppeteer-with-fingerprints) доступен здесь.
    • Selenium. Плагин для фреймворка selenium(selenium-with-fingerprints) доступен здесь.
    • Playwright. Плагин для фреймворка playwright(playwright-with-fingerprints) доступен здесь.

    Каждый из этих плагинов адаптирован для конкретного фреймворка. Если вы хотите подключить фреймворк, которого нет в списке, вы можете использовать универсальный плагин. Он позволяет запустить браузер, изменить его отпечаток, а также поддерживает соединение по CDP. Поэтому его можно использовать с любой библиотекой автоматизации, которая может подключаться через CDP.

    • Универсальный плагин. Плагин, который работает для любого фреймворка автоматизации(browser-with-fingerprints). Доступен здесь.

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

    Читать дальше


    Ограничения.

    • Плагины все еще находятся в стадии бета-тестирования, это значит, что могут быть баги, в том числе критические.
    • Прямо сейчас есть ошибка с ipv6 прокси. Мы работаем над этим.
    • В настоящее время поддерживается только javascript.

    Разработкой занимается @Oyasumi-Punpun

  • @support Мне кажется описание может ввести в заблуждение, потому что это автоматизация того же самого БАС, только посредством CDP . Под капотом то все также крутится БАС, точнее даже скрипт на БАС и на linux все это дело не заведется, как могут подумать по описанию, написано же что это просто плагин. Я без наезда, просто потом вам же начнут писать удивленные клиенты )

  • Ничего не понятно, но очень интересно)
    Поправьте если я неправильно понял, если я использую этот плагин, то аутентичность браузера вырастет по сравнению с текущим методом подмены отпечатка?

  • @saanneekk yes basically

  • @saanneekk said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    Ничего не понятно, но очень интересно)
    Поправьте если я неправильно понял, если я использую этот плагин, то аутентичность браузера вырастет по сравнению с текущим методом подмены отпечатка?

    Нет, это просто возможность использовать bas в скриптах написанных на puppeteer и тп

  • @UserTrue автоматизация автоматизации, что-то новое..

  • @saanneekk said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    @UserTrue автоматизация автоматизации, что-то новое..

    Да почему автоматизация автоматизации. Просто возможность использовать браузер БАС программно через puppeter и другие аналоги, погуглите что это. Большинство антидетект браузеров имеет аналогичную возможность.

    Осталось добавить возможность использованть интерфейс БАС с другими антидетектами xDD

  • @UserTrue Лучше бы связали BAS c реальным браузером на пк, вот это был бы подарок.

  • @Dodok said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    @UserTrue Лучше бы связали BAS c реальным браузером на пк, вот это был бы подарок.

    Тут надо быть острожным. Например при скачивании installer хрома, он вшивает ID браузера внутрь, т.е постоянно надо качать новый с сайта, если хочешь покрутить много потоков или даже если 1 поток, но меняя профиль.

    А еще он умеет собирать мимо JS данные о ПК.

  • @Dodok said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    @UserTrue Лучше бы связали BAS c реальным браузером на пк, вот это был бы подарок.

    Если ты хочешь автоматизировать обычный Chrome, то инструментов для этого море. Я предпочитаю selenium, но это дело вкуса, можешь использовать и что-то другое.
    Можно программировать на огромной пачке языков вместе с selenium, включая JavaScript, который используется в BAS.

  • @support said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    Ограничения.

    Плагины все еще находятся в стадии бета-тестирования, это значит, что могут быть баги, в том числе критические.
    Прямо сейчас есть ошибка с ipv6 прокси. Мы работаем над этим.
    В настоящее время поддерживается только javascript.

    Есть планы по поддержке других языков, например Python + selenium?

  • Прикольно, протестил и это даже работает. https://github.com/CheshireCaat/selenium-with-fingerprints
    Очень рад первым шагам овнеров продукта к "настоящей" автоматизации, хорошее начало положено!
    Пойду с радости тяпну что-нибудь 😄.

    // Import dependencies:
    require('chromedriver');
    const {plugin} = require('selenium-with-fingerprints');
    const fs = require('fs');
    const {promisify} = require('util');
    const writeFileAsync = promisify(fs.writeFile);
    
    // Main function:
    (async () => {
        // Get a fingerprint from the server:
        const fingerprint = await plugin.fetch('', {
            tags: ['Microsoft Windows', 'Chrome'],
        });
    
        // Apply fingerprint:
        plugin.useFingerprint(fingerprint);
    
        // Launch the browser instance:
        const driver = await plugin.launch();
    
        // Maximize the window:
        await driver.manage().window().maximize();
    
        // Navigate to the website:
        await driver.get('https://google.com');
    
        // Take a screenshot:
        const screenshot = await driver.takeScreenshot();
    
        // Save the screenshot to a file:
        await writeFileAsync('screenshot.png', screenshot, 'base64');
    
        // Print the browser viewport size:
        console.log(
            'Viewport:',
            await driver.executeScript(() => ({
                deviceScaleFactor: window.devicePixelRatio,
                width: document.documentElement.clientWidth,
                height: document.documentElement.clientHeight,
            }))
        );
    
        // Print the current URL:
        console.log(
            'CurrentUrl:',
            await driver.getCurrentUrl()
        );
    
        // Read cookies and write to file:
        const cookies = await driver.manage().getCookies();
        await writeFileAsync('cookies.json', JSON.stringify(cookies));
    
        // Quit the browser:
        await driver.quit();
    })();
    
  • @sergerdn ага, только еще не забудь хак поставить, чтоб не светить что веб драйвер используешь ...

  • @Bigma said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    @sergerdn ага, только еще не забудь хак поставить, чтоб не светить что веб драйвер используешь ...

    И этого мало будет

  • @Bigma said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    @sergerdn ага, только еще не забудь хак поставить, чтоб не светить что веб драйвер используешь ...

    @FastSpace said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    @Bigma said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    @sergerdn ага, только еще не забудь хак поставить, чтоб не светить что веб драйвер используешь ...

    И этого мало будет

    Ребята, вы вообще о чем в контексте темы топика? Кто-нибудь из вас смотрел исходный код библиотеки https://github.com/CheshireCaat/selenium-with-fingerprints ради минимального понимания как это работает? Ну или, хотя бы, запускал пару примеров оттуда? Ну или, хотя бы, просто смотрел их?

    screenshot.png

    {
      "detectorsResults": {
        "detectAppVersion": {
          "bot": false
        },
        "detectDocumentAttributes": {
          "bot": false
        },
        "detectDocumentProperties": {
          "bot": false
        },
        "detectErrorTrace": {
          "bot": false
        },
        "detectEvalLengthInconsistency": {
          "bot": false
        },
        "detectFunctionBind": {
          "bot": false
        },
        "detectLanguagesLengthInconsistency": {
          "bot": false
        },
        "detectNotificationPermissions": {
          "bot": false
        },
        "detectPluginsArray": {
          "bot": false
        },
        "detectPluginsLengthInconsistency": {
          "bot": false
        },
        "detectProcess": {
          "bot": false
        },
        "detectUserAgent": {
          "bot": false
        },
        "detectWebDriver": {
          "bot": false
        },
        "detectWebGL": {
          "bot": false
        },
        "detectWindowExternal": {
          "bot": false
        },
        "detectWindowProperties": {
          "bot": false
        },
        "detectWindowSize": {
          "bot": false
        },
        "detectMimeTypesConsistent": {
          "bot": false
        },
        "detectProductSub": {
          "bot": false
        }
      }
    }
    
    // Import dependencies:
    require('chromedriver');
    const {plugin} = require('selenium-with-fingerprints');
    const fs = require('fs');
    const {promisify} = require('util');
    const writeFileAsync = promisify(fs.writeFile);
    
    
    // Main function:
    (async () => {
    
        // Get a fingerprint from the server:
        const fingerprint = await plugin.fetch('', {
            tags: ['Microsoft Windows', 'Chrome'],
        });
    
        // Apply fingerprint:
        plugin.useFingerprint(fingerprint);
    
        // Launch the browser instance:
        const driver = await plugin.launch();
    
        // Maximize the window:
        await driver.manage().window().maximize();
    
        // Navigate to the website:
        await driver.get('https://fingerprintjs.github.io/BotD/main/');
    
      // Wait for the page to load:
        await driver.wait(async () => {
            const pageState = await driver.executeScript('return document.readyState');
            return pageState === 'complete';
        }, 10000);
        
    
        // Take a screenshot:
        const screenshot = await driver.takeScreenshot();
    
        // Save the screenshot to a file:
        await writeFileAsync('screenshot.png', screenshot, 'base64');
    
        // Quit the browser:
        await driver.quit();
    })();
    
  • Код


    При запуске ошибка

    node:events:491
    throw er; // Unhandled 'error' event
    ^

    Error: listen EADDRINUSE: address already in use 127.0.0.1:29815

  • Сегодня опять переливал код, изменения подьехали :)

    try{a.WebAppWindowControlsOverlay="object"==typeof navigator.windowControlsOverlay}catch(a){}
    

    Эту утечку походу с этим свойством разработчик пофиксит.

  • @inotoxic said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    Код


    При запуске ошибка

    node:events:491
    throw er; // Unhandled 'error' event
    ^

    Error: listen EADDRINUSE: address already in use 127.0.0.1:29815

    Закрой все, что связано с BAS. Если что - на GitHub есть issue. Наверное, правильно писать там.

  • @FastSpace said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    Сегодня опять переливал код, изменения подьехали :)

    try{a.WebAppWindowControlsOverlay="object"==typeof navigator.windowControlsOverlay}catch(a){}
    

    Эту утечку походу с этим свойством разработчик пофиксит.

    Перечитал раз пять твое сообщение, но так и не уловил связи с плагинами автоматизации.

  • @inotoxic said in Плагины для автоматизации FingerprintSwitcher: selenium, puppeteer, playwright, и т. д.:

    Error: listen EADDRINUSE: address already in use 127.0.0.1:29815

    говорят, что fixed, нужно обновить библиотеку:

     npm install selenium-with-fingerprints@latest