• МАКС: М.Базаров
  • Телеграм: М.Базаров
  • E-mail: mihail@bazarow.ru

Cкрипт php для парсинга страниц сайта на Битрикс где нужно авторизоваться ввести логин и пароль

Вопрос задан: 29 мая 2026 в 10:00 | Просмотров: 24 Использованные MCP инструменты: MCP не использовался

Задайте свой вопрос — Работает AI в связке с MCP сервером. Перепроверяйте важную информацию.

Специализируюсь на 1С-Битрикс. Ваш вопрос — написание PHP-скрипта для парсинга страниц сайта на Битрикс с авторизацией — относится к платформе. Разберу возможные решения.

Способы авторизации в 1С-Битрикс для парсинга

Есть несколько подходов в зависимости от того, какой тип пользователя вам нужен (администратор или обычный пользователь) и где выполняется скрипт (на самом сервере или удалённо).

1. Если скрипт выполняется на том же сервере (на сервере Битрикс)

Лучший способ — авторизация через ядро Битрикс с помощью CHTTPRequest или CUser::Login:

<?php
// Подключаем ядро Битрикс
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');

use Bitrix\Main\Context;
use Bitrix\Main\Authentication\Authentication;
use Bitrix\Main\UserTable;

// Вариант 1: Через CUser::Login
global $USER;
$authResult = $USER->Login('логин', 'пароль');
if ($authResult === true) {
    echo "Авторизован как: " . $USER->GetLogin();
    // Теперь можно парсить страницы
    $html = file_get_contents('http://yoursite.ru/some-page/');
} else {
    echo "Ошибка авторизации";
}
?>

Но важно: если скрипт запускается через CLI (консоль), сессия не создаётся автоматически. Для CLI нужно дополнительно:

<?php
$_SERVER["DOCUMENT_ROOT"] = realpath(__DIR__ . "/../.."); // подставьте свой путь
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');

// Инициализация сессии для CLI
\Bitrix\Main\Application::getInstance()->initializeContext();
\Bitrix\Main\Loader::includeModule('main');

global $USER;
$USER->Authorize(1); // ID пользователя (например, 1 — администратор)
// или
$USER->Login('логин', 'пароль');
?>

2. Если скрипт выполняется удалённо (cURL — классический парсинг)

Используйте cURL с сохранением сессионной cookie. Битрикс использует стандартную PHP-сессию (обычно PHPSESSID).

<?php
$login = 'user@example.com';
$password = 'password';
$siteUrl = 'https://yoursite.ru';

$cookieFile = __DIR__ . '/cookie.txt';

// Шаг 1: Получаем страницу логина и CSRF-токен (если требуется)
$ch = curl_init($siteUrl . '/auth/');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_COOKIEJAR => $cookieFile,
    CURLOPT_COOKIEFILE => $cookieFile,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
]);
$html = curl_exec($ch);

// Если в форме есть CSRF (sessid), извлекаем его
preg_match('/name="sessid" value="([^"]+)"/', $html, $matches);
$sessid = $matches[1] ?? '';

// Шаг 2: POST-запрос на авторизацию
$postData = [
    'USER_LOGIN' => $login,
    'USER_PASSWORD' => $password,
    'AUTH_FORM' => 'Y',
    'TYPE' => 'AUTH',
    'sessid' => $sessid,
];

curl_setopt_array($ch, [
    CURLOPT_URL => $siteUrl . '/auth/?login=yes',
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query($postData),
]);
$result = curl_exec($ch);

// Проверяем, что авторизация прошла (нет формы логина на странице после редиректа)
if (strpos($result, 'AUTH_FORM') === false) {
    // Шаг 3: Парсим нужные страницы
    curl_setopt($ch, CURLOPT_URL, $siteUrl . '/some-protected-page/');
    curl_setopt($ch, CURLOPT_POST, false);
    $pageContent = curl_exec($ch);
    echo $pageContent;
} else {
    echo "Ошибка: Неверный логин/пароль";
}

curl_close($ch);
?>

3. Если на сайте включена двухфакторная аутентификация

Стандартный cURL не подойдёт — нужно либо отключать 2FA для тестового пользователя, либо использовать OAuth через REST API Битрикс.

4. Через REST API (рекомендуемый способ для парсинга)

Если это ваш сайт, проще и надёжнее создать веб-сервис с авторизацией по OAuth-токену:

<?php
// Получаем OAuth-токен через админку: Настройки → REST API
$token = 'your_oauth_token';
$siteUrl = 'https://yoursite.ru';

$ch = curl_init($siteUrl . '/rest/1/user.current.json');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token],
    CURLOPT_SSL_VERIFYPEER => false,
]);
$response = curl_exec($ch);
curl_close($ch);

// Если успешно — используйте REST-методы для получения данных
echo $response;
?>

REST API не требует сессий, cookie и поддерживает все CRUD-операции.


Важные нюансы 1С-Битрикс

  • sessid — в Битрикс обязательная проверка CSRF-токена (bitrix_sessid()). Без него POST-логин не сработает.
  • Cookie с доменом — убедитесь, что cookie записываются корректно. В Битрикс путь к cookie — обычно /.
  • Капча — если на сайте включена капча при множественных неудачных попытках, cURL-метод не сработает.
  • Тип авторизации — уточните URL логина. Стандартный: /auth/?login=yes. В компоненте system.auth.form — поля USER_LOGIN и USER_PASSWORD.

Что из этого подходит под ваш сценарий?

Уточните, пожалуйста:

  • Скрипт выполняется на сервере Битрикс или удалённо (через HTTP)?
  • Кого нужно авторизовать — администратора или обычного пользователя?
  • Есть ли на сайте двухфакторная аутентификация или капча?

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