Acessando a subpágina do site por IP

2

Estou escrevendo um aplicativo php que usa o CURL para extrair dados de sites. Mas o tempo que leva para carregar um site com o curl é muito, muito lento. Muito mais lento do que o tempo que leva para carregá-lo no Chrome, mesmo que o Chrome carregue muitas outras coisas, como planilhas e imagens, enquanto o aplicativo php não funciona.

De qualquer forma, eu li que o curl pode ter problemas com a pesquisa de DNS, então o acesso por IP pode ser muito mais rápido.

Mas não sei como fazer isso.

Vamos pegar no Google um exemplo. Eu posso abrir o meu prompt de comandos e fazer "ping www.google.com". Responde com:

Pinging www.google.com [74.125.232.114] with 32 bytes of data...

Assim, posso usar esse endereço IP, o que funciona, mas e se eu quiser acessar, por exemplo: www.google.com/doodles

Se eu tentar entrar nesse endereço quando o ping indicar que ele não encontrou o host, e http://74.125.232.114/doodles também não funciona.

(Error: Not Found The requested URL /doodles was not found on this server.)

Então, como eu acesso isso por IP?

    
por Clox 11.06.2014 / 15:48

3 respostas

2

Você está tentando acessar sites baseados em VirtualHost por IP. O problema é que o curl não é o nome do host que está tentando acessar no servidor da Web, portanto, o servidor da Web não sabe qual página deve ser exibida (o google.com também pode hospedar o gmail.com, mas não sabe o que dar-lhe porque a onda não pergunta).

Para permitir que o curl use um nome de host, você pode modificar o arquivo /etc/hosts com as seguintes informações:

74.125.232.114 google.com

(No Windows, você pode encontrar este arquivo em C:\Windows\System32\Drivers\etc\hosts )

Se você deixar o curl fazer uma solicitação para example.com, seu sistema operacional encontrará example.com no arquivo /etc/hosts e nem mesmo tentar uma pesquisa de DNS, o que seria muito mais rápido.

Dito isto, seria muito melhor se você corrigir suas configurações de DNS. Você já tentou modificar o arquivo /etc/resolv.conf com os servidores de nome do seu provedor (ou o DNS público do Google)

nameserver 8.8.8.8
nameserver 8.8.4.4
    
por 11.06.2014 / 15:56
1

Se o tempo de resposta do DNS for tão grande, você deve corrigir as configurações de DNS na sua rede. Dê uma olhada em /etc/resolv.conf e verifique se o (s) servidor (es) de nomes listado (s) ainda estão disponíveis. Caso contrário, adicione um servidor DNS em funcionamento (no topo). Você poderia usar o serviço DNS do google, por exemplo:

nameserver 8.8.8.8

Se você precisar, por algum motivo, dos servidores DNS lentos, isso pode ser porque seu aplicativo está usando nomes DNS internos que não estão disponíveis na Internet, então você ainda pode modificar seu arquivo /etc/hosts e adicionar o nome do host para 74.125.232.114 lá:

74.125.232.114 www.google.com

Tendo configurações comuns em /etc/nsswitch.conf , o sistema usaria o /etc/hosts antes de executar uma solicitação de DNS.

    
por 11.06.2014 / 15:52
0

use -L para ir com o redirecionamento (como curl www.google.com diz que a página foi movida),

e foi mencionado que, ao fazer isso via IP, o cabeçalho do host não é preenchido.

Bem, então, que tal especificar o cabeçalho do host?

curl -L -H "Host: www.google.com" 173.194.34.115/doodles

    
por 11.06.2014 / 19:07