@9StarRu

Как получить реферальные cookies при выполнении cURL?

Здравствуйте!

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

Есть два скрипта, расположены скрипты на разных доменах и серверах.

Первый скрипт, можно сказать, что это сайт, отправляет post запрос второму скрипту - обработчику.
Post запрос содержит в себе реферальный url адрес (может быть без редиректа, может быть с редиректом а может иметь сразу несколько редиректов).

Обработчик вытягивает сам сайт по присланному ему post url и возвращает код сайта первому скрипту.

Пример, на сайте вася.ру (первый скрипт), я хочу открыть сайт reg.ru (по реферальной ссылке) и при этом сохранить реферальные cookies reg.ru в браузер посетителя вася.ру

Источником и приемником результатов post запроса выступает один сайт-скрипт,
обработчик обрабатывает присланный post запрос и возвращает его источнику в виде кода сайта переданного ранее ему в post запросе "url".

Получается, что обработчик возвращает код итогового сайта с cookies данного сайта и при этом пропускает реферальные cookies.
Получается, что реф cookies теряются на стороне обработчика.

Сейчас cURLом напрямую открыл реферальный сайт из одного скрипта, даже он реферальные cookies не сохранил, хотя работал напрямую без пост запроса к обработчику :(

Запутался и не могу сообразить, что делаю не так.

Пожалуйста, посмотрите мой код, направьте в нужном направлении. Буду благодарен если покажите подобный рабочий код.
Я действительно замучился с этой задачей. Нашел на fl.ru двух исполнителей но и они не смогли выполнить поставленную задачу :(

Скрипты у меня без проблем бегаю по редиректам, сохраняют куки в файл а толку от этого ноль.

1 скрипт - сайт который отправляет и получает результат post запроса (он и должен получить реферальную cookies):
<?php 
// URL скрипта обработчика
$login_url = 'http://сайт.ru/inc.php';

// параметры для отправки запроса
$post_data = array(
'url' => 'http://reflink.ru/id555',

'cookielength' => '-1',
'hash_passwrd' => ''
);

// создание объекта curl
$ch = curl_init();

// используем User Agent браузера
$user_agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

// задаем URL
curl_setopt($ch, CURLOPT_URL, $login_url );

// указываем что это POST запрос
curl_setopt($ch, CURLOPT_POST, 1 );

// задаем параметры запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

// указываем, чтобы нам вернулось содержимое после запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

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


// выполняем запрос
$postResult = curl_exec($ch);


curl_close($ch);

echo $postResult;

?>


2 скрипт - обработчик присланного post url, он возвращает данные первому скрипту, должен вернуть и реферальные cookies
<?php 

$url = $_POST["url"];


// инициализация сеанса 
$ch = curl_init(); 

// используем User Agent браузера
$user_agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

// установка URL и других необходимых параметров 
curl_setopt($ch, CURLOPT_URL, $url); 

// Имитируем классический браузер и сохраняем COOKIES
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

//TRUE для принудительного использования нового соединения вместо закэшированного.
curl_setopt($ch, CURLOPT_FRESH_CONNECT, false); 

// в случае необходимости, следовать по перенаправлени¤м
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// устанавливаем максимальное время конекта 5 секунд
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

// Опция указывает, что результат будет записан в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// загрузка страницы и выдача её браузеру 
$page_source = curl_exec($ch);

// Получаю итоговый url после всех редиректов 
$last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);


echo $page_source;

//print_r (curl_getinfo($ch));

// завершение сеанса и освобождение ресурсов 
curl_close($ch); 
?>


Спасибо!
  • Вопрос задан
  • 744 просмотра
Пригласить эксперта
Ответы на вопрос 1
@aol-nnov
> 'cookie.txt'

ты правда имеешь права писать в текущий каталог исполнения скрипта? укажи абсолютный путь. например, '/tmp/cookie.txt'
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы