2010-10-30 3 views
0

Я хотел бы изучить, как отправляются и принимаются заголовки.Как отправлять и получать заголовки через PHP

Я знаю о функции PHP header и думаю, что я могу просто взглянуть на фактический заголовок запроса (например, с использованием Firebug) и сделать идентичные запросы на сервер (включая спуфинг User-Agent). Это верно?

Другая проблема заключается в том, как получить ответы заголовка назад? Я хочу проанализировать ответ.

Спасибо.

EDIT:

@Tatu, вот код, я побежал:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "http://www.google.com/"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/8.1.0.0 Safari/540.0'); 

$result = curl_exec($ch); 
curl_close($ch); 

header('Content-type: text/plain'); 
echo($result); 

ответ

3

Вы можете взглянуть на cURL, который позволит вам делать запросы и устанавливать и проверять заголовки. PHP header устанавливает только заголовки для текущей страницы, вы не можете использовать это для подмены вашего агента –, это заголовки, установленные сервером и, как таковые, не имеют такого значения.

Основная структура завитка запроса с пользовательскими заголовками может быть что-то вроде этого:

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, "Your user agent"); 

$result = curl_exec($ch); 
curl_close($ch); 

Начало $result теперь будет содержать заголовки, полученные от сервера.

+0

Просто для уточнения, я могу "пародия" User-Agent с помощью Curl, верно? Я просто хочу посмотреть, как серверы реагируют на различные пользовательские агенты. – StackOverflowNewbie

+0

Я пробовал ваш код, но я не получал заголовки (я получил фактический ответ файла). Я редактирую свой оригинальный пост, поэтому я могу показать вам свой код. – StackOverflowNewbie

+0

@StackOverflowNewbie, вам нужно установить 'CURLOPT_HEADER' значение 1, которое у меня случайно было как 0 в моем примере. –

1

Если вы хотите напрямую отправлять заголовки, не используя cURL, проверьте сокеты на PHP.

http://php.net/sockets

+0

После того, как вы закончите cURL - тогда сокеты дают вам потрясающую силу. Но вы все равно можете делать почти все с помощью cURL. – Xeoncross

+0

yep, cURL обеспечивает лучший интерфейс, но ничто не сравнится с сырыми сокетами :-) – Nasir

Смежные вопросы