Ir para o conteúdo
pedrotuga

Como extrair os cabeçalhos de uma resposta a um pedido http (ou outros)

Mensagens Recomendadas

pedrotuga    31
pedrotuga

Isto é um tutorial com uma linha de código:

têm que ter o curl instalado, quem usa linux provavelmente já o terá uma vaz que vem em tudo quanto é distribuições

curl -I http://portugal-a-programar.org/

o output deve ser qq coisa do tipo:

HTTP/1.1 200 OK
Date: Thu, 12 Jul 2007 22:59:29 GMT
Server: Apache
X-Powered-By: PHP/4.4.6
Content-Type: text/html

e é isto.

simples mas muito util

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax
$h = fsockopen('www.portugal-a-programar.org', 80);

fwrite($h, "GET / HTTP/1.1\r\nHost: www.portugal-a-programar.org\r\nConnection: Close\r\n\r\n");
while(!feof($h)) $z .= fgets($h, 128);
fclose($h);

$z = explode("\r\n\r\n", $z, 2);
echo $z[0];

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

pessoal, qualquer programa que receba pacotes por http obviamente guarda os headers em algum lado, se nao nao funcionava.

Até o vosso browser vo-los dá de alguma forma, é questão de os procurarem bem

A ideia deste micro-snippet é poder ver os headers de forma rápida no conforto da shell. Sem rodeios nem complicações.

djthyrax... não arranjas nada mais complicado que isso?

na verdade basta pedir a pagina com os cabeçalhos e procurar os primeiros dois \n\n e aplicar um explode, isto se quiseres usar php. Mas isso é coisa para duas linhas de código, ou mesmo uma.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

$h = fsockopen('www.portugal-a-programar.org', 80);

fwrite($h, "GET / HTTP/1.1\r\nHost: www.portugal-a-programar.org\r\nConnection: Close\r\n\r\n");
while(!strstr($z, "\r\n\r\n")) $z .= fgets($h, 128);
fclose($h);
echo $z;


Versão "interactiva":

if($argc < 2) die('Usage: php '.$argv[0].' endereco');
$x = explode("/", str_replace("http://", '', $argv[1]), 2);
$x[1] = '/'.$x[1];

$h = fsockopen($x[0], 80);
fwrite($h, "GET ".$x[1]." HTTP/1.1\r\nHost: ".$x[0]."\r\nConnection: Close\r\n\r\n");
while(!strstr($z, "\r\n\r\n")) $z .= fgets($h, 128);
fclose($h);

echo str_replace("\r\n\r\n", '', $z);

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

ok... em php basta isto... não testei.

$page_pieces = explode("\n\n",file_get_contents($url));
echo $page_pieces[0];

Nop, o que separa headers do corpo do pacote são \r\n\r\n e não \n\n. E o file_get_contents() não retorna os headers.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade