ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Правильные заголовки для fsockopen
  #1  
Старый 03.10.2009, 09:31
Аватар для ageent
ageent
Новичок
Регистрация: 09.01.2009
Сообщений: 1
Провел на форуме:
622

Репутация: 0
По умолчанию Правильные заголовки для fsockopen

Вообщем хочу написать парсер используя функцию fsockopen(). Пишу такой код.
PHP код:
<?php
$proxyhost 
"78.153.210.191";
$proxyport 80;

$http_request "GET /moi-rasshirenija-joomla.html HTTP/1.1" "\r\n";
$http_request .= "Host: www.ageent.ru" "\r\n";
$http_request .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3";
$http_request .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" "\r\n";
$http_request .= "Accept-Language: ru,en-us;q=0.7,en;q=0.3" "\r\n";
$http_request .= "Accept-Encoding: gzip,deflate" "\r\n";
$http_request .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7" "\r\n";
$http_request .= "Keep-Alive: 300" "\r\n";
$http_request .= "Connection: keep-alive" "\r\n";
$http_request .= "Cache-Control: max-age=0""\r\n\r\n";

$fp fsockopen($proxyhost$proxyport);

if (
$fp) {
    
// передаем запрос
    
fwrite($fp,$http_request);
    
// читаем ответ
    
while (!feof($fp)) {
        
$http_response fgets($fp1024);
        if (
preg_match("/^HTTP\/1\.\d (\d+) (.*)/"$http_response$found)) {
            
$response_code $found[1];
            
$response_text $found[2];
            break;
        }
    }
    
print_r($http_response);
}
else {
    echo 
"2";
}

if (
$response_code 200) {
    echo 
"1";
}
?>
В ответ мне приходит что соединении удалось и все!. Вопрос, а как тело документа получить-то?

Последний раз редактировалось ageent; 03.10.2009 в 10:20..
 
Ответить с цитированием

  #2  
Старый 03.10.2009, 12:54
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

"break;" - удали, получение ниформации прерывается сразу после распознавания ответа

и не "print_r($http_response);" а "echo $http_response;", это не массив будет, а переменная, содержащая результат (фактически просто текст)
 
Ответить с цитированием

  #3  
Старый 03.10.2009, 13:12
Аватар для mr.The
mr.The
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме:
4778940

Репутация: 1257


Отправить сообщение для mr.The с помощью ICQ
По умолчанию

тс, готовая функция - http://mrthe.name/2009/03/sockets-php/

и если ты хочешь получать содержимое без заголовков, то нужно делать либо 2 цикла, либо потом обрабатывать регуляркой. пример с 2-мя циклами по ссылке выше.
 
Ответить с цитированием

  #4  
Старый 03.10.2009, 15:07
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

mr.The

PHP код:
ffunction get_page($site,$page,$isheaders=false,$ua='Opera 9.27 (compatible; MSIE 6.0; Windows NT 5.1; ru)',$ref='',$cookie='',$post='')
{
$page=trim($page);
$site=trim($site); 
Первые 4 строчки, 4 замечания:
1. Слово ffunction сам видиш две - ff
2. Необязательная переменная $ua задана уже в середине функции, но после неё идут обязательные переменные, что делает и эту переменную при вызове функции обязательной. Если не понятно, то, как вызвать функцию, не передавая ей юзерагент, т.к. он уже по умолчанию задан Оперой ? Такие установленые параметры должны быть последние в функции.
3. $page=trim($page); зачем ???
4. $site=trim($site); зачем ???
Я считаю водобную процедуру нужно делать от ситуации, если вдруг передаеш с файла массива и там есть разрывы. И делать это до функции а не применять всегда.
 
Ответить с цитированием

  #5  
Старый 03.10.2009, 15:13
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Также весьма немаловажно, сугубо на мой взгляд, имхо, предусмотреть вариации - GET или POST запрос. В моих брутерах в 50-70% процентов случаев прокатывает именно POST. Но почему-то этого практически никто не предусматривает в своих классах и функциях.
 
Ответить с цитированием

  #6  
Старый 03.10.2009, 18:34
Аватар для mr.The
mr.The
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме:
4778940

Репутация: 1257


Отправить сообщение для mr.The с помощью ICQ
По умолчанию

Цитата:
3. $page=trim($page); зачем ???
4. $site=trim($site); зачем ???
на всякий. часто было когда загонял случайно туда сайт вида site.ru\r\n и запрос оказывался некорректным.
Цитата:
2. Необязательная переменная $ua задана уже в середине функции, но после неё идут обязательные переменные, что делает и эту переменную при вызове функции обязательной. Если не понятно, то, как вызвать функцию, не передавая ей юзерагент, т.к. он уже по умолчанию задан Оперой ? Такие установленые параметры должны быть последние в функции.
действительно.. обычно это не так сложно, да у меня если юзались последующие переменные, то и браузер тоже менялся кадый раз..
Цитата:
1. Слово ffunction сам видиш две - ff
опечатка.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шпаргалки для сертификатов по Битрикс Liar PHP, PERL, MySQL, JavaScript 7 30.05.2009 10:13
Создание сети: обжимка проводов petrovich-lamer Windows 13 02.07.2007 13:18
Редактирование содежимого прошивок для Самсунгов Digimortal Схемы и программы 3 28.02.2007 14:22
Программы для работы с железом. Часть I – настройка видеокарт _GaLs_ Аппаратное обеспечение 2 20.12.2006 01:18



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ