应用场景:
使用PC环境抓包时,每次连接wifi都手动代理都需要打开wifi设置界面,输入IP输入端口,感觉比较麻烦,因此找一个方法可以简化这个操作流程.
准备工具:
首先手机上需要安装第三方插件,插件下载地址为:
必须安装插件,否则无法执行.
测试结果:
由于本人机器只有一个 7.0 一个 8.0的,外加模拟器,测试运行结果如下:
安卓7.0测试可以使用
安卓8.0测试 第三方插件不兼容. 无法启动插件
雷电5.0测试 安装插件后,会导致各种APP停止运行,自身也无法运行.
其他版本的系统,若想使用雷电模拟器链接代理ip,请先安装插件,安装好后,点击图标运行,如果能正常弹出 toast提示 则说明插件可以运行
以下是代码部分:
/**
* 一键设置wifi代理 需要root权限运行
* 基于开源项目: https://github.com/jpkrause/AndroidProxySetter
* 脚本运行需要第三方插件都支持
* 插件下载地址: https://github.com/jpkrause/AndroidProxySetter/releases/download/v0.2.1/proxy-setter-emulator-0.2.1.apk
*
* 插件测试在安卓7.0设备上可以运行,运行时需要先连接wifi网络
*
* 插件在安卓8.0上测试 不兼容,因此安卓8.0无法使用此脚本
* 雷电模拟器安卓5.0测试 不兼容,因此模拟器无法使用
*/
importPackage(java.lang);
importPackage(android.net.wifi);
importPackage(android.content);
var wifiPassword = ""; //设置已经连接的wifi密码
var remoteIP = ""; //代理IP
var proxyPort = "8888"; //代理端口
var wifiManager = context.getSystemService(Context.WIFI_SERVICE);
if (wifiManager.isWifiEnabled()) {
let wifiSSID = wifiManager.getConnectionInfo().getSSID();
let configurationList = wifiManager.getConfiguredNetworks();
let cur = wifiManager.getConnectionInfo().getNetworkId();
for (let i = 0; i < configurationList.size(); ++i) {
let wifiConfiguration = configurationList.get(i);
if (wifiConfiguration.networkId == cur)
configuration = wifiConfiguration;
}
let clazz = Class.forName("android.net.wifi.WifiConfiguration");
let method = clazz.getMethod("getHttpProxy");
let proxyStatus = method.invoke(configuration);
// log(proxyStatus);
if (proxyStatus == "[ProxyProperties.mHost == null]" || !proxyStatus) {
shell("am start -n tk.elevenk.proxysetter/.MainActivity -e host "+remoteIP+" -e port "+proxyPort+" -e ssid "+wifiSSID+" -e key "+wifiPassword, true);
} else {
shell("am start -n tk.elevenk.proxysetter/.MainActivity -e ssid "+wifiSSID+" -e key "+wifiPassword+" -e clear true", true);
}
} else {
toast("请先连接WIFI");
}
如果你有多个工作环境雷电模拟器链接代理ip,可以参照下面的图片自己添加 不同SSID下的 IP和密码
评论留言