Nikkorfed
@Nikkorfed
Full-Stack JavaScript Developer

Как авторизоваться при помощи CURL на сайте с ASP.NET?

Добрый день! Уже задавал два вопроса по одному и тому же делу, получил на них ответ и подумал, что дальше справлюсь сам, но не тут то было, все равно упираюсь в некие тупики. Прошу снова помочь)

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

Обычного функционала Simple HTML DOM для этого, конечно же не хватает. Понял, что надо использовать cURL, и написал такой код:
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://parts.major-auto.ru/SearchNew/ByList');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, 'ASP.NET_SessionId=abcdefghij12345677890...; .ASPXAUTH=DSFHJSDFDSG6785DFG78DF6G78DF6G7896D8F9G7D...');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
  'searchElements' => $data,
  'SearchByList' => 'Поиск',
]);

$html = curl_exec($ch);
curl_close($ch);

Данные сессии в curl_setopt($ch, CURLOPT_COOKIE, '...') пока подставляю вручную — авторизуюсь на сайте через браузер, отслеживаю запрос во вкладке "Сеть" и беру оттуда эти данные.
5e033a15c676b138674945.png
Как-то можно этот процесс автоматизировать? А то делать так каждый раз, когда заканчивается сессия, не дело. Форма авторизации отправляет запрос на страницу: /Account/LogOn. Написал вот такой скрипт, чтобы отправлял на неё данные с логином и паролем:
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://parts.major-auto.ru/Account/LogOn');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE,  dirname(__FILE__).'/cookie.txt');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
  'UserName' => '+7(123)456-78-90',
  'Password' => 'password',
  'btnLogOn' => 'Вход',
]);

$html = curl_exec($ch);

echo 'HTTP код ответа сервера: ' . curl_getinfo($ch, CURLINFO_HTTP_CODE) . '<br>';

curl_close($ch);

Но не прокатывает — в ответ от сервера получаю ошибку. Как можно решить проблему? Увидел что в куках фигурируют слова ASP.NET и .ASPXAUTH, может это как-то поможет?
  • Вопрос задан
  • 513 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
В Firefox/Chrome можно получить запросы в формате curl'а: веб разработка > сеть > кликаем по запросу правой кнопкой и выбираем копировать > копировать как curl. ну и на основании этих данных формируем curl запрос в php
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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