Почему сервер не возращает куки?
Добрый день! Пишу авторизацию через curl.
При авторизации через curl методом POST
в ответах от сервера нет куков. В чем может быть причина?
Вот вывод headers от curl
HTTP/1.1 200 OK Server: nginx Date: Sun, 23 Jul 2023 11:36:05 GMT Content-Type: text/javascript; charset=utf-8 Transfer-Encoding: chunked 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: 7c523693-26c9-4346-ba66-01cd6f783cb2 X-Runtime: 0.103947 |
HTTP/1.1 200 OK Server: nginx Date: Sun, 23 Jul 2023 11:36:05 GMT Content-Type: text/javascript; charset=utf-8 Transfer-Encoding: chunked 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: 7c523693-26c9-4346-ba66-01cd6f783cb2 X-Runtime: 0.103947
авторизация проходит успешно но так как нет cookies я не могу перейти на другую страницу , меня перекидывает на авторизацию.
Ответ сервера при авторизации через браузер
Connection: keep-alive sec-ch-ua: "Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114" X-CSRF-Token: /TM7ZGra8EyDF8QKjQWnhUdzE7Sw/TThuIg2lzL9rJucXCOWNR4M/plq7NGKFtpNmTn7oAQ/Mo0C5x5pKDO+5g== sec-ch-ua-mobile: ?0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Accept: */*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript X-Requested-With: XMLHttpRequest sec-ch-ua-platform: "Windows" Origin: https://ais.usvisa-info.com Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: https://ais.usvisa-info.com/en-ca/niv/users/sign_in Accept-Language: en-RU,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,en-US;q=0.6 Cookie: _ga=GA1.2.916421873.1689788844; _gid=GA1.2.1780722031.1690003049; _yatri_session=NlJqV2ZjamhWUUREN3NockZzZkU5L2QybHhiWG9ZdS9aTUR5amVlaFc0T0dNTXBOQk5ISjVtQWxnREJDN3BhNjNGY3JZSFoxUkNCV2pQc3hLa0NqV28ycmNLZkF5OG1HL0xjOEhsVWZTemRUYUlJRStXZ0NRNDVIUldubnc1SHRZQklKUzhicHhIY1F5R01xQklsVTkzQ2RXTEY1akNsUzYrLzE1OTFQbFBLRDZhaDZ6aWNCejhoUFhEeklQWWNhLS1vVHQ0djZTdzJGaFZvczA3S0NGRnVnPT0%3D--e076e9546364b43bf9a9fd0a2e9de93fcc456c00; _gat=1; _ga_W1JNKHTW0Y=GS1.2.1690110527.10.1.1690112415.0.0.0 Accept-Encoding: gzip, deflate Content-Length: 129 |
Connection: keep-alive sec-ch-ua: "Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114" X-CSRF-Token: /TM7ZGra8EyDF8QKjQWnhUdzE7Sw/TThuIg2lzL9rJucXCOWNR4M/plq7NGKFtpNmTn7oAQ/Mo0C5x5pKDO+5g== sec-ch-ua-mobile: ?0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Accept: */*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript X-Requested-With: XMLHttpRequest sec-ch-ua-platform: "Windows" Origin: https://ais.usvisa-info.com Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: https://ais.usvisa-info.com/en-ca/niv/users/sign_in Accept-Language: en-RU,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,en-US;q=0.6 Cookie: _ga=GA1.2.916421873.1689788844; _gid=GA1.2.1780722031.1690003049; _yatri_session=NlJqV2ZjamhWUUREN3NockZzZkU5L2QybHhiWG9ZdS9aTUR5amVlaFc0T0dNTXBOQk5ISjVtQWxnREJDN3BhNjNGY3JZSFoxUkNCV2pQc3hLa0NqV28ycmNLZkF5OG1HL0xjOEhsVWZTemRUYUlJRStXZ0NRNDVIUldubnc1SHRZQklKUzhicHhIY1F5R01xQklsVTkzQ2RXTEY1akNsUzYrLzE1OTFQbFBLRDZhaDZ6aWNCejhoUFhEeklQWWNhLS1vVHQ0djZTdzJGaFZvczA3S0NGRnVnPT0%3D--e076e9546364b43bf9a9fd0a2e9de93fcc456c00; _gat=1; _ga_W1JNKHTW0Y=GS1.2.1690110527.10.1.1690112415.0.0.0 Accept-Encoding: gzip, deflate Content-Length: 129
curl
$options= [ CURLOPT_RETURNTRANSFER =>true, CURLOPT_FOLLOWLOCATION =>true, CURLOPT_SSL_VERIFYPEER =>false, CURLOPT_COOKIEFILE =>'cookie.txt', CURLOPT_COOKIEJAR =>'cookie.txt', CURLOPT_HEADER => true, ]; |
$options= [ CURLOPT_RETURNTRANSFER =>true, CURLOPT_FOLLOWLOCATION =>true, CURLOPT_SSL_VERIFYPEER =>false, CURLOPT_COOKIEFILE =>'cookie.txt', CURLOPT_COOKIEJAR =>'cookie.txt', CURLOPT_HEADER => true, ];
Куки в файл записываются нормально.
Дополнительно:
https://stackoverflow.com/questions/12885538/php-c...
Тут еще про curl_setopt( $curl_handle, CURLOPT_COOKIESESSION, true ); говорят.
Мне кажется вы слишком много кушать! (С) "Ширли-Мырли".
P.S. К сожалению CURL не умеет вписывать доменное имя конкретно в GET-строку HTTP запроса. Защита вполне может оказаться построена на этом. Ну как одна из возможностей.
$headers=[ 'Host: '.$url_host, 'Connection: keep-alive', 'Pragma: no-cache', 'Cache-Control: no-cache', 'sec-ch-ua: "Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"', 'X-CSRF-Token:'.$token, 'sec-ch-ua-mobile: ?0', 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8', 'Accept: */*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript', 'X-Requested-With: XMLHttpRequest', 'sec-ch-ua-platform: "Windows"', 'Sec-Fetch-Site: same-origin', 'Sec-Fetch-Mode: cors', 'Sec-Fetch-Dest: empty', 'Referer:'.$url_ref, 'Accept-Language: en-RU,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,en-US;q=0.6', 'Accept-Encoding: gzip, deflate', ]; |
$headers=[ 'Host: '.$url_host, 'Connection: keep-alive', 'Pragma: no-cache', 'Cache-Control: no-cache', 'sec-ch-ua: "Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"', 'X-CSRF-Token:'.$token, 'sec-ch-ua-mobile: ?0', 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8', 'Accept: */*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript', 'X-Requested-With: XMLHttpRequest', 'sec-ch-ua-platform: "Windows"', 'Sec-Fetch-Site: same-origin', 'Sec-Fetch-Mode: cors', 'Sec-Fetch-Dest: empty', 'Referer:'.$url_ref, 'Accept-Language: en-RU,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,en-US;q=0.6', 'Accept-Encoding: gzip, deflate', ];
А как сервер понимает, что идет Ajax запрос? Мне просто нужно еще данные вытащить.
echo $html;
html код отображается в консоли. Не подскажете, что отвечает за отображение файла?
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true ); $html = curl_exec($curl_handle); |
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true ); $html = curl_exec($curl_handle);
Я что то начал замечать, что сервер на который я логинюсь, через curl, супер стал зависать.
Пример сборки header
$hed=[ 'Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript', 'Accept-Encoding:gzip, deflate, br', 'Accept-Language:', 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 'Connection:keep-alive', 'Content-Length:129', 'Content-Type:application/x-www-form-urlencoded; charset=UTF-8', 'Host:'.$host_url, 'Origin:'.$host_url, 'Referer:'.$auth_url, 'Sec-Ch-Ua:"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"', 'Sec-Ch-Ua-Mobile:?0', 'Sec-Ch-Ua-Platform:"Windows"', 'Sec-Fetch-Dest:empty', 'Sec-Fetch-Mode:cors', 'Sec-Fetch-Site:same-origin', 'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'X-Csrf-Token:'.$token, 'X-Requested-With:XMLHttpRequest', ]; $ch=curl_init(); curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch,CURLOPT_HEADER,true); curl_setopt($ch, CURLOPT_HTTPHEADER,$hed); curl_setopt($ch, CURLOPT_URL, $this->url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_COOKIEFILE ,'logs/cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEJAR ,'logs/cookie.txt'); curl_setopt($ch, CURLOPT_REFERER, $url_reffer); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch,CURLINFO_HEADER_OUT,true); curl_exec($ch); curl_close($ch); |
$hed=[ 'Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript', 'Accept-Encoding:gzip, deflate, br', 'Accept-Language:', 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 'Connection:keep-alive', 'Content-Length:129', 'Content-Type:application/x-www-form-urlencoded; charset=UTF-8', 'Host:'.$host_url, 'Origin:'.$host_url, 'Referer:'.$auth_url, 'Sec-Ch-Ua:"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"', 'Sec-Ch-Ua-Mobile:?0', 'Sec-Ch-Ua-Platform:"Windows"', 'Sec-Fetch-Dest:empty', 'Sec-Fetch-Mode:cors', 'Sec-Fetch-Site:same-origin', 'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'X-Csrf-Token:'.$token, 'X-Requested-With:XMLHttpRequest', ]; $ch=curl_init(); curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch,CURLOPT_HEADER,true); curl_setopt($ch, CURLOPT_HTTPHEADER,$hed); curl_setopt($ch, CURLOPT_URL, $this->url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_COOKIEFILE ,'logs/cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEJAR ,'logs/cookie.txt'); curl_setopt($ch, CURLOPT_REFERER, $url_reffer); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch,CURLINFO_HEADER_OUT,true); curl_exec($ch); curl_close($ch);
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Проблема с отсутствием возврата куки с сервера может быть вызвана несколькими причинами. Ниже приведены несколько возможных причин и их решения:
1. Неправильно установленные параметры куки:
Убедитесь, что параметры куки правильно установлены на сервере. Они должны быть установлены до отправки любого контента или заголовков. Например, чтобы установить куки в PHP, используйте функцию setcookie():
setcookie("cookie_name", "cookie_value", time() + 3600, "/");
Убедитесь, что вы правильно указали путь к файлу ("/"), чтобы куки были доступны на всех страницах сайта.
2. Проблемы с безопасностью:
Некоторые браузеры могут блокировать куки из-за проблем с безопасностью. Убедитесь, что ваш сервер настроен правильно и безопасно. Также убедитесь, что ваш сайт работает через HTTPS, так как некоторые браузеры блокируют куки на незащищенных соединениях.
3. Проблемы с доменом:
Убедитесь, что домен, на котором установлены куки, соответствует текущему домену. Куки могут не возвращаться, если они установлены на одном домене, а запрос отправляется на другой.
4. Проблемы с браузером:
Иногда проблема может быть связана с конкретным браузером или его настройками. Попробуйте проверить работу кук на другом браузере или очистить кэш и файлы cookie в текущем браузере.
Если после проверки всех вышеперечисленных причин проблема с куками все еще остается, попробуйте обратиться к документации вашего сервера или языка программирования для более детальной информации о настройке кук.