2012-06-03 115 views
5

Con el siguiente código, obtengo la clase de excepción EIdHTTPProtocolException con el mensaje 'HTTP/1.1 403 Prohibido'. svchostip.exe proceso (11172)¿Por qué recibo "403 Prohibido" cuando me conecto a whatismyip.com?

function GetInternetIP:string; 
var 
    IdHTTPMainUrl : TIdHTTP; 
begin 
    try 
    IdHTTPMainUrl := TIdHTTP.Create(nil); 
    IdHTTPMainUrl.Request.Host := 'http://www.whatismyip.com/automation/n09230945.asp'; 
    Result := idHTTPMainUrl.Get('http://automation.whatismyip.com/n09230945.asp'); 
    except 
    IdHTTPMainUrl.Free; 
    end; 
end; 
+2

Es un poco afortunado, de lo contrario TIdHTTP se filtraría. –

+2

Está configurando la propiedad 'Host' en algo que obviamente no es un nombre de host. No se supone que sea una URL completa. Te estás conectando a * automation.whatismyip.com *, así que úsalo también para la propiedad 'Host '. –

+2

Ni siquiera se supone que estés asignando el 'Request.Host' de forma manual. 'TIdHTTP' gestiona ese valor internamente. –

Respuesta

14

Es necesario configurar el agente de usuario, esto está documentado en WhatIsMyIP faq:

• Configure su agente de usuario del programa para Mozilla/5.0 (Windows NT 6.1 ; WOW64; rv: 12.0) Gecko/20100101 Firefox/12.0, esto mantendrá su programa de sea bloqueado por CloudFlare

también liberar la instancia debe TIdHTTP ser incondicional, solo lo estás liberando cuando se lanza una excepción. Utilice el manejo de excepciones, bueno, para manejar excepciones.

function GetInternetIP:string; 
var 
    IdHTTPMainUrl : TIdHTTP; 
begin 
    IdHTTPMainUrl := TIdHTTP.Create(nil); 
    try 
    IdHTTPMainUrl.Request.UserAgent := 
     'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'; 
    Result := idHTTPMainUrl.Get('http://automation.whatismyip.com/n09230945.asp'); 
    finally 
    IdHTTPMainUrl.Free; 
    end; 
end; 
+0

Gracias. ¡Funciona! –

+0

@Sergei - ¡De nada! –

+0

Tengo el mismo problema después de su Solución el nuevo error es 503 Servicio temporalmente inaceptable ... ¿Cómo fixx? – Hidden

Cuestiones relacionadas