Why do I get “403 Forbidden” when I connect to whatismyip.com?

后端 未结 1 683
小蘑菇
小蘑菇 2021-01-05 21:49

With the following code, I get exception class EIdHTTPProtocolException with message \'HTTP/1.1 403 Forbidden\'. Process svchostip.exe (11172)

function GetIn         


        
相关标签:
1条回答
  • 2021-01-05 22:46

    You need to set your user agent, this is documented in WhatIsMyIP faq:

    •Please set your program's user agent to Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0 , this will keep your program from being blocked by CloudFlare

    Also freeing the TIdHTTP instance should be unconditional, you're only freeing it when an exception is thrown. Use exception handling, well, to handle exceptions.

    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 讨论(0)
提交回复
热议问题