Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/27: Рейтинг темы: голосов - 27, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 30.06.2009
Сообщений: 23

заголовки http

11.09.2009, 08:00. Показов 5033. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
а вот еще маленький вопрос
я через снифер получил эти заголовки

отправка post

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
POST /action.php HTTP/1.1
Host: tut-music.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
Accept: text/javascript, text/html, application/xml, text/xml, */*
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
X-Requested-With: XMLHttpRequest
X-Prototype-Version: 1.5.0
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: [URL]http://tut-music.ru/[/URL]
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 9
query=sex
ответ

Code
1
2
3
4
5
6
7
8
9
10
HTTP/1.x 200 OK
Date: Fri, 11 Sep 2009 03:35:46 GMT
Server: Apache/2
X-Powered-By: PHP/5.2.10
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Length: 10447
Keep-Alive: timeout=1, max=100
Connection: Keep-Alive
Content-Type: text/html
отправка GET

Code
1
2
3
4
5
6
7
8
9
GET /action.php HTTP/1.1
Host: tut-music.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
ответ

Code
1
2
3
4
5
6
7
8
9
10
11
HTTP/1.x 200 OK
Date: Fri, 11 Sep 2009 03:35:47 GMT
Server: Apache/2
X-Powered-By: PHP/5.2.10
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Length: 54
Keep-Alive: timeout=1, max=99
Connection: Keep-Alive
Content-Type: text/html
X-Pad: avoid browser bug
как можно получить через эти заголовки тело ответа (html) - очень хочу знать как правильно написать скрипт...все перепробовал, но так и не получается(



правильно post написал? если да, то как дальше? plz

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$fp = fsockopen("tut-music.ru", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "POST /action.php HTTP/1.1\r\n";
    $out .= "Host: tut-music.ru\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n\r\n";
    $out .= "query=sex";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 1024);
    }
    fclose($fp);
}
?>
самое главное это получить тело запроса...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.09.2009, 08:00
Ответы с готовыми решениями:

HTTP заголовки. Как увидеть реальные принятые заголовки ?
файл php содержит readfile(блабла) больше ни чего! Если смотреть заголовки через Файрфорк или сервисы-сайты, то показывает...

Curl не получается отправить заголовки
Всем привет! Опишу алгоритм действий: 1. Смотрю в отладчике, какие заголовки браузер посылает на сайт. 2. Копирую все эти...

Получить контент другого сайта и добавить свои заголовки
Как получить страницу другого сайта и добавив свои заголовки выдать пользователю. Например: function gettitle($url) { ...

12
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
11.09.2009, 11:15
Ты тут не указал Content-Length... в твоём случае - это длинна строки "query=sex". Если это не указать, то сервер не будет знать, когда выдавать ответ... он будет считать, что запрос ещё не завершён.
Если ты собираешься сам анализировать ответ, то лучше использовать простокол HTTP/1.0, потому что у 1.1 есть некоторые тонкости, с которыми будет много мороки.
Так же в данном случае, лучше указать в заголовках
Code
1
Connection: Close
что бы сервер закрыл соединение, после того, как вернёт ответ. Иначе feof будет ждать несколько секунд, пока сервер не закроет соединение по timeout'у.
И лично я бы использовал не fgets, а fread... а то вдруг строка окажется длиннее, чем 1024 байта... не знаю как в этом случае поведёт себя fgets.

А ответ идёт по такому же принципу... вначале заголовки, а после пустой строки само тело. Например так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$fp = fsockopen("tut-music.ru", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $post = "query=sex";
    $out = "POST /action.php HTTP/1.0\r\n";
    $out .= "Host: tut-music.ru\r\n";
    $out .= "Connection: Close\r\n";
    $out .= "Content-Length: ".strlen($post)."\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n\r\n";
    fwrite($fp, $out);  // отправляем заголовки
    fwrite($fp, $post); // отправляем запрос POST
    $res = "";
    while (!feof($fp)) {
        $res .= fread($fp, 1024);
    }
    fclose($fp);
    $res = explode("\r\n\r\n",$res,2);
// Теперь $res - это массив, состоящий из двух элементов: 1 - заголовки ответа, 2 - само тело ответа
}
?>
1
0 / 0 / 0
Регистрация: 30.06.2009
Сообщений: 23
11.09.2009, 16:57  [ТС]
Спасибо) что еще я могу сказать доброму человеку

Добавлено через 1 час 23 минуты
кстати хотел уточнить одну особенность...почему данный код нормально отображает данные в IE а в остальных браузерах выводиться исковерканный код - русский тест искаженный(

я просто пытаюсь повысить опыт на сайте по поиску музыке )

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
$si = $GLOBALS["_SERVER"]["SERVER_NAME"];
$te = $GLOBALS["_SERVER"]["SCRIPT_NAME"];
if (isset($_POST['name']))
  $name = $_POST['name'];
  else
  $name = "sex";
  urlencode($name);
$fp = fsockopen("tut-music.ru", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $post = "query=$name";
    $out = "POST /action.php HTTP/1.0\r\n";
    $out .= "Host: tut-music.ru\r\n";
    $out .= "Connection: Close\r\n";
    $out .= "Content-Length: ".strlen($post)."\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded; charset=windows-1251\r\n\r\n";
    fwrite($fp, $out);  // отправляем заголовки
    fwrite($fp, $post); // отправляем запрос POST
    $res = "";
    while (!feof($fp)) {
        $res .= fread($fp, 1024);
    }
    fclose($fp);
    $res = explode("\r\n\r\n",$res,2);
    $forma = "<form action=\"$te\" method=\"post\">\r\n";
    $forma .= "<input size=\"30\" name=\"name\" type=\"text\">\r\n";
    $forma .= "<input name=\"go\" value=\"go\" type=\"submit\"></form>\r\n";
    $res[1] = $res[1].$forma;
    $res[1] = str_replace('src/play.gif','http://tut-music.ru/src/play.gif',$res[1]);
    $res[1] = str_replace('href=".','href="http://tut-music.ru',$res[1]);
    echo $res[1];
// Теперь $res - это массив, состоящий из двух элементов: 1 - заголовки ответа, 2 - само тело ответа
}
?>
0
0 / 0 / 0
Регистрация: 30.06.2009
Сообщений: 23
11.09.2009, 19:26  [ТС]
я понял это проблема в кодировке была

Добавлено через 4 минуты
тогда каким запросом менять кодировку в браузере(
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
11.09.2009, 19:42
Цитата Сообщение от euphoriawtf
тогда каким запросом менять кодировку в браузере(
Можно либо указать кодировку в заголовке:
PHP
1
header('Content-Type: text/html; charset=windows-1251');
(но это нужно делать в самом начале до первой отправки данных клиенту... т.е. до первого echo или print )
Либо можно в самом HTML внутри <head></head> указать
HTML5
1
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
Но в твоём случае HTML ты просто копируешь, поэтому изменить его будет трудно... поэтому проще всего указать header
1
0 / 0 / 0
Регистрация: 30.06.2009
Сообщений: 23
12.09.2009, 08:35  [ТС]
да спасибо... 1 вариант сработал
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
12.09.2009, 20:27
Если ты собираешься сам анализировать ответ, то лучше использовать простокол HTTP/1.0, потому что у 1.1 есть некоторые тонкости, с которыми будет много мороки.
Может и будет больше мороки, но лучше использовать как раз HTTP/1.1 - а то как иначе добираться до виртуальных хостов ?
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
12.09.2009, 20:40
odip, в данном случае можно 1.1 использовать, если указать Connection: Close
Но если указать Connection: Keep-Alive, а страница окажется динамической и в заголовке ответов не сможет указать размер, то этот размер будет пихаться прямо среди тела страницы. Т.е. тело страницы будет начинаться не с <!DOCTYPE, а с числа, которое означает размер текущего блока. Когда этот блок будет передан, то будет прислан новый размер уже следующего блока и за ним сам блок. В общем, потом вырезать эти цифры и рассчитать полный размер страницы будет хлопотно.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
12.09.2009, 21:12
а с числа, которое означает размер текущего блока.
Блоки тоже не очень трудно собрать.
можно 1.1 использовать, если указать Connection: Close
Вот этот вариант по-проще будет
0
0 / 0 / 0
Регистрация: 30.06.2009
Сообщений: 23
22.09.2009, 17:49  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$proxyhost = '203.178.133.10';
$proxyport = 3124;
 
$rcon = 'яяяяrcon 123456789 status' . "\r\n";
$rcon .= 'tcp://127.0.0.1:29070' . "\r\n\r\n";
 
$fp = fsockopen($proxyhost, $proxyport);
 
if ($fp) {
fwrite($fp,$rcon);
fclose($fp);
}
?>
или как можно заставить через прокси отправить запрос на сервер (определенный адрес 127.0.0.1:29070)? отправить запрос сразу минуя прокси можно а вот( ....
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
22.09.2009, 18:13
Так же как и напрямую, только нужно ещё указать имя сервера. Например, напрямую ты подключаешься сразу к серверу www.cyberforum.ru на порт 80 и передаёшь
Code
1
2
3
GET /php/thread50435.html HTTP/1.1
Host: www.cyberforum.ru
Connection: Close
А что бы подключиться через прокси, то ты подключаешься к прокси и передаёшь команду
Code
1
2
3
GET [B]https://www.cyberforum.ru[/B]/php/thread50435.html HTTP/1.1
Host: www.cyberforum.ru
Connection: Close
В этом вся разница.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
22.09.2009, 18:17
Для варианта с proxy можно еще добавить строки
Code
1
2
Pragma: no-cache
Cache-Control: no-cache
Это заставит proxy-сервер сделать запрос, а не доставать значения из кэша.
0
0 / 0 / 0
Регистрация: 30.06.2009
Сообщений: 23
26.09.2009, 19:26  [ТС]
это я находил как ( на 80 порт) все по стандарту...а вот если подключиться к proxy с 80 и отправить запрос на сервер с портом 25 (или 10000)
или я не понял вас... ; )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2009, 19:26
Помогаю со студенческими работами здесь

HTTP заголовки
пишу не в тему тк тем таких нет. захотел посмотреть что браузер передает, когда заполняю форму авторизации ожидал увидеть пару...

HTTP заголовки PHP
Добрый день товарищи! Не получилось найти полную инфу по заголовкам PHP применяемую в с функцией header(). Может кто нибудь знает хороший...

Как узнать принимаемые HTTP заголовки на странице?
У меня есть страница, когда пользователь запрашивает его, как мне показать принимаемые заголовки от клиента. Версия PHP 5.3.28,...

Как можно увидеть заголовки HTTP при открытии сайта?
Добрый день! Подскажите, пожалуйста, как можно увидеть заголовки HTTP при открытии сайта?

File_get_contents failed to open stream: HTTP request failed! HTTP/1.1 505
Ребята подскажите пожалуйста. Использую фреймворк Yii. Пишу небольшой парсер. Все вроде бы работало. Тут неожиданно в один прекрасный день,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru