通过 HTTP 代理查看真实 IP

通过 HTTP 代理查看真实 IP

我在 Java 应用程序中设置 HTTP 代理。在该应用程序中,我通过查询来测试代理是否正常工作http://api.ipify.org/。但是,我得到的是我的真实 IP 地址,而不是代理的 IP 地址。我用 Wireshark 检查了一下,我的电脑将 http 请求发送到代理,然后代理将我的真实 IP 地址返回给我。我想知道这是怎么可能的。我还想知道是否有办法在不查询 api 的情况下检查此行为。谢谢!

答案1

正如您所发现的,发送了一个名为的标题:X-转发,其中包含您的原始IP。

可以删除该请求标头或对其进行自定义,如果您尝试删除它,则无论如何代理都可能会将其附加到您的手中。这里有一篇有趣的文章,如果您还没有看过,可能会有所帮助。Java 的 HTTP 请求,添加标头和代理信息。另一个选择可能是寻找不同的代理提供商。

您可以使用另一种方法来检查代理是否正常工作:InetAddress.isReachable(),您可以检查任何网站(例如 Google.com)或互联网上的自定义服务器的响应。除非您尝试验证代理 IP,否则您仍然可以设置自己的验证服务器,即使它是一些免费主机。InetAddress.isReachable 可能存在一些缺点,如下所述:在很多情况下,“isReachable”方法对我来说不值得使用。

这看起来与您的问题最相关:如何检查 Java 中的代理是否正常工作?我还想象你正在尝试做类似的事情,例如检查代理列表,而不是使用付费服务。这取决于该软件是否只适合你,还是会发布和共享。如果只有你一个人,那么购买一个可以让你匿名的代理可能是值得的。

答案2

我想我刚刚才发现这里发生了什么。代理似乎使用了 X-Forwarded-For HTTP 标志。请参阅http://en.wikipedia.org/wiki/X-Forwarded-For。所以我想唯一能真正确定的方法是查询 API 并查看返回的内容。

相关内容