如何检查Java是否正在使用配置的代理服务器?

flybonzai:

-Dhttps.proxyHost=在run命令中有设置,是否可以启用某种日志记录来查看何时代理呼叫?我需要验证这是否有效。

我也将许多主机列入了白名单,-Dhttp.nonProxyHosts=因此我想确保它没有代理这些主机

apangin:

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.propertiesJVM选项。

现在,通过代理建立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

使用附加到Java进程<PID>strace,您将看到该进程连接到的所有地址。如果使用代理,将有一个代理地址。

[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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章