关于 Java 应用程序网络代理问题

2021-12-23 14:21:18 +08:00
 zhongpingjing

宿主机开了 vpn ,可以访问 google

测试类

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class Test {

    public static void main(String[] args) throws IOException {
        URL url = new URL("https://www.google.com");
        URLConnection connection = url.openConnection();
        connection.connect();
        InputStream inputStream = connection.getInputStream();
        byte[] bytes = new byte[1024];
        while (inputStream.read(bytes) >= 0) {
            System.out.println(new String(bytes));
        }
    }
}

编译后执行

java Test

结果是能正常访问到 google ,但是在 shell 中 ping google 是没法通的

明明查资料,要给程序设置代理才能访问 google ,也就是下面这样才能访问到

java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=7890 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=7890 Test

java 程序是默认就会走本机的代理吗,不需要额外设置?

1867 次点击
所在节点    Java
7 条回复
AoEiuV020CN
2021-12-23 14:45:14 +08:00
没有复现,你的 vpn 如果是数据链路层的 vpn 的话是不需要配置代理的,
Kasumi20
2021-12-23 14:54:48 +08:00
VPN 代理 ICMP 流量吗?
wangyu17455
2021-12-23 14:58:38 +08:00
java 不默认走本地代理,vpn 和 http/socks 代理不能一概而论,你宿主机的 vpn 主动接管了流量所以你访问 google 是通的。
zhongpingjing
2021-12-24 10:37:51 +08:00
@Kasumi20 看了只代理了 http 跟 sock
zhongpingjing
2021-12-24 10:38:52 +08:00
@wangyu17455 en ,是 http/sock 代理
chengyiqun
2021-12-24 11:47:32 +08:00
就这么说吧, 和很多 steam 游戏一样, 默认不走 sock 和 http 代理.
如果你的 vpn 有虚拟网卡, 那么就是全局代理了.
可以用 SSTap-beta-setup-1.0.9.7(就用这个版本, 更新的版本就别用了)
![image.png]( https://tupian.li/images/2021/12/24/image.png)

sstap 规则
https://cleanery.lanzoup.com/i8Qznxxaxrg
密码:77ge
zhongpingjing
2021-12-24 17:10:15 +08:00
@chengyiqun 感谢回复,不过我不是要玩游戏哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823992

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX