За последние 24 часа нас посетил 52941 программист и 1764 робота. Сейчас ищут 1255 программистов ...

парсер

Тема в разделе "Прочие вопросы по PHP", создана пользователем pernik, 5 июл 2011.

  1. pernik

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

    С нами с:
    25 дек 2010
    Сообщения:
    49
    Симпатии:
    0
    как обойти эту дилему кто-то знает ?
     
  2. ckjet

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

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    http://voyage.kiev.ua/js/site/ajax2.js читайте, там у них весь код ихнего ява-обработчика разжеван. в форме при нажатии поиск срабатывает метод send его смотрите, проанализируйте их переменные из формы и отправляйте через cUrl методом пост данные в http://voyage.kiev.ua/actions_site.php (как указано в файле http://voyage.kiev.ua/js/voyage/toursearch.js)
     
  3. pernik

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

    С нами с:
    25 дек 2010
    Сообщения:
    49
    Симпатии:
    0
    ноль выодит какие только данны не вводил
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    если JsHTTPReqeust не забываем про X-***** загаловки.
    подробнее о загаловках смотреть в любом снифере... Например Wireshark
     
  5. pernik

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

    С нами с:
    25 дек 2010
    Сообщения:
    49
    Симпатии:
    0
    думаю не в заголовках дело скорей всего в actions_site.php отпровляю посты и просле их обработки данные летят в переменную которая отображается на http://voyage.kiev.ua/Toursearch/ так как же их забрать ?
     
  6. pernik

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

    С нами с:
    25 дек 2010
    Сообщения:
    49
    Симпатии:
    0
    неужели не кто не знает ???
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    я думал там либа стоит jshttpreqeust
    никуда данные не летят, обмен идет по http. Сделовательно, ваша задача, лишь сформировать валидный http запрос и получить запрошенные данные.
     
  8. pernik

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

    С нами с:
    25 дек 2010
    Сообщения:
    49
    Симпатии:
    0
    да стоит jshttpreqeust и всётаки летят в POST actions_site.php а возращает (узнал через firebug)от сюда actions_site.php?PHPSESSID=rfdt7gqkqdrbdlsdp8hiboohn3(меняется)&JsHttpRequest=13107119348088(меняется)-xml
     
  9. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    pernik
    что мешает понять что там меняется? не можешь анализировать javascript? или просмотреть исходник код страницы?
     
  10. pernik

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

    С нами с:
    25 дек 2010
    Сообщения:
    49
    Симпатии:
    0
    ну помоги если можешь
     
  11. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    pernik
    думаю, что тут потребуется больше 2-5 минут, чтобы разобраться. по крайней мере я попытался, и в 5 минут не уложился. а тратить больше времени на это - нет мотивации.

    подскажу, что формирование запроса происходит в файле ajax2.js, и, если не ошибаюсь, идёт привязка к сессии.

    удачи ;)
     
  12. pernik

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

    С нами с:
    25 дек 2010
    Сообщения:
    49
    Симпатии:
    0
    это я и сам понял походу вот эта фун-ия делает погоду в ней немогу разобраться
    responseParser : function () {
    if (this.req.readyState != 4) {
    return;
    }
    if (this.req.responseText!='' && this.preloaderObj) {
    this.preloaderObj.style.textAlign="left";
    this.preloaderObj.innerHTML = '<div style="text-align:right;"><a href="javascript:void(0);" onclick="document.getElementById(\'' + this.preloaderObj.id + '\').style.display=\'none\'">[x] Закрыть</a></div>'+this.req.responseText;
    centerDiv(this.preloaderObj.id);

    var sbm_btn = document.getElementById("submit_button");
    if(sbm_btn) sbm_btn.disabled = false;

    } else if (this.preloaderObj) {
    this.preloaderObj.style.display = 'none';
    }
    for (key in this.req.responseJS) {
    if (key == 'javascript') {
    eval(this.req.responseJS[key]);
    } else if (document.getElementById(this.layer_prefix + key)) {
    document.getElementById(this.layer_prefix + key).innerHTML = this.req.responseJS[key];
    }
    }

    this.lock = false;
    this.queueNext();
    }[/code]
     
  13. Jettt

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

    С нами с:
    24 июл 2011
    Сообщения:
    20
    Симпатии:
    0
    А остальные по неформатированному коду будут разбираться?

    Пишу функцию по русски
    Вывод - тут по теме вопроса вообще ничего нужного нет.

    тебе надо
    1. посмотреть имена полей формы
    2. добавить к ним page_start (так в функции сказано)
    3. пульнуть это дело POST-ом на http://voyage.kiev.ua/actions_site.php (curl например умеет)
    4. прочитать ответ
    Если повезёт и нет привязок к сессиям, хосту и т.п. то должен получиться JSON, из которого и копать ответ.
     
  14. pernik

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

    С нами с:
    25 дек 2010
    Сообщения:
    49
    Симпатии:
    0
    помогите найти ошибку



    <?header("Content-Type: text/html; charset=utf-8");
    $req_string =
    'spokey=&uid=2107201&fav=0&bonus=0&price=&resort=&ch1=&ch2=&ch3=&openonly=1&lr=0&pr=&p=0&rows=20&ttype=&fromcity=&tocity=&country=&sorter=p1&board=&pm=9&pref_pm=%2B-&stars=&minprice=&nights=&pagenum=&dateFrom=17.09.2011&hotelKey=000&adult=2&child=0&hotelArray=&resortArray=&cod=&test=303';

    $req_header =
    "POST /search/first_events.php?test=abc&PHPSESSID=12c496af9fa9f80674f0015b555e8675&abc13108107929641-xml HTTP/1.0\r\n".
    "User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.9.168 Version/11.50\r\n".
    "Host: www2.turtess-online.com.ua\r\n".
    "Referer: http:turtess-online.com.ua/search/\r\n".
    "Content-Length: ".strlen($req_string)."\r\n".
    "Content-Type: application/octet-stream\r\n".
    "Content-Transfer-Encoding: binary\r\n".
    "\r\n";

    $request = $req_header . $req_string;

    $f = fsockopen('turtess-online.com.ua', 80, $errno, $errstr, 30) or die('Cannot open socket to turtess-online.com.ua:80 '.$errno.' '.$errstr);




    fwrite($f, $request);
    $content = '';
    while(!feof($f)){
    $content.= fread($f, 1024);
    }
    fclose($f);


    $content = trim(substr($content, strpos($content, "\r\n\r\n") + 4));
    $content = iconv('windows-1251', 'utf-8', $content);

    $json = json_decode($content, 1);

    $text= substr(htmlspecialchars(print_r($json, 1)),0,120);
    print_r($json);

    $a= htmlspecialchars(print_r($json, 1));
    echo '<pre>'.$a.'</pre>';

    ?>