Acredito que você está entendendo mal o objetivo do arquivo hosts.txt
.
Se tudo o que importa é o TL; DR (longo demais; não leu), vá até a parte inferior da resposta. O que se segue é uma explicação do que está acontecendo, para ajudá-lo a entender por que você está obtendo os resultados que está obtendo.
hosts.txt
(geralmente /etc/hosts
em sistemas semelhantes a Unix) fornece um mapeamento entre um nome de host e um endereço IP. Em geral, o resolvedor de nomes de sistema é configurado para preferir hosts.txt
entradas sobre DNS, de modo que hosts.txt
possa ser usado como uma substituição de DNS. Isso é útil principalmente nos casos em que nomes locais não existem no DNS, mas você simplesmente não possui hosts suficientes em sua rede para garantir a configuração de um servidor DNS autoritário totalmente local com tudo o que isso implica.
No entanto, a navegação na Web moderna depende muito mais do que apenas o nome para o mapeamento de endereços IP.
O processo típico é semelhante a:
- O usuário insere um URL no campo de endereço do navegador ou, de outro modo, aciona uma solicitação da web
- O navegador pesquisa o nome do host da URL, para um endereço IP e se conecta a esse endereço IP
- O navegador configura uma sessão HTTPS, se a URL for uma URL
https://
- O navegador é interrompido se o certificado apresentado não corresponder ao nome do host na URL
- O navegador informa ao servidor da Web remoto para fornecer o caminho
/something/whatever
do nome do host a partir do URL - O servidor da Web remoto responde com o recurso solicitado ou, normalmente, um erro se a solicitação não puder ser atendida por algum motivo
- O navegador interpreta e exibe ou age sobre os dados recebidos do servidor da web remoto
- Se os dados recebidos forem um redirecionamento, o processo começa na etapa 1 com esse URL
Ao editar hosts.txt
, você altera somente o que acontece na etapa 2 acima. A navegação na Web é muito mais complexa do que apenas uma pesquisa de nomes!
Observe também que os navegadores da Web às vezes implementam a própria sua função de pesquisa de nomes, em vez de descarregar para o resolvedor fornecido pelo sistema operacional. Nesse caso, mesmo o passo 2 não necessariamente lhe dará o resultado desejado, porque ele pode muito bem seguir o caminho de delegação de nome normal da raiz do DNS, para que você obtenha a mesma resposta que faria de outra forma; Nesse caso, hosts.txt
nunca é consultado!
Notavelmente, o navegador ainda estará esperando um certificado para o nome do host específico na URL na etapa 3; e informará ao servidor da Web remoto o nome do host que você forneceu na etapa 4.
Como é improvável que os servidores da web do Google sejam configurados para veicular www.yahoo.com
, seja por HTTP ou HTTPS, isso não ocorrerá mais tarde entre as etapas 4 e 5 (o servidor da Web remoto não pode fornecer o recurso solicitado).
Eu não tenho uma boa explicação para por que você está recebendo um tempo limite ao invés de uma resposta de erro do servidor web, mas o meio de falha é em grande parte com o servidor remoto, então eu suspeito que esteja bem dentro tem o direito de não responder de forma alguma quando questionado sobre um host que simplesmente não conhece.
E, claro, se você está apenas experimentando, não há necessidade de usar o Yahoo ou o Google. Em vez disso, há endereços IP da Internet e nomes de host especificamente reservados, por exemplo, para fins de documentação que são bons para isso. Por exemplo, você pode usar 192.0.2.100
para o endereço IP e test.example.com
para o nome do host, pois nenhum deles pertence a ninguém em particular. Isso, ou RFC 1918 space (10.0.0.0 a 10.255.255.255, 172.16.0.0 a 172.31.255.255 ou 192.168.0.0 até 192.168.255.255), mas você ainda desejaria um nome de domínio correspondente, para o qual aqueles reservados fossem bons.
TL; DR:
Se você quiser ver que sua entrada hosts.txt
está fazendo o que deveria, abra um prompt de comando e emita o comando ping -n 1 www.yahoo.com
(no seu caso). Ele deve responder com o endereço IP que você configurou. O -n 1
faz com que apenas um único pedido de eco seja enviado, porque tudo o que realmente nos interessa são os resultados da pesquisa de nomes.
Eu preferiria nslookup www.yahoo.com
, mas aparentemente no Windows nslookup
não olha para hosts.txt
. (No Linux, isso geralmente acontece, porque ele pede ao resolvedor do sistema e o resolvedor de sistema é normalmente configurado para consultar o arquivo hosts; se você quiser uma pesquisa de DNS puro no Linux, normalmente usaria host
ou dig
.)