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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> эмуляция браузера fsockopen, жуки в возвращаемой странице 
:(
    Опции темы
beAth10N
Дата 15.3.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди помогите. Весь день бьюсь  smile . Для связки двух систем приходится эмулировать запросы браузера в PHP, в запрашиваемых страницах находится форма, и результат выполнения нек скрипта по этой форме. В первый раз, я посылаю  GET запрос 
 
GET /samo/index.php/fr_monitor HTTP/1.1  
Host: online.pegastour.ru  
Content-Type: text/html; charset=iso-8859-1  
Connection: close 
 
Когда форма заполняется то формирую POST запрос.  
 
POST /samo/index.php/fr_monitor HTTP/1.1  
User-Agent: PHP Script  
Host: online.pegastour.ru  
Content-Type: application/x-www-form-urlencoded  
Content-Length: 39  
Connection: close  
 
MONTH=3&YEAR=2007&TOURINC=43&CLASSINC=2 
 
Потом копирую тело от <body> до </body>, и все вроде отлично, тока В РЕЗУЛЬТИРУЮЩЕЙ СТРАНИЦЕ ПОЯВЛЯЮТСЯ СИМВОЛЫ ffb (почему то именно они) и разможаются гады по всей странице в разном количестве. Если зайти браузером то ниче такого нет. А если эмулировать то выползают, причем всегда, и в гет запросе и в пост. Мож в запросах ошибка? Помогите пожалуйста.
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 15.3.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



beAth10N, покажите пожалуйста ваш скрипт.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
beAth10N
Дата 15.3.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

покажите пожалуйста ваш скрипт.

вот скрипт, кстати я  заметил что не только ffb вставляется, вообще любая абракадабра появляется, но именно по 3 символа
Код

$content_lenght = 0; // в этой переменной я собственно храню значение контен-ленс, если форман е сабнитилась, то равно 0

//считываю входящие заголовки, если там есть контент ленс, то  присваиваю его значение моей переменной
$headers = apache_request_headers();
foreach ($headers as $header => $value) if ($header == 'Content-Length') $content_lenght = $value;

$host = "online.pegastour.ru";
$uri = "/samo/index.php/".$prop;

$samo = @fsockopen($host,80);
$vars = '';
$request = '';
if ($content_lenght)//если есть контен-денс, значит был сабмит формы, значит генерирую post запрос
{
    foreach ($_POST as $name => $value1) $vars .= "{$name}={$value1}&";
    $vars = substr($vars,0,strlen($vars)-1);
    $request .= "POST {$uri}  HTTP/1.1\r\n";
    $request .= "Host: {$host}\r\n";
    $request .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $request .= "Content-Length: {$content_lenght}\r\n";
    $request .= "Connection: close\r\n";
    $request .= "\r\n";
    $request .= $vars;

}else//если контент-ленс = 0, значит форма не трогалась и шлем обычный гет запрос
{
    $request .= "GET {$uri} HTTP/1.1\r\n";
    $request .= "Host: {$host}\r\n";
    $request .= "Content-Type: text/html; charset=iso-8859-1\r\n";
    $request .= "Connection: close\r\n\r\n";
}

$body = '';
@fputs($samo, $request);                                    
while(!feof($samo)) $body .= @fgets($samo));//считываю полученное в переменную
@fclose($samo);
$body_start = strpos($body,"<body>");
$body_end = strpos($body,"</body>");
if ($body_start !== false) $body = substr($body,$body_start+6,$body_end-$body_start);//вырезаю часть, расположенную между тегами <body></body>
echo $body;

PM MAIL WWW ICQ   Вверх
AmraKimmerian
Дата 22.11.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хотел бы апнуть тему, так как ответа нет и может быть спустя 2,5 года он появится.
У меня такая же проблема: сохранаяю текст страницы в переменную:
Код

// ПОКА ПУСТАЯ ПЕРЕМЕННАЯ
    $f='';
    // ОТКРЫВАЕМ СОЕДИНЕНИЕ ЧЕРЕЗ СОКЕТ
    $fp = fsockopen($host, 80, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        // Подадрес и сортировка по дате
        $out = "GET /".$page.$params." HTTP/1.1\r\n";
        // Сервер
        $out .= "Host: ".$host."\r\n";
        $out .= "Connection: Close\r\n\r\n";
        // ПЕРЕДАЕМ ПАРАМЕТРЫ СТРАНИЦЕ
        fwrite($fp, $out);
        // ЗАГРУЖАЕМ ДАННЫЕ ПО ЧАСТЯМ И ЗАПИСЫВАЕМ В ПЕРЕМЕННУЮ
        while (!feof($fp)) {
            $f .= fgets($fp, 1024);
        }
    }
    echo $f;
    // ЗАКРЫВАЕМ СОЕДИНЕНИЕ ЧЕРЕЗ СОКЕТ
    fclose($fp);

Эхо все выдает, но в тексте то тут то там (но только не внутри начала или конца тега <...> ) появляются по три символа - латинские буквы и цифры - в  любом сочетании: 9ab, 47a, a31. 962, 8fc и т. д. Это основательно портит возможность дальнейшего разбора страницы.
Подскажите пожалуйста, из-за чего появляются эти символы?
PM MAIL   Вверх
Pitlord
Дата 22.11.2009, 19:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Из-за незнания HTTP/1.1. Замените
Цитата(beAth10N @  15.3.2007,  16:22 Найти цитируемый пост)
 $request .= "POST {$uri}  HTTP/1.1\r\n";

на
Цитата(beAth10N @  15.3.2007,  16:22 Найти цитируемый пост)
 $request .= "POST {$uri}  HTTP/1.0\r\n";


Добавлено через 7 минут и 25 секунд
Вернее, в Вашем случае надо менять версию протокола в этой строке:
Код

$out = "GET /".$page.$params." HTTP/1.1\r\n";

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


Новичок



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

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



Спасибо, Pitlord! Работает!
Почитаю ка я про HTML 1.0 и 1.1.

Я бы отметил тему как решенную.

Это сообщение отредактировал(а) AmraKimmerian - 24.11.2009, 20:05
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




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


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

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