Visitante gnoo Postado Abril 29, 2018 em 18:28 Compartilhar Postado Abril 29, 2018 em 18:28 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 Link para o comentário Compartilhar em outros sites More sharing options...
Visitante gnoo Postado Abril 29, 2018 em 21:30 Compartilhar Postado Abril 29, 2018 em 21:30 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 Link para o comentário Compartilhar em outros sites More sharing options...
Felipe.Silva Postado Abril 29, 2018 em 21:35 Compartilhar Postado Abril 29, 2018 em 21:35 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. Link para o comentário Compartilhar em outros sites More sharing options...
Visitante gnoo Postado Abril 29, 2018 em 21:44 Compartilhar Postado Abril 29, 2018 em 21:44 @Felipe.Silva Obrigado irmão, estou à dois dias de volta disto, tudo por causa de uma espaço... há coisa incríveis.... Link para o comentário Compartilhar em outros sites More sharing options...
Visitante gnoo Postado Abril 29, 2018 em 21:49 Compartilhar Postado Abril 29, 2018 em 21:49 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á??... Link para o comentário Compartilhar em outros sites More sharing options...
Felipe.Silva Postado Abril 29, 2018 em 21:55 Compartilhar Postado Abril 29, 2018 em 21:55 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. Link para o comentário Compartilhar em outros sites More sharing options...
Visitante gnoo Postado Abril 29, 2018 em 22:07 Compartilhar Postado Abril 29, 2018 em 22:07 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... Link para o comentário Compartilhar em outros sites More sharing options...
Visitante gnoo Postado Abril 30, 2018 em 15:06 Compartilhar Postado Abril 30, 2018 em 15:06 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.. Link para o comentário Compartilhar em outros sites More sharing options...
Visitante gnoo Postado Abril 30, 2018 em 15:10 Compartilhar Postado Abril 30, 2018 em 15:10 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ê... Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.