Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как передать куки Curl ? 
V
    Опции темы
DenWPF
Дата 18.2.2011, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Есть сайт, для доступа к нему нужно произвести 2 действия.

зайти на главную site.ru а потом уже на site.ru/catalog.php?i=5

при заходе на первую страницу нужно принять куки.
а на вторую перейти с этими куками. как это сделать? 
и желательно без файла это как то сделать.
PM MAIL   Вверх
Dima 2015
Дата 18.2.2011, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Передать куки - curl_setopt($ch, CURLOPT_COOKIE, $cookies);

Получить куки - это надо прочитать заголовки ответа сервера, ставим  curl_setopt($ch, CURLOPT_HEADER, 1); и парсим ответ. Там будет заголовок set-Cookie, их кстати может быть несколько.
PM MAIL ICQ   Вверх
DenWPF
Дата 18.2.2011, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



это я понимаю, хотелось бы готовое решение.

ну прочитать это наверное регуляркой от  set-Cookie:  до .. кстати а чем заканчивается  ; ?

как заголовок получить?
PM MAIL   Вверх
Dima 2015
Дата 18.2.2011, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Вообще просить код а не совет это не есть хороший тон, на сколько мне известно. По по счастливой случайности я недавно такую штуку писал, так что пользуйтесь...

P.S. У ф-ции wget_curl по-моему не все параметры рабочие, не допилил еще, но думаю будет достаточно.

Код

function wget_curl($url, $return = 'content', $return_type = 'array', $method = 'GET', $cookies = '', $post = '', $form = 0, $agent = 'Firefox', $ajax = 1) {
    $ch = curl_init();
    $headers = array();
    curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);// allow redirects
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); // times out after 10s
    if ($return == 'headers' || $return == 'all') {
        curl_setopt($ch, CURLOPT_HEADER, 1);
    }
    if ($method == 'POST') {
        curl_setopt($ch, CURLOPT_POST, true); // set POST method
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // add POST fields
        if ($form) {
            $headers[] = "Content-Type: application/x-www-form-urlencoded; charset=UTF-8";
            if ($ajax) {
                $headers[] = "X-Requested-With: XMLHttpRequest";
            }
            $headers[] = "Referer: http://vkontakte.ru";
        }
        $headers[] = "Content-length: " . strlen($post);
    }

    if ($agent == 'Firefox') {
        $headers[] = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11";
    } else {
        $headers[] = "User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.63";
    }

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    if ($cookies) {
        curl_setopt($ch, CURLOPT_COOKIE, $cookies);
    }

    // $out .= "Connection: Close\r\n\r\n";
    $result = curl_exec($ch); // run the whole process
    if (!$result) {
        throw new Exception(curl_error($ch));
    }
    // print_r(curl_getinfo($ch, CURLINFO_HEADER_OUT));

    if ($return == 'headers' || $return == 'all') {
        $str_arr = mb_split("\r\n", $result);
        $headers = array();
        $content = array();
        $content_start = false;
        foreach ($str_arr as $str) {
            if (!trim($str) || $content_start) {
                $content_start = true;
            } else {
                $headers[] = $str;
            }
            if ($content_start) {
                $content[] = $str;
            }
        }
        if ($return == 'headers') {
            return $headers;
        } else {
            return array('headers' => $headers, 'content' => $content);
        }
    }
    return $result;
}

function parse_headers($headers_arr) {
    $result = array();
    $result['response'] = $headers_arr[0];
    foreach ($headers_arr as $header) {
        if (strpos($header, ':')) {
            $delimeter_pos = strpos($header, ':');
            if (array_key_exists(substr($header, 0, $delimeter_pos), $result)) {
                if (!is_array($result[substr($header, 0, $delimeter_pos)])) {
                    $result[substr($header, 0, $delimeter_pos)] = array($result[substr($header, 0, $delimeter_pos)], trim(substr($header, $delimeter_pos+1)));
                } else {
                    $result[substr($header, 0, $delimeter_pos)][] = trim(substr($header, $delimeter_pos+1));
                }
            } else {
                $result[substr($header, 0, $delimeter_pos)] = trim(substr($header, $delimeter_pos+1));
            }
        }
    }
    return $result;
}


Это сообщение отредактировал(а) Dima 2015 - 18.2.2011, 21:40
PM MAIL ICQ   Вверх
DenWPF
Дата 18.2.2011, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



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


$page =1;
$ya = 'http://yandex.ru/';
$ch = curl_init ();  
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);// обнуляем куки
curl_setopt ($ch , CURLOPT_URL , $ya);  
curl_setopt ($ch , CURLOPT_USERAGENT , "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7"); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'Z:\\cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'Z:\\cookie.txt');
curl_setopt( $ch, CURLOPT_PROXY, "84.235.6.69:8080");
curl_setopt ($ch , CURLOPT_RETURNTRANSFER , 1 );  
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);  
curl_close($ch);  
echo $data;

$ch = curl_init ();  
$ya = 'http://yandex.ru/yandsearch?p='.$page.'&text='.$keyword.'&lr=10656&rd=0';
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);// обнуляем куки
curl_setopt ($ch , CURLOPT_URL , $ya);  
curl_setopt ($ch , CURLOPT_USERAGENT , "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko/20050919 Firefox/1.0.7"); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'Z:\\cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'Z:\\cookie.txt');
curl_setopt( $ch, CURLOPT_PROXY, "84.235.6.69:8080");
curl_setopt ($ch , CURLOPT_RETURNTRANSFER , 1 );  
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);  
curl_close($ch);  
echo $data;

PM MAIL   Вверх
Dima 2015
Дата 18.2.2011, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Право слово, я отвечал на вопрос. Ни о каких траблах даже не рассказывалось...
PM MAIL ICQ   Вверх
DenWPF
Дата 18.2.2011, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



да, я только сейчас заметил что это из-за прокси
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.