分类
Java 编程

JAVA程序通过代理访问网络

指定 Java 程序的代理服务器地址和端口有两种指定方式:

1.通过 命令行参数 指定

如果只需要考虑代理 HTTP 协议请求,只需添加如下命令行参数:

-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080

想要 HTTP 和 HTTPS 协议的请求都通过代理访问网络,可以追加上:

-Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1080

最终填写的值为:

-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1080

2.在程序中使用System.setProperty(String, String)

同样很简单,这里直接上代码:

String proxyHost = "127.0.0.1";
String proxyPort = "1080";

System.setProperty("http.proxyHost", proxyHost);
System.setProperty("http.proxyPort", proxyPort);

// 对https也开启代理
System.setProperty("https.proxyHost", proxyHost);
System.setProperty("https.proxyPort", proxyPort);

推荐使用第一种方案,通过VM Option 的方式,对代码没有任何侵入,绿色环保。

分类
Linux 笔记

SSH Socket 代理

前几天发下shadowsocks不能用了,猜测是“两会”期间加强了GFW。我用的是亚玛逊云vps,虽然shadowsocks不能使用,但ssh可以正常连接。于是使用ssh隧道开启socks代理。

ssh -i LightsailDefaultKey-us-east-1.pem -N -f -C -D 0.0.0.0:1080 用户名@主机ip

参数说明:

-q 静默运行
-N 是不执行远端命令
-f 后台运行
-C 压缩
-i ssh验证密钥

然后把这段命令加入启动脚本即可。

连接ssh我使用的是密钥验证,如果使用密码验证,加入启动脚本是无效的,因为ssh自带参数不能输入密码。使用sshpass可以做到。

安装sshpass:

apt install sshpass

sshpass命令使用很简单,sshpass -p 密码,后面接着原来ssh连接命令就行了:

sshpass -p 密码 ssh -i LightsailDefaultKey-us-east-1.pem -N -f -C -D 0.0.0.0:1080 用户名@主机ip

命令启动成功后就在本地打开了一个socks5代理,端口是1080。然后使用客户端代理配置,是可以访问google、facebook的。