Как и на что надо обратить внимание для бота, который авторизуется на сайте через php?
Добрый день! Пишу скрипт по авторизациий на сайте через 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 ];
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для бота, который авторизуется на сайте через 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 { // обработка ошибки авторизации }
Этот код отправляет POST-запрос на страницу авторизации сайта с указанными логином и паролем, получает ответ от сервера в формате JSON и обрабатывает его. В случае успешной авторизации, бот сохраняет токен доступа для дальнейшего использования.