Задать вопрос
@TANK_IST

Как правильно написать http запрос на cURL php?

Мне нужно залогиниться на сайте с помощью скрипта php.
Использую для запросов cURL.

Запрос составил с помощью плагина для хрома - Advanced REST client
URL - https://www.yell.ru/moscow/
Headers
Set-Cookie: PHPSESSID=j0ljhjf6cpsdk3sgoceil433f7; path=/; domain=.yell.ru, browserId=9yN9xPY97qxkZU5y4Nx7hjQR7MxihD; path=/; domain=.yell.ru, _identity=%5B1470002%2C%226pDBXod5e1A1V4BfDr6iKkh0ryMvxIxy%22%2C2592000%5D; expires=Wed, 03-May-2017 23:42:50 GMT; Max-Age=2592000; path=/; domain=.yell.ru; HttpOnly, lastLoggedInUserId=1470002; path=/; domain=.yell.ru; HttpOnly, isLoggedIn=1; path=/; domain=.yell.ru; HttpOnly
Host: www.yell.ru
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: https://www.yell.ru/moscow/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: ru,uk;q=0.8,en-US;q=0.6,en;q=0.4

И запрос происходит отлично, на сайт входит под моим логином. Есть строка <a href="/users/1470002/">Профиль</a>

Но когда создаю запрос на php
$ci = curl_init('https://www.yell.ru/moscow/');
curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ci, CURLOPT_HEADER, true);
curl_setopt($ci, CURLOPT_HTTPHEADER, [
	'Set-Cookie: PHPSESSID=j0ljhjf6cpsdk3sgoceil433f7; path=/; domain=.yell.ru, browserId=9yN9xPY97qxkZU5y4Nx7hjQR7MxihD; path=/; domain=.yell.ru, _identity=%5B1470002%2C%226pDBXod5e1A1V4BfDr6iKkh0ryMvxIxy%22%2C2592000%5D; expires=Wed, 03-May-2017 23:42:50 GMT; Max-Age=2592000; path=/; domain=.yell.ru; HttpOnly, lastLoggedInUserId=1470002; path=/; domain=.yell.ru; HttpOnly, isLoggedIn=1; path=/; domain=.yell.ru; HttpOnly',
	'Host: www.yell.ru',
	'Connection: keep-alive',
	'Pragma: no-cache',
	'Cache-Control: no-cache',
	'Upgrade-Insecure-Requests: 1',
	'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
	'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
	'Referer: https://www.yell.ru/moscow/',
	'Accept-Encoding: gzip, deflate, sdch, br',
	'Accept-Language: ru,uk;q=0.8,en-US;q=0.6,en;q=0.4'
	]);
curl_setopt($ci, CURLOPT_ENCODING , "gzip, deflate");
curl_setopt($ci, CURLINFO_HEADER_OUT, true);
curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, false);
$product = curl_exec($ci);
curl_close($ci);

die($product);

то на сайт не входит.

Целую ночь мучаюсь. В чем может быть проблема?
  • Вопрос задан
  • 722 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
piromanlynx
@piromanlynx
Системный администратор в Perfect Solutions
Потому что в Вашем запросе указаны некоторые заголовки ответа, вместо заголовков запроса. В их числе: Set-Cookie указывается в запросе вот так:
Cookie: PHPSESSID=j0ljhjf6cpsdk3sgoceil433f7; browserId=9yN9xPY97qxkZU5y4Nx7hjQR7MxihD; _identity=%5B1470002%2C%226pDBXod5e1A1V4BfDr6iKkh0ryMvxIxy%22%2C2592000%5D;  lastLoggedInUserId=1470002; isLoggedIn=1;

В Advanced Rest API оно работает, потому что он просто передает Cookie от вашего браузера, ввиду того что в запросе заголовок Cookie отсутствует.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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