Cookie и PHP

Тема в разделе "Как сделать...", создана пользователем DowJones, 15 апр 2012.

  1. DowJones

    DowJones Писатель

    Регистр.:
    11 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Хотелось бы начать с того что я начинающий кодер и многое не ясно пока.
    Ближе к делу:
    Я написал небольшой скриптик на PHP, которые листает страницы сайта и ищет на нем информацию.
    Но я столкнулся с проблемой, на сайте есть страницы, доступ к которым предоставляется, только зарегистрированным пользователям.
    От сюда у меня вопрос, может ли PHP скрипт, подсунуть мои куки сайту?
    Если да, то как это реализовать?
    Если нет, то возможно можно выполнить авторизацию (за место подсовывания печенек сайту)?

    P.S.
    Использую Denwer.

    P.P.S.
    Было бы не полохо, писать как-можно проще и доступнее.
     
  2. Mr.Emm

    Mr.Emm Постоялец

    Регистр.:
    5 май 2008
    Сообщения:
    144
    Симпатии:
    107
     
    DowJones нравится это.
  3. DowJones

    DowJones Писатель

    Регистр.:
    11 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Тоже не совсем понял.
    curl_setopt($ch, CURLOPT_COOKIE, $cook);
    в $cook я указываю что?
    Содержимое?
    Просто сама печенька состоит из 6 полей у меня
    Имя, Содержимое, Узел, Путь, Посылать при, Срок действия истекает


     
  4. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Ну дали веть вектор движения в чем проблема ?
    Или опять токи готовое решение нужно и вы типо по нему все поймете а не поймете так работает и ладно !?

    1) Курим маны по cURL
    2) Пишем маленькую функцию для работы.
    3) Берем тот же хром и смотрим на заголовки при авторизации.
    4) Реализовываем авторизацию
    5) Гуляем по сайту авторизованым.

    Это вам нифиге не file_get_contents c переменными из цикла.

    Функцию примерную я давал уже... поищите в этой ветке... Вроди про юкоз что то было. Там к стати и авторизация идет вам как пример.
    По сути ничего сложного там нет. 1 раз сами сделаете и поймете суть.

    Удачи.

    PS. Непонятно только 1 - почему не почитали просто темы в ветке ? Тут чего только нет. На все что хотите ответ найдете. Просто подозреваю что думать и вникать нет либо времени либо желания. Если нет времени - заказывайте, если нет желания бросайте вы это гиблое дело только время убьете.
     
    DowJones нравится это.
  5. DowJones

    DowJones Писатель

    Регистр.:
    11 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Прочел уже более 10 мануалов по curl
    везде ссылаются на файл cookie.txt
    и ни где не написано точно что там должно быть, исключая очевидное, что там сам кук.
    как записать куки в этот фаил, в каком виде?
    Авторизоваться не получится, стоит капча.
    остается только передача кук.
    Установил плагин cookie manager+ для фокса.
    он отображает куки, и даже копирует их в буфер.
    в таком виде
    Код:
    Host:                сайт.com.ua
    Name:                сайт
    Path:                /
    Content:              228%2F%25%2FDowJones%2F%25%2Fbdb6729e5ad1960цензура4336fdec%2F%25%2F0
    Content raw:          228%2F%25%2FDowJones%2F%25%2Fbdb6729e5ad1960цензура4336fdec%2F%25%2F0
    Expires:              В конце сессии
    Expires raw:          0
    Send for:            Любом типе соединения
    Send for raw:        false
    Created:              Saturday, April 14, 2012 12:12:42 PM
    Created raw:          1334391162280000
    Last accessed:        Sunday, April 15, 2012 2:19:31 AM
    Last accessed raw:    1334441971422000
    HTTP only:            No
    HTTP only raw:        false
    This domain only:    No
    This domain only raw: false
    Policy:              no information available
    Policy raw:          0
    Status:              no information available
    Status raw:          0
    ---
     
  6. DowJones

    DowJones Писатель

    Регистр.:
    11 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Попробовал так, не хочет!
    Может я где ошибся? или в cookie.txt пишу не то что надо?

    PHP:
    <?php
    set_time_limit
    (1*10);
    error_reporting(0);
    ob_start();
    for(
    $i=1;$i<=9;$i++)
    {
      for(
    $j=1;$j<=499;$j++)
      {
            
    $url="http://сайт.домен/страница.php?гет1=2&гет2=$i&гет3=$j";
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL,$url);
            
    curl_setopt ($chCURLOPT_VERBOSE2);
            
    curl_setopt ($chCURLOPT_ENCODING0);
            
    curl_setopt ($chCURLOPT_USERAGENT'Mozilla/5.0');
            
    curl_setopt ($chCURLOPT_COOKIEFILE"cookie.txt");
            
    curl_setopt ($chCURLOPT_COOKIEJAR"cookie.txt");
            
    curl_setopt ($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt ($chCURLOPT_FAILONERROR1);
            
    curl_setopt ($chCURLOPT_HEADER1);
            
    curl_setopt ($chCURLINFO_HEADER_OUT1);
            
    curl_setopt ($chCURLOPT_CONNECTTIMEOUT30);
            
    $text file_get_contents($url);
            echo 
    "$text<br>";
            if (
    preg_match("/Что-то/i""$text")) {
                echo 
    "Вхождение найдено. $url <br>";
            }
            
    curl_close($ch);
        }
    }
    ?>
     
  7. DrakonHaSh

    DrakonHaSh

    Регистр.:
    29 июн 2010
    Сообщения:
    358
    Симпатии:
    122
    PHP:

    $PagesContent 
    urlGetContents("http://ya.ru");

    function 
    urlGetContents($url$errCount 1)
    {
        global 
    $DebugMode$UseProxy;
        if (
    $DebugMode)
            echo 
    "Getting $url<br>\n";
        
        if( 
    $curl curl_init() )
        {
            
    curl_setopt_array($curl, array(
                
    CURLOPT_URL                 => $url,        
                
    CURLOPT_COOKIE              => file_get_contents('cookie.txt'),        // Устанавливаем куки
                
    CURLOPT_USERAGENT           => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)",
                
    #CURLOPT_TIMEOUT             => 60*20,                                 // Время на скачку, по превышению - обрыв и ошибка 
                
    CURLOPT_RETURNTRANSFER      => true,                                   // Скачанные данные не выводить поток
                
    CURLOPT_FOLLOWLOCATION      => true                                    // следовать по редиректам Location         
                
    )
            );
              
            
    #
            
    if ($UseProxy)
            { 
                
    curl_setopt($curlCURLOPT_PROXYTYPECURLPROXY_HTTP);
                
    curl_setopt($curlCURLOPT_PROXY'127.0.0.1:8080');
            }    
            
    #

            
    $content curl_exec($curl);
            
    $answerCode curl_getinfo($curlCURLINFO_HTTP_CODE);
            
    $lastCurlError curl_error($curl); 
            
    curl_close($curl);
            
            if (
    $answerCode != 200)
                
    // 2-я и 3-я попытка перед возвратом ошибки  
                
    return ( ($errCount 3) ? urlGetContents($url, ++$errCount) : false);
            else 
                return 
    $content;
        }
        else
           return 
    false
    }
    файл cookie.txt:
    Код:
    fuid01=463b614a000c02e0.iFgHe8XCCWQ11xLD2wCZMDWNHyEh52lFtCnsL16ueUB5We2BdiYeN3eI_VkMTOziqK5jZauWOtRwL6WjD_lKDc6cDOsnlrecHumBg_ZHHblb8g1hPKg-4hD3LpJfqxVi; yandexuid=2035368501238532173; L=XGhIUXlZBkVjelgDRVNHYHt8DnZ3Q3xaTAktIScIBSpgLhk8ODImJjI9Xy0OAjsDDHQSO0JeDT0GdxsGEhwtKQ==.1331560579.9291.294463.f72fb853d2bf5d59b9104ad577a2cd66; my=YygBqCIA; yp=1638812393.sp.#1646920579.udn.VGVtcFN3cA==#2147483647.ygo.10274:213; yandex_gid=213; yabs-frequency=/3/maG70vWC9S541mEO32S0/
    
     
  8. DowJones

    DowJones Писатель

    Регистр.:
    11 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Таки получилось у меня собрать свой скрипт. Работает :D



    Всем спасибо!