管理员

应用场景:

使用PC环境抓包时,每次连接wifi都手动代理都需要打开wifi设置界面,输入IP输入端口,感觉比较麻烦,因此找一个方法可以简化这个操作流程.

准备工具:

首先手机上需要安装第三方插件,插件下载地址为:
https://github.com/jpkrause/AndroidProxySetter/releases/download/v0.2.1/proxy-setter-emulator-0.2.1.apk

必须安装插件,否则无法执行.

测试结果:

由于本人机器只有一个 7.0 一个 8.0的,外加模拟器,测试运行结果如下:
安卓7.0测试可以使用
安卓8.0测试 第三方插件不兼容. 无法启动插件
雷电5.0测试 安装插件后,会导致各种APP停止运行,自身也无法运行.

其他版本的系统,若想使用,请先安装插件,安装好后,点击图标运行,如果能正常弹出 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");
}

如果你有多个工作环境,可以参照下面的图片自己添加 不同SSID下的 IP和密码

0_1542987240817_QQ截图20181123233247.png

警告声明:

脚本是个双刃剑, 本脚本的目的是为有抓包/测试需求的人提供便利,本人仅提供一些代码片段, 若使用者以此为基础进行二次编写,挪作他用,造成法律纠纷的,本帖作者,不负任何责任

相关连接:
https://www.autojs.org/topic/3177/ ----解决安卓7.0手机安装证书后依然无法抓某些APP请求的问题

最后由 DcrClub 编辑