CURL и Ajax

Тема в разделе "PHP", создана пользователем LEXAlForpostl, 30 ноя 2011.

Модераторы: latteo
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    739
    Симпатии:
    226
    Здравствуйте.
    Помогите, пожалуйста, получить список сайтов из sape по определенному фильтру.
    Суть работы:
    1. Отправляем запрос.
    2. Ajax скрипт проверяет статус выполнения задания.
    3. Доставляются результаты.

    1. выполнен
    2. выполнен
    3. не работает

    Запрос из пункта №2
    PHP:
    http://www.sape.ru/ajax_task.php?act=status&task=search

    POST /ajax_task.php?act=status&task=search HTTP/1.1
    Host
    www.sape.ru
    User
    -AgentMozilla/5.0 (Windows NT 5.1rv:8.0Gecko/20100101 Firefox/8.0
    Accept
    application/jsontext/javascript, */*
    Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
    Connection: keep-alive
    X-Requested-With: XMLHttpRequest
    Referer: http://www.sape.ru/orders.php?link_id=27804282&act=s_order&filter_mode=1&no_results=true
    Cookie: __utma=1.1760547977.1322547313.1322604624.1322604687.3; __utmz=1.1322547313.1.1.utmcsr=articles.sape.ru|utmccn=(referral)|utmcmd=referral|utmcct=/wm/sites/; bb0lastvisit=1322204283; bb0lastactivity=0; SAPE=xR5-BgjuMesD0QvHRBHFOatEGN8; __utmc=1; AUTH_TICKET=9a1bca9f696e5d9aa8f0c0a893d60ba8; SETTINGS="{'rate':'25'|'show_confirm':'1'|'currency':'rur'}"; advookie=Tx2F9E09C4021709829E6360DBEC50DDC7C35D9ABECD16ADEB31F1F54FE60A7A0139363834; __utmb=1.1.9.1322608460338
    Pragma: no-cache
    Cache-Control: no-cache
    Content-Length: 0

    HTTP/1.1 200 OK
    Server: nginx
    Date: Tue, 29 Nov 2011 23:15:39 GMT
    Content-Type: text/html; charset=WINDOWS-1251
    Connection: keep-alive
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Content-Length: 142
    Запрос из пункта №3:
    PHP:
    http://www.sape.ru/ajax_orders.php

    POST /ajax_orders.php HTTP/1.1
    Host
    www.sape.ru
    User
    -AgentMozilla/5.0 (Windows NT 5.1rv:8.0Gecko/20100101 Firefox/8.0
    Accept
    : */*
    Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
    Connection: keep-alive
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    X-Requested-With: XMLHttpRequest
    Referer: http://www.sape.ru/orders.php?link_id=27804282&act=s_order&filter_mode=1&no_results=true
    Content-Length: 187
    Cookie: __utma=1.1760547977.1322547313.1322604624.1322604687.3; __utmz=1.1322547313.1.1.utmcsr=articles.sape.ru|utmccn=(referral)|utmcmd=referral|utmcct=/wm/sites/; bb0lastvisit=1322204283; bb0lastactivity=0; SAPE=xR5-BgjuMesD0QvHRBHFOatEGN8; __utmc=1; AUTH_TICKET=9a1bca9f696e5d9aa8f0c0a893d60ba8; SETTINGS="{'rate':'25'|'show_confirm':'1'|'currency':'rur'}"; advookie=Tx2F9E09C4021709829E6360DBEC50DDC7C35D9ABECD16ADEB31F1F54FE60A7A0139363834; __utmb=1.1.9.1322608460338
    Pragma: no-cache
    Cache-Control: no-cache
    link_id=27804282&act=s_order&filter_mode=1&show_mode=&pn=1&filter=946614&ps=250&show_mode=1&anchor_order=&order=19&s_pages_per_site=all&new_search=1&ajax_act=get_fast_result&last_act=true


    HTTP/1.1 200 OK
    Server: nginx
    Date: Tue, 29 Nov 2011 23:15:40 GMT
    Content-Type: text/html; charset=WINDOWS-1251
    Transfer-Encoding: chunked
    Connection: keep-alive
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Content-Encoding: gzip
    Сам скрипт:
    PHP:
    <?
    function 
    curl_s ($url$post,$refer 'http://www.sape.ru/')
    {
    $curl curl_init();
    curl_setopt($curlCURLOPT_URL$url);
    curl_setopt($curlCURLOPT_COOKIEJAR'cook.txt');//сохранить куки в файл
    curl_setopt($curlCURLOPT_COOKIEFILE'cook.txt');//считать куки из файла
    curl_setopt($curlCURLOPT_USERAGENT"Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0");
    //Установите эту опцию в ненулевое значение, если вы хотите, чтобы PHP завершал работу скрыто, если возвращаемый HTTP-код имеет значение выше 300. По умолчанию страница возвращается нормально с игнорированием кода.
    curl_setopt($curlCURLOPT_FAILONERROR1);
    curl_setopt($curlCURLOPT_REFERER$refer);
    curl_setopt($curlCURLOPT_TIMEOUT3);
    curl_setopt($curlCURLOPT_POST1); // устанавливаем метод POST
    curl_setopt($curlCURLOPT_POSTFIELDS$post);
    //Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header ответа включалась в вывод.
    curl_setopt($curlCURLOPT_HEADER1);
    //Внимание, важный момент, сертификатов, естественно, у нас нет, так что все отключаем
    curl_setopt ($curlCURLOPT_SSL_VERIFYPEER0);// не проверять SSL сертификат
    curl_setopt ($curlCURLOPT_SSL_VERIFYHOST0);// не проверять Host SSL сертификата
    curl_setopt($curlCURLOPT_FOLLOWLOCATION1);// разрешаем редиректы
    curl_setopt ($curlCURLOPT_RETURNTRANSFER,true);
    $result curl_exec($curl); // выполняем запрос и записываем в переменную
    curl_close($curl); // заканчиваем работу curl
    return ($result);
    }
    curl_s ('https://auth.sape.ru/login/','r=http://www.sape.ru/&act=login&username=реальный_логин&password=реальный_пароль');
    curl_s ('https://www.sape.ru/ajax_task.php?act=add&task=search','link_id=27804303&act=s_order&filter_mode=1&show_mode=&pn=1&filter=946614&ps=250&show_mode=1&anchor_order=&order=19&s_pages_per_site=all&new_search=1');
    $c=0;
    $f=0;
    while (
    $f!=1&&$c<300)
    {
    $t es(curl_s ('http://www.sape.ru/ajax_task.php?act=status&task=search',''));
    echo 
    $t;
        if (
    stristr($t,'Задание выполнено'))
        
    $f=1;
        
    sleep (3);
        
    $c++;
        
    }

    echo 
    curl_s ('http://www.sape.ru/ajax_orders.php','link_id=27804268&act=s_order&filter_mode=1&show_mode=&pn=1&filter=946614&ps=250&show_mode=1&anchor_order=&order=19&s_pages_per_site=all&new_search=1&ajax_act=get_fast_result&last_act=true','http://www.sape.ru/orders.php?link_id=27804268&act=s_order&filter_mode=1&no_results=true');



    function 
    es ($path) {
    $path strtoupper ($path);
    return 
    strtr($path, array("\U0430"=>"а""\U0431"=>"б""\U0432"=>"в",
    "\U0433"=>"г""\U0434"=>"д""\U0435"=>"е""\U0451"=>"ё""\U0436"=>"ж""\U0437"=>"з""\U0438"=>"и",
    "\U0439"=>"й""\U043A"=>"к""\U043B"=>"л""\U043C"=>"м""\U043D"=>"н""\U043E"=>"о""\U043F"=>"п",
    "\U0440"=>"р""\U0441"=>"с""\U0442"=>"т""\U0443"=>"у""\U0444"=>"ф""\U0445"=>"х""\U0446"=>"ц",
    "\U0447"=>"ч""\U0448"=>"ш""\U0449"=>"щ""\U044A"=>"ъ""\U044B"=>"ы""\U044C"=>"ь""\U044D"=>"э",
    "\U044E"=>"ю""\U044F"=>"я""\U0410"=>"А""\U0411"=>"Б""\U0412"=>"В""\U0413"=>"Г""\U0414"=>"Д",
    "\U0415"=>"Е""\U0401"=>"Ё""\U0416"=>"Ж""\U0417"=>"З""\U0418"=>"И""\U0419"=>"Й""\U041A"=>"К",
    "\U041B"=>"Л""\U041C"=>"М""\U041D"=>"Н""\U041E"=>"О""\U041F"=>"П""\U0420"=>"Р""\U0421"=>"С",
    "\U0422"=>"Т""\U0423"=>"У""\U0424"=>"Ф""\U0425"=>"Х""\U0426"=>"Ц""\U0427"=>"Ч""\U0428"=>"Ш",
    "\U0429"=>"Щ""\U042A"=>"Ъ""\U042B"=>"Ы""\U042C"=>"Ь""\U042D"=>"Э""\U042E"=>"Ю""\U042F"=>"Я"));


    echo 
    "<br>OK";
    ?>
    Скрипт выводит NO_CACHE, вместо списка урлов.

    В чём ошибка?
     
  2. CheburatoR-all

    CheburatoR-all Гипножаба

    Регистр.:
    26 апр 2009
    Сообщения:
    295
    Симпатии:
    438
  3. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    739
    Симпатии:
    226
    Тем, что там сайты для закупки ссылок нельзя выбирать по фильтрам.