Irei demonstrar 3 formas diferentes de se obter o conteudo de uma pagina
web usando shell-script , a primeira delas é usando o wget , seque o comando abaixo:
diretamente com o protocolo TCP , a sintaxe basica para fazer uma conexão é /dev/tcp/<host>/<porta>
como estamos fazendo um request http , e a porta padrão de servidores http é a 80 nosso
comando ficara da seguinte maneira:
da resposta recebida também serão viziveis na saida do comando.
Os comandos acima foram so um exemplo basico de como fazer um simples request http (GET).
É possivel definir os headers do request , por exemplo , user-agent,
cookies , fazer post request , entre outros vejam os exemplos abaixo:
Post request usando o comando curl:
Definindo "referer" usando o /dev/tcp
Os comandos wget e curl tem muitos parametros por isso não abordei todos eles
caso queira saber mais sobre a solução está ai abaixo:
por isso considero a melhor opção , mas não a mais pratica , a mais pratica
realmente é o comando curl.
Escrito por MMxM ;-)
web usando shell-script , a primeira delas é usando o wget , seque o comando abaixo:
Caso queira você pode guardar a saida do comando em uma variavel da seguinte maneira:$ wget localhost -O - -q
A segunda forma é usando o curl , é tão simples quanto o wget:$ body=$(wget google.com.br -O - -q)
A terceira forma é usando o /dev/tcp , é um arquivo do sistema que permite que você interaja$ curl localhost
diretamente com o protocolo TCP , a sintaxe basica para fazer uma conexão é /dev/tcp/<host>/<porta>
como estamos fazendo um request http , e a porta padrão de servidores http é a 80 nosso
comando ficara da seguinte maneira:
Diferente dos outros dois comandos vistos anteriormente , alem de ser exibido a source da pagina , os headers$ exec 5<>/dev/tcp/localhost/80
$ echo -e "GET / HTTP/1.0\n" >&5
$ cat <&5
da resposta recebida também serão viziveis na saida do comando.
Os comandos acima foram so um exemplo basico de como fazer um simples request http (GET).
É possivel definir os headers do request , por exemplo , user-agent,
cookies , fazer post request , entre outros vejam os exemplos abaixo:
Post request usando o comando curl:
caso queira upar um arquivo da maquina local é so colocar um @ seguido do nome do arquivo , exe:$ cat /var/www/exemplo.php
<? print_r($_POST); ?>
$ curl -F campo1=valor -F campo2=outro-valor localhost/exemplo.php
Array
(
[campo1] => valor
[campo2] => outro-valor
)
Definindo user-agent usando o wget:$ curl -F file=@/etc/issue -F enviar=sim site.yyy/upload.php
$ cat /var/www/teste1.php
<?php
print $_SERVER['HTTP_USER_AGENT']."\n";
?>
$ wget --user-agent="TESTE-AGENT" localhost/teste1.php -qO -
TESTE-AGENT
Definindo "referer" usando o /dev/tcp
$ request='GET /referer.php HTTP/1.0
> Host: localhost
> Accept: text/css,*/*;q=0.1
> Referer: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
>
> '
$ exec 5<>/dev/tcp/localhost/80
$ echo -e "$request" >&5
$ cat <&5
HTTP/1.1 200 OK
Date: Wed, 13 Nov 2013 22:32:02 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.9
Vary: Accept-Encoding
Content-Length: 24
Connection: close
Content-Type: text/html
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Os comandos wget e curl tem muitos parametros por isso não abordei todos eles
caso queira saber mais sobre a solução está ai abaixo:
Usando o /dev/tcp corretamente é possivel fazer qualquer tipo de request http$ man curl
$ man wget
por isso considero a melhor opção , mas não a mais pratica , a mais pratica
realmente é o comando curl.
Escrito por MMxM ;-)