# Как это работает

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

# API

Мы разработали наш API таким образом, чтобы вы могли получить доступ ко всем своим ресурсам (кластерам, профилям, группам). и т. д.), управляйте и настраивайте их по своему желанию и в соответствии с вашим вариантом использования:

  • Список групп и профилей, а также пользователей, закладок, тегов и т.д.
  • Создавайте новые профили, группы и другие ресурсы, такие как категории и расширения.
  • Полностью настраивайте свои профили, включая их отпечатки пальцев.
  • Импорт и экспорт файлов cookie профиля.
  • Скачайти и загрузите папки профиля на случай, если вы захотите изменить его содержимое (например, историю или пароли).

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

# Справочник API

Вы можете найти справочную документацию по API, щелкнув ссылку «Справочник API» в верхней панели или используя эту ссылку.
Некоторые из этих конечных точек будут описаны далее (особенно в отношении запуска профиля и файлов cookie), поэтому: если вы уже знакомы с автоматизацией браузера, например используя Selenium, вы можете пропустить следующий раздел и перейдите к:

Запуск профилей
../launch/intro

# Автоматизация браузера

Мы предоставляем возможность автоматизировать ваш процесс использования браузера с помощью Selenium. По сути, он позволяет вам программно управлять браузером, например:

  • Переходите по ссылкам
  • Прочитать содержимое страницы
  • Нажимайте кнопки
  • Введите текст в поля ввода
  • Выполнить яваскрипт

Более того, мы разработали систему таким образом, чтобы у вас был доступ к ChromeDriver (а не RemoteWebDriver), и, кроме того, у вас есть все возможности Chrome DevTools Protocol, это означает, что вы можете:

  • Импортировать и экспортировать файлы cookie «на лету» во время просмотра.
  • Добавлять расширения из файлов .crx.
  • Перехватываь сетевые запросы
  • Вставлять JavaScript при каждом создании кадра.
  • И другие полезные возможности CDP

# Основы

Чтобы начать с автоматизацией браузера, убедитесь, что у вас есть бинарные файлы chrome и chromedriver. Если вы установили Surfinite App, вы найдете их в:

  • для Windows: C:\Users\<имя пользователя>\.surfinite\browser\
  • для macOS: /Users/<имя пользователя>/.surfinite/browser/Chromium.app/Contents/MacOS/
  • для Linux: /home/<имя пользователя>/.surfinite/browser/

Вот краткий пример того, как запустить профиль:

val profileId: String = "my_profile_id"
val apiKey: String = "MY_API_KEY"

// Get permission to start the profile
// and browser key (needed for browser launch)
val browserKey: String = startProfile(
    profileId = profileId,
    apiKey = apiKey
)

// Download profile folder
val profileDirPath = "/home/myuser/profiles/$profileId"
downloadProfileFolder(
    profileId = profileId,
    profileDirPath = profileDirPath,
    apiKey = apiKey
)

val options = ChromeOptions()

val chromePath = "/home/myuser/.surfinite/browser/chrome"
val chromeDriverPath = "/home/myuser/.surfinite/browser/chromedriver"

// Set Chrome binary path
options.setBinary(chromePath)
// Set Chromedriver binary path
System.setProperty("webdriver.chrome.driver", chromeDriverPath)

// Set options to launch the profile
options.addArguments("--user-data-dir=$profileDirPath")
options.addArguments("--profile-id=$profileId")
options.addArguments("--browser-key=$browserKey")

val driver = ChromeDriver(options)

// Use the driver
driver["https://example.com/"]

Короче говоря, чтобы запустить браузер для автоматизации, вы должны установить пути chrome и chromedriver в ChromeOptions`. объект, а затем инициализировать ChromeDriver.

# Элементы управления

Обычно процесс автоматизации включает в себя несколько этапов. Во-первых, после того, как вы определили страницу, которую хотите автоматизировать и придумали порядок ввода и кнопок (в соответствии с вашим алгоритмом), вам нужно будет найти CSS-селекторы соответствующих элементов.

Самый простой способ найти его — использовать инструмент «Инспектор элемента», доступный в каждом веб-браузере. Вот пример идентификация кнопки с идентификатором access-btn:

Вы также можете использовать инструмент «Веб-консоль», чтобы мгновенно проверить свои селекторы, например. набрав document.querySelector('#access-btn').

После того, как вы определили все свои CSS-селекторы, пришло время запрограммировать логику автоматизации. Этот пример откроет веб-сайт Surfinite и нажмите кнопку «Получить доступ»:

// ...

driver["https://surfinite.com"]

// Use the css selector
val gainAccessBtn = driver.findElement(By.id("access-btn"))

// Click the button
gainAccessBtn.click()

Конечно, при использовании Selenium в вашем случае вы столкнетесь с множеством ловушек, начиная от необходимости ждать загрузки DOM на каждой страницн, а селекторы CSS слишком громоздкие и нетривиальные из-за некоторых Selenium CDP. Ошибки оболочки, сложность реализации действий, подобных человеческим (прокрутка и движения мыши), чтобы оставаться незамеченными.

Документация будет содержать несколько советов и рекомендаций, которые помогут вам в вашем путешествии в мир автоматизации, и будет постоянно обновляться. Так что продолжайте читать и следите за обновлениями.