За последние 24 часа нас посетили 201062 программиста и 2079 роботов. Сейчас ищут 2059 программистов ...

curl

Тема в разделе "PHP для новичков", создана пользователем vodorod, 13 янв 2011.

  1. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    Есть сайт, при подключении к нему curl вылетает такая ошибка SYQUERY_OKsyquery.page.findComponent('regForm').logonSuccess();
     
  2. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Где именно эта ошибка вылетает? В ответе сервера или PHP выкидывает ошибку парсинга? Я подозреваю, что это сайт, к которому вы подключены работает на SYQUERY, и там, чтобы зайти на него, нужно вводить логин/пароль.
     
  3. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    Да в ответе, и да это форма входа, как ее убрать?
     
  4. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Нужно просто разобраться как устроена форма логина на той странице и симулировать ввод логина и пароля. Вобщем граббером заголовков пользуйтесь (Firefox Firebug или Opera Firefly).
     
  5. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    То есть надо передать такие же заголовки, да?
     
  6. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Скорее всего да.
     
  7. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    Вроде передал все заголовки которые были в запросы, выводит: SYQUERY_OK$('#syq1-newMes').val('0'); $('#syq1-moderation').remove(); syquery.page.findComponent('regForm').logonSuccess();
    Вот код:
    Код (Text):
    1.  
    2. <?
    3.  $ch = curl_init();  
    4.    $uagent = "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
    5.    $head=array("Host=statusmania.ru",
    6.    "Accept=*/*",
    7.    "Accept-Language=ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3",
    8.    "Accept-Encoding=gzip,deflate",
    9.    "Accept-Charset=IBM866,utf-8;q=0.7,*;q=0.7",
    10.    "Keep-Alive=115",
    11.    "Connection=keep-alive",
    12.    "Content-Type=application/x-www-form-urlencoded; charset=UTF-8",
    13.    "X-Requested-With=XMLHttpRequest",
    14.    "Referer=http://statusmania.ru/",
    15.    "Cookie=__utma=64267757.1405483162.1293998484.1294923210.1295012680.10; __utmz=64267757.1294853629.8.4.utmcsr=vkontakte.ru|utmccn=(referral)|utmcmd=referral|utmcct=/vova_bober; favorite=; PHPSESSID=j0sj6u88us4gosbsu8bb21v805; __utmb=64267757.4.10.1295012680; __utmc=64267757");
    16.  
    17.  curl_setopt($ch, CURLOPT_URL, "http://statusmania.ru/");  
    18.       curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    19.           curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    20.       curl_setopt($ch, CURLOPT_HEADER, 0);
    21.       curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    22.       curl_setopt($ch, CURLOPT_ENCODING, "");
    23.       curl_setopt($ch, CURLOPT_HTTPHEADER, $head);
    24.       curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
    25.       curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    26.       curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    27.       curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
    28.       curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies6.txt");
    29.       curl_setopt($ch, CURLOPT_COOKIEFILE,"cookies6.txt");
    30.   curl_setopt($ch, CURLOPT_POST,1);
    31.   curl_setopt($ch, CURLOPT_POSTFIELDS,"SYQUERY_POSTBACK=1&SYQUERY_ID=regForm-logon-b&SYQUERY_EVENT=click&regForm-logonLogin=agent669212&regForm-logonPassword=669212&regForm-regLogin=&regForm-regPassword=&regForm-regEmail=&regForm-remPassLogin=&regForm-remPassEmail=");
    32.  
    33.  
    34.  $output = curl_exec($ch);  
    35.  
    36. curl_close($ch);  
    37.  
    38. print $output;
    39. ?>
     
  8. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    Хотя нет вот это выдала:
    SYQUERY_OKsyquery.page.findComponent('regForm').logonSuccess();
     
  9. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    И еще так вопрос не в тему, если запущен cron с интервалом в 1 минуту, от страница в браузере будет обновляться каждую минуту?
     
  10. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    vodorod
    Нужно разбираться что делает javascript там. Что выполняет функция logonSuccess(). Ковыряйте сорсы яваскрипта.

    Если запущен крон с интервалом в 1 минуту, то крон будет запускать ваш скрипт каждую минуту. Если ваш скрипт эмулирует переход браузером по страничке, то да, будет эмулироваться обновление страницы каждую минуту.

    Только если вы пытаетесь накрутить реферала какого-то, что мол вы странички просматриваете, то скорее всего ничего не получится. Там должны куки обновляться и интервал обновления должен быть рандомным, а то вас быстро засекун и забанят. Легче написать прогу, которая будет эмулировать клики мышкой, чем обращение к серверу через PHP.