前言
将本机的网络IP地址,从当地切换到你想要的地方,通过IP切换突破地理意义上的限制,例如你电脑上的IP地址是在重庆,你想你发布抖音的位置在山西,来达到互联网上的整活流量,只需要通过软件切换到当地的IP即可,由于我写完了客服还没有我把文档发给我,参数这一部分我展示不了
技术要点
主要采用SpringBoot搭建框架,主动发送HTTP请求,页面使用Swing将页面和他们的功能呈现出来即可。
SpringBoot后端发送功能代码模块
- 我这里使用太阳HTTP代理为列(注册和登录我就不重复说了),这里需要注意的是URL路径上的参数是什么意思,
2.编写一个参数发送urlParamReq参数发送类,
3,写一个模拟GET的请求,然后对其JSON格式解析,得到data中的数据返回即可
/**
* 获取太阳IP
* @param req
* @return
*/
@GetMapping(value = "/getip")
public R getZMProxyIp(@Valid UrlParamReq req){
//IP_URL是发送地址,req.getParams是路径上的参数
String url=IP_URL+req.getParams();
//restTemplate,发送http请求,String.class返回的类型
String result=this.restTemplate.getForObject(url,String.class);
//Hutuul工具包解析json格式
JSONObject entries = JSONUtil.parseObj(result);
{"code":0,"data":[{"ip":"182.204.180.102","port":"4331"}],"msg":"0","success":true}
//发送的格式,这样对其解析就可以拿到ip和端口了
if(entries.getInt("code")==0){
return R.okHasData(entries.getJSONArray("data"));
}else{
R r=R.build(AckCode.FAIL);
r.setMsg(entries.getStr("msg"));
return r;
}
}
4,将本机的IP添加到白名单中,不然无法使用,(我自己就在这里遇到一个坑,将SpringBoot项目布置到云服务器上后,查询的本机IP就是服务器的IP,添加了服务器的IP,但客户端的IP还没有添加进来,需要客户端通过cmd查询本机的IP在次添加进白名单才可以)
swing展示功能页面
1,Swing编写接受后端发出的IP和端口号,同样这里要写一个urlParamResp类接受IP和port
/**
* 获取代理IP地址,SERVER_ADDRESS这里的地址写Http://localhost:8080即可
*/
public static final String PROXY_IP_URL=SERVER_ADDRESS+"/getip";
/**
* 得到IP和port
* @return
*/
public static List<urlParamResp> findProxyIP(UrlParamReq req) throws Exception {
String url=PROXY_IP_URL+"?"+ req.getParams();
//这里采用HttpUtil发送Http请求,
String result=HttpUtil.createGet(url).execute().body();
JSONObject jsonObject = JSONUtil.parseObj(result);
if(jsonObject.getInt("code")==200){
List<urlParamResp> ret_data = jsonObject.getBeanList("data", urlParamResp.class);
return ret_data;
}else{
throw new Exception( jsonObject.getStr("msg"));
}
}
2,在swing中切换全局代理这个按钮绑定事件,在这个事件中使用JAVA操纵cmd修改注册表
try {
//更改代理的IP
String[] f_changeInterval = {"REG", "ADD", "HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "/v",
"ProxyServer", "/t", "REG_SZ", "/d", ipAndPort, "/f"};
//ipAndPort替换成自己的即可,用管理员执行cmd
Runtime.getRuntime().exec(f_changeInterval);
// 启用代理服务
String[] f_changeEnable = {"REG", "ADD", "HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "/v",
"ProxyEnable", "/t", "REG_DWORD", "/d", "1", "/f"};
Runtime.getRuntime().exec(f_changeEnable);
showInfo("信息","设定全局代理IP完成");
} catch (IOException e) {
showError("错误","设定全局代理IP失败");
throw new RuntimeException(e);
}
到这里一个最简单的IP切换就已经完成了,需要注意的是代理给的IP一般只有几分钟的有效时间,也可以申请长期的IP,且带宽一般都不高,提升带宽需要找客服