Добрый день! Уже задавал два вопроса по одному и тому же делу, получил на них ответ и подумал, что дальше справлюсь сам, но не тут то было, все равно упираюсь в некие тупики. Прошу снова помочь)
В общем, нужно парсить данные с
сайта по автозапчастям. Там есть поиск сразу по нескольким артикулам, но он доступен только после авторизации. Пытаюсь написать 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, '...') пока подставляю вручную — авторизуюсь на сайте через браузер, отслеживаю запрос во вкладке "Сеть" и беру оттуда эти данные.
Как-то можно этот процесс автоматизировать? А то делать так каждый раз, когда заканчивается сессия, не дело. Форма авторизации отправляет запрос на страницу:
/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, может это как-то поможет?