使用Java时检测到代理

时间:2018-10-30 23:56:42

标签: java

我检查了此页面,并获得了一些有用的代码,用于在连接到网页时使用Java代码中的代理。

我可以确认类似whatsmyip的页面确实告诉我代理正在工作-它正在显示代理ip。问题是我要用Java代码访问的页面以某种方式检测到我的真实IP并阻止了内容。我确实知道它是如何做到的(标题,返回ip等),我不知道如何绕过它。

也许另一件有趣的事情是,使用最知名的在线代理站点之一,此页面可以正常工作-它显示内容。现在更有趣的是,我尝试将这些站点ip用作我的程序中的代理,但是在那里没有用-真正的ip被检测到了,这真的很奇怪。

编辑:这是我的新代码:

System.setProperty("java.net.useSystemProxies","false");
    System.setProperty("http.proxyHost", "94.230.208.147");                                      
    System.setProperty("http.proxyPort", "9001");   
    System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");    

    System.setProperty("https.proxyHost", "94.230.208.147");                                      
    System.setProperty("https.proxyPort", "9001");   
    System.setProperty("https.nonProxyHosts", "localhost|127.0.0.1");

我可以确认https://whatsmyip.com/没有被该代理欺骗,并且可以看到我的真实IP。我忘记包括什么?

1 个答案:

答案 0 :(得分:1)

在代码末尾添加它:

System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");

这表示无需通过代理即可访问的主机。通常,这定义了内部主机。该属性的值是主机列表,以“ |”分隔字符。