如何检查 Java 是否正在使用已配置的代理服务器?
How to check if Java is using configured proxy server?
我在 运行 命令中设置了 -Dhttps.proxyHost=
,是否可以启用某种日志记录以查看它何时代理呼叫?我需要验证这是否有效。
我还通过 -Dhttp.nonProxyHosts=
将一些主机列入白名单,所以我想确保它没有代理这些主机。
1。使用 java.util.logging
使用以下内容创建 logging.properties
文件:
handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = ALL
sun.net.www.protocol.http.HttpURLConnection.level = FINEST
然后添加 -Djava.util.logging.config.file=/path/to/logging.properties
JVM 选项。
现在,只要通过代理建立 HTTPS 连接,您就会看到日志消息:
May 30, 2020 2:12:56 AM sun.net.www.protocol.http.HttpURLConnection plainConnect0
FINEST: ProxySelector Request for https://example.com/
May 30, 2020 2:12:56 AM sun.net.www.protocol.https.HttpsClient New
FINEST: Looking for HttpClient for URL https://example.com and proxy value of HTTP @ 127.0.0.1:443
May 30, 2020 2:12:56 AM sun.net.www.protocol.https.HttpsClient <init>
FINEST: Creating new HttpsClient with url:https://example.com and proxy:HTTP @ 127.0.0.1:443 with connect timeout:-1
May 30, 2020 2:12:56 AM sun.net.www.protocol.http.HttpURLConnection plainConnect0
FINEST: Proxy used: HTTP @ 127.0.0.1:443
2。另一种选择,假设您在 Linux,是跟踪所有 connect
系统调用:
$ sudo strace -f -p <PID> -e connect
使用 strace
附加到 Java 进程 <PID>
后,您将看到该进程连接到的所有地址。如果使用代理,会有代理的地址。
[pid 12345] connect(263, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
我在 运行 命令中设置了 -Dhttps.proxyHost=
,是否可以启用某种日志记录以查看它何时代理呼叫?我需要验证这是否有效。
我还通过 -Dhttp.nonProxyHosts=
将一些主机列入白名单,所以我想确保它没有代理这些主机。
1。使用 java.util.logging
使用以下内容创建 logging.properties
文件:
handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = ALL
sun.net.www.protocol.http.HttpURLConnection.level = FINEST
然后添加 -Djava.util.logging.config.file=/path/to/logging.properties
JVM 选项。
现在,只要通过代理建立 HTTPS 连接,您就会看到日志消息:
May 30, 2020 2:12:56 AM sun.net.www.protocol.http.HttpURLConnection plainConnect0
FINEST: ProxySelector Request for https://example.com/
May 30, 2020 2:12:56 AM sun.net.www.protocol.https.HttpsClient New
FINEST: Looking for HttpClient for URL https://example.com and proxy value of HTTP @ 127.0.0.1:443
May 30, 2020 2:12:56 AM sun.net.www.protocol.https.HttpsClient <init>
FINEST: Creating new HttpsClient with url:https://example.com and proxy:HTTP @ 127.0.0.1:443 with connect timeout:-1
May 30, 2020 2:12:56 AM sun.net.www.protocol.http.HttpURLConnection plainConnect0
FINEST: Proxy used: HTTP @ 127.0.0.1:443
2。另一种选择,假设您在 Linux,是跟踪所有 connect
系统调用:
$ sudo strace -f -p <PID> -e connect
使用 strace
附加到 Java 进程 <PID>
后,您将看到该进程连接到的所有地址。如果使用代理,会有代理的地址。
[pid 12345] connect(263, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)