为什么我得到“403 Forbidden”当我连接到whatismyip.com? [英] Why do I get "403 Forbidden" when I connect to whatismyip.com?

查看:198
本文介绍了为什么我得到“403 Forbidden”当我连接到whatismyip.com?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用以下代码,我收到异常类EIdHTTPProtocolException,消息为HTTP / 1.1 403 Forbidden。处理svchostip.exe(11172)

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

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;


推荐答案

您需要设置您的用户代理,在WhatIsMyIP 常见问题

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


•请将程序的用户代理设置为Mozilla / 5.0(Windows NT 6.1;
WOW64; rv:12.0)Gecko / 20100101 Firefox / 12.0,这将保持您的
程序被CloudFlare阻止

•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

同时释放 TIdHTTP 实例应该是无条件的,你当抛出异常时,它只会释放它。使用异常处理,好处处理异常。

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;

这篇关于为什么我得到“403 Forbidden”当我连接到whatismyip.com?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆