在工作中,大家可能需要对项目中的请求进行抓包,以查看和对比具体的网络信息。
众所周知,idea设置代理的方式有以下几种方式。
方式一、通过添加JVM参数 -Djava.net.useSystemProxies=true
前提:系统本机已经开启了代理,mac系统可以在设置-WIFI-已经连接的网络-点击详细信息-代理选项,确认代理已经正确配置:
在idea 中添加JVM参数:
然后填上: -Djava.net.useSystemProxies=true
重新启动项目就可以抓到包。
方式二、SpringBoot等项目在main函数中添加property
System.setProperty("http.proxyHost", "localhost");
System.setProperty("http.proxyPort", "9090");
System.setProperty("https.proxyHost", "localhost");
System.setProperty("https.proxyPort", "9090");
上述配置需要加在 SpringApplication.run(XXX.class, args); 前 。
方式三、通过设置idea级别代理
上述两种方式是针对JVM虚拟机的代理,不是整个idea的代理,如果需要下载一些jetbrains plugins,方式一不适用。 如何设置idea级别的代理?
路径:idea设置 - Appearance & Behavoir - System Settings - Http Proxy -Manual proxy configurations
填写上抓包工具的地址和端口,我这里是 本地的proxyman,所以填写 127.0.0.1,端口填写 9090。 此外可以点击 Check connection,输入一个地址,检查是否抓到
为什么抓不到包?
1、检查本地代理是否可以正常抓其他的包,如浏览器的;
2、检查地址和端口是否配置正确;
3、部分网络请求组件确实抓不到,如org.apache.http.client.HttpClient,这种时候可以在HttpClient发请求的时候添加:
HttpHost proxy = new HttpHost("localhost", 9090, "http");
RequestConfig config = RequestConfig.custom()
.setProxy(proxy)
.build();
HttpClient client = HttpClients.custom()
.setDefaultRequestConfig(config)
.build();
这个时候HttpClient发的请求就可以抓到了,其他的网络请求工具应该也有类似的配置,不再赘述。