Ir para conteúdo
  • Cadastre-se
Entre para seguir isso  
gnoo

HTTP Requests

Posts Recomendados

Saudações,

 

estou a tentar fazer um script em python para detectar servidores web ativos mas estou com dificuldades em fazer as requisições, a minha dificuldade está a ser com o metodo GET, eu não tenho bem a certeza mas acho que estou a falhar na versão do protocolo, ou então é o servidor que está bloquear essa requisição, segue o script:

from socket import *


sock = socket(AF_INET, SOCK_STREAM)

sock.connect_ex(("google.com", 80))

sock.send(b" GET / HTTP/1.0\r\n\r\n")

resposta = sock.recv(1024)

print(resposta.decode())

a resposta é:

Citar

HTTP/1.0 400 Bad Request
Content-Length: 54
Content-Type: text/html; charset=UTF-8
Date: Sun, 29 Apr 2018 18:23:52 GMT

<html><title>Error 400 (Bad Request)!!1</title></html>

  Noutros servidores é possivel fazer essa requisição, mediante o ajuste da versão do protocolo, até agora só encontrei um...

Estou a fazer alguma coisa mal ??? 

 

Cumprimentos

Obrigado

 

Editado por gnoo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se fizer com telnet  a resposta é positiva 

Citar

telnet www.google.com 80
Trying 216.58.201.196...
Connected to www.google.com.
Escape character is '^]'.
GET / HTTP/1.1

HTTP/1.1 200 OK
Date: Sun, 29 Apr 2018 21:28:00 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
 

Não percebo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro 400 ocorre quando você manda uma requisição para o servidor que ele não entendeu. Ou seja, já fica óbvio que o erro está no pacote que você enviou.
Logo no início da string tem um espaço, retire ele que irá funcionar normalmente.


2142522768_Capturadetelade2018-04-2918-32-52.png.fdc817d2ce18d03df3f9abb027689ed6.png

 

  • Agradecer 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Felipe.Silva Obrigado irmão, estou à dois dias de volta disto, tudo por causa de uma espaço... há coisa incríveis.... :P  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas há aqui um servidor que tenho estado a tentar e para ele o espaço não importa muito ele aceita a requisição... Porquê que será??... 

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, gnoo disse:

Mas há aqui um servidor que tenho estado a tentar e para ele o espaço não importa muito ele aceita a requisição... Porquê que será??... 

Bom, cada servidor tem uma implementação de código diferente para parsear o request.
Por exemplo, o servidor do Google aceita que você use apenas \n para separar cada campo do header.
Mas alguns outros servidores exigem a sequência \r\n.

Por isso é bom sempre seguir o padrão de cada especificação. A especificação é a única garantia de que vai funcionar em qualquer implementação.
Um espaço a mais ou caractere a menos pode funcionar em servidor X mas dar erro em servidor Y.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois há aqui um outro servidor que não vai com espaço nem sem espaço já troquei a versão do protocolo, e nada... tenho que me aprofundar mais nisto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já percebi mais ou menos como funciona... Nos métodos GET e HEAD ( foram os que eu experimentei ), deve ser identificado o  tipo de método a usar como o protocolo e a sua versão, e em seguida deve ser identificado o Host. Assim os resultados são mais consistentes..

 

Captura de ecrã_2018-04-30_15-57-07.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto em python de uma forma grosseira deve ficar mais ou menos assim 

ainda tentei enviar numa string só mas os resultados não são constantes não sei porquê...

 

Captura de ecrã_2018-04-30_15-58-09.png

Captura de ecrã_2018-04-30_15-58-26.png

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×