Как подключиться по CURL к админке Битрикса?

Здравствуйте, коллеги!

С Curl`ом вроде немало работал, но вот никак не могу зайти через cURL в админку Битрикса. Точнее на стартовую страницу админки (/bitrix/admin) захожу, а вот если хочу получить, к примеру, данные панели производительности (/bitrix/admin/perfmon_panel.php), то пшик. Что делаю не так?

$site_url = 'http://site.ru/bitrix/admin/perfmon_panel.php'; //URL панели производительности в админке  сайта на Битриксе
$post_var = 'AUTH_FORM=Y&TYPE=AUTH&USER_LOGIN=admin&USER_PASSWORD=qwerty123&Login=&USER_REMEMBER=Y&captcha_sid=&captcha_word=bca897af2d782ba894633b851ak35ff3&sessid=bda897af5d782ba194643b851af353f3'; //эти данные собираются путём парсинга формы авторизации, для простоты поместил их в одну переменную

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); //куда сохранять cookie
curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); //откуда берем cookie
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   // возвращаем веб-страницу 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // следуем за редиректами
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_HEADER, false); //не выводим заголовки
curl_setopt($ch, CURLOPT_URL, $site_url); //URL сайта на Битриксе
curl_setopt($ch, CURLOPT_POST, true); //используем POST-запрос
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_var); //строка с POST-переменными (значения присвоены выше)

$text = curl_exec($ch); 
echo($text);
curl_close($ch);


В ответ на странице не отображается ничего, кроме кода:

<script type="text/javascript">window.onload=function(){top.BX.AUTHAGENT.setAuthResult(false);};</script>
  • Вопрос задан
  • 3790 просмотров
Решения вопроса 2
glebovgin
@glebovgin
Full Stack Web Developer
День добрый.

Вы говорите, что успешно заходите на "стартовую страницу админки", это значит, что вы уже авторизовались без проблем. Отсюда вопрос - а зачем вы POST запрос отправляете тогда?
Если авторизовались, то делайте обычный GET-запрос по нужному урл и дальше уже надо смотреть.

Если же по стартовой страницей админки вы имеете ввиду страницу авторизации (что странно), то вы POST-запрос должны отправлять на /bitrix/admin/, а не на bitrix/admin/perfmon_panel.php.
Ответ написан
@yury_alikaev Автор вопроса
Опубликую возможное рабочее решение, вдруг кому пригодится:

/* Делаем POST-запрос к стартовой странице админки, чтобы авторизоваться */

$site_url = 'http://site.ru/bitrix/admin'; //URL стартовой страницы админки Битрикса
$post_var = 'AUTH_FORM=Y&TYPE=AUTH&USER_LOGIN=admin&USER_PASSWORD=qwerty123&Login=&USER_REMEMBER=Y&captcha_sid=&captcha_word=bca897af2d782ba894633b851ak35ff3&sessid=bda897af5d782ba194643b851af353f3'; //эти данные собираются путём парсинга формы авторизации, для простоты поместил их в одну переменную

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); //куда сохранять cookie
curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); //откуда берем cookie
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   // возвращаем веб-страницу 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // следуем за редиректами
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_HEADER, false); //не выводим заголовки
curl_setopt($ch, CURLOPT_URL, $site_url); //URL сайта на Битриксе
curl_setopt($ch, CURLOPT_POST, true); //используем POST-запрос
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_var); //строка с POST-переменными (значения присвоены выше)

$text = curl_exec($ch); 

curl_close($ch);

/* Далее делаем GET-запрос к другим страницам админки, например, к монитору производительности */

curl_setopt($ch, CURLOPT_URL, 'http://site.ru/bitrix/admin/perfmon_panel.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$text2 = curl_exec($ch);
//Выводим содержимое полученной страницы на экран, либо же делаем с этим что хотим
echo($text2);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы