Многие разработчики 1С сталкиваются с необходимостью автоматизации действий на сторонних веб-ресурсах, которые не предоставляют открытого API. Использование простых HTTP-запросов часто оказывается недостаточным, так как современные сайты активно используют динамическую подгрузку контента через JavaScript и сложные системы защиты. В данном руководстве мы разберем, как реализовать программное управление браузером, используя мощь Selenium в связке с платформой 1С.
При попытке парсинга сложных сайтов мы часто получаем «пустую болванку» HTML-кода, так как данные загружаются асинхронно через AJAX-запросы уже после инициализации страницы. Кроме того, современные ресурсы (например, системы защиты вроде Cloudflare или DDOS-Guard) требуют выполнения JS-кода для генерации ключей доступа. Обычные HTTPСоединение или WinHTTP эти задачи решить не могут. Именно здесь на помощь приходит полноценная эмуляция браузера.
Для управления браузером из 1С наиболее надежным методом является использование Selenium WebDriver через библиотеки .NET. Поскольку 1С позволяет взаимодействовать с .NET-объектами, мы можем создать связующее звено между платформой и браузером.
Рассмотрим пошагово, как организовать эту работу:
Selenium.WebDriver.ChromeDriver) внутри управляющего класса.Пример инициализации драйвера внутри C#-кода, который может быть вызван из 1С:
public void Initialization_Bot(String Path_PJS)
{
try
{
if (Path_PJS == \"ChromeDriver\")
{
PJS = new ChromeDriver();
}
else
{
PJS = new PhantomJSDriver();
}
}
catch (Exception e)
{
// Логирование ошибок через внешние события 1С
asyncEvent.ExternalEvent(\"BotNET\", \"error\", e.ToString());
}
}
Одной из главных проблем при автоматизации является получение актуального содержимого страницы после того, как JavaScript отработал все свои сценарии. Стандартное получение PageSource часто возвращает исходный код, а не модифицированный. Чтобы получить состояние страницы после выполнения всех скриптов, используйте выполнение JS-кода через драйвер:
var pageSource = (string)driver.ExecuteScript(\"return document.body.outerHTML\");
Этот метод позволяет забрать «живой» HTML, содержащий все сгенерированные данные, которые вы затем можете анализировать средствами 1С или регулярными выражениями.
Не пытайтесь реализовывать логику браузера напрямую в коде 1С. Лучшим подходом будет:
COM-объект или REST API.Headless-режима (без графического интерфейса) для серверной работы, чтобы экономить ресурсы оперативной памяти сервера 1С.Помните о следующих нюансах при внедрении:
eval в JavaScript, если это возможно, так как это несет риски безопасности.Explicit Waits), чтобы ваша обработка не «падала» при медленной загрузке интернет-ресурса.Таким образом, автоматизация через Selenium — это мощный инструмент для решения задач, которые раньше казались невозможными средствами 1С. Главное — выносить сложную логику за пределы платформы, оставляя 1С роль «дирижера» процесса.