Как и на что надо обратить внимание для бота, который авторизуется на сайте через php?

Ссылка скопирована
PHP
1 ответ

Добрый день! Пишу скрипт по авторизациий на сайте через curl.
Авторизация проходит методом POST. Авторизация проходит успешно. Но вот после отправки данных сервер перебрасывает на другую страцицу методом GET, и меня выкидывает снова на авторизацию.
Я так понимаю дело в куках и header.
Нужно имитировать полностью работу через браузер.
Подскажите на что нужно обратить внимание в первую очередь.

Дополнительно:

curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');

curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');

При каждом запросе.
И возможно нужно будет передавать referer

  • alekssamos А что делать если в ответе заголовка нет куков? Отправляю через post , в овтете куков нет.
    HTTP/1.1 200 OK Server: nginx Date: Sun, 23 Jul 2023 08:29:58 GMT Content-Type: text/javascript; charset=utf-8 Connection: keep-alive X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none Referrer-Policy: strict-origin-when-cross-origin X-Yatri-Language: en X-Yatri-Country: ca ETag: W/"ac55941fb4c4e86f3c09801981b42932" Cache-Control: max-age=0, private, must-revalidate X-Request-Id: ec34a81f-7440-4455-b6d5-7f55197d0856 X-Runtime: 0.103534 Transfer-Encoding: chunked

    HTTP/1.1 200 OK Server: nginx Date: Sun, 23 Jul 2023 08:29:58 GMT Content-Type: text/javascript; charset=utf-8 Connection: keep-alive X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none Referrer-Policy: strict-origin-when-cross-origin X-Yatri-Language: en X-Yatri-Country: ca ETag: W/"ac55941fb4c4e86f3c09801981b42932" Cache-Control: max-age=0, private, must-revalidate X-Request-Id: ec34a81f-7440-4455-b6d5-7f55197d0856 X-Runtime: 0.103534 Transfer-Encoding: chunked

    Хотя когда я авторизуюсь через браузер куки видны после отправки данных post.

    curl options: $options=     [         CURLOPT_RETURNTRANSFER  =>true,         CURLOPT_FOLLOWLOCATION  =>true,         CURLOPT_SSL_VERIFYPEER  =>false,          CURLOPT_COOKIESESSION=> true,         CURLOPT_COOKIEFILE      =>'cookie.txt',         CURLOPT_COOKIEJAR       =>'cookie.txt',         CURLINFO_HEADER_OUT     =>true ];

    curl options: $options= [ CURLOPT_RETURNTRANSFER =>true, CURLOPT_FOLLOWLOCATION =>true, CURLOPT_SSL_VERIFYPEER =>false, CURLOPT_COOKIESESSION=> true, CURLOPT_COOKIEFILE =>'cookie.txt', CURLOPT_COOKIEJAR =>'cookie.txt', CURLINFO_HEADER_OUT =>true ];

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Павел Админов Ответ

Для бота, который авторизуется на сайте через PHP, необходимо обратить внимание на несколько ключевых моментов:

1. Использование правильных заголовков и параметров запроса. При отправке запроса на авторизацию, бот должен передавать необходимые данные, такие как логин и пароль, в соответствующих полях запроса.

2. Обработка ответа от сервера. После отправки запроса на авторизацию, бот должен обработать ответ от сервера и проверить, прошла ли авторизация успешно. В случае успешной авторизации, сервер обычно возвращает токен доступа или другую информацию, которую необходимо сохранить для последующих запросов.

3. Управление сессией. Для того чтобы бот мог взаимодействовать с сайтом после авторизации, необходимо правильно управлять сессией. Это включает в себя сохранение и передачу сессионной информации между запросами.

Пример кода на PHP для авторизации бота на сайте может выглядеть следующим образом:

$username = 'your_username';
$password = 'your_password';
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com/login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('username' => $username, 'password' => $password)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
$response = curl_exec($ch);
curl_close($ch);
 
$data = json_decode($response, true);
 
if ($data['success']) {
    $token = $data['token'];
    // сохранение токена доступа для последующих запросов
} else {
    // обработка ошибки авторизации
}

$username = 'your_username'; $password = 'your_password'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://example.com/login'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('username' => $username, 'password' => $password))); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); if ($data['success']) { $token = $data['token']; // сохранение токена доступа для последующих запросов } else { // обработка ошибки авторизации }

Этот код отправляет POST-запрос на страницу авторизации сайта с указанными логином и паролем, получает ответ от сервера в формате JSON и обрабатывает его. В случае успешной авторизации, бот сохраняет токен доступа для дальнейшего использования.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно