注册时间
最后登录
新帖
发布在 一般交流 阅读更多

绝对路径 或者 url

发布在 脚本发布 阅读更多

应用场景:

使用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请求的问题

发布在 脚本发布 阅读更多

一般用钉钉打卡的同学,想必手机都已经root了吧,为了模拟定位,不得不root

所以这个脚本也是需要root权限才能启动,否则 毫无动作变化.

这个intent可以大大减少 代码量以及等待时间. 相对说的是 使用 地理位置直接点击确定打卡的那部分人, 刷脸打卡的,还需要自己手动拍照.

点击确定就能打卡的, 自己编写后面的 代码.我们是刷脸打卡, 帮不了你们了

//需要用到root权限 否则打不开
var TimeStamp = Math.round(new Date());
var corpId = ""; //自己想办法获取公司的ID   ding开头的一串码
shell("am start -n com.alibaba.android.rimet/com.alibaba.lightapp.runtime.activity.CommonWebViewActivity"+
    " -a android.intent.action.VIEW"+
    " --es url 'https://attend.dingtalk.com/attend/index.html?swtrace=oa_cloud_attendance_onduty_remind&showmenu=false&_progress=false&_from=oa&corpId="+corpId+"&_biz=onDuty_remind'"+
    " --el navi_to_open_mini_app "+TimeStamp+
    " --es title '考勤打卡'", true);
发布在 一般交流 阅读更多

屏幕是否亮着 还是能判断的

发布在 一般交流 阅读更多

本帖使用Charles 4.2.7为例,进行说明,其他抓包软件同理.

至于小白用户,不会用抓包软件抓包的,本帖不进行讲解.请自行百度, 关键词: 如何使用抓包软件进行抓包

已经会使用PC端抓包软件进行连接手机,并且会抓包的,但是某些app抓包时无法联网,抓包软件提示 unknown的请继续往下看.

提示unknown或者抓包乱码的问题,一般都是证书安装的有问题.

重要提示: 本方法需要手机已经root,若未root的,就抛弃安卓7.0+系统 换个低版本的安卓系统进行抓包.

方法步骤:

手机连接Charles的代理以后,打开浏览器下载charles的证书!

http://chls.pro/ssl

下载好以后,不要着急安装,这时候直接安装是 用户证书, 我们要把这个证书安装成系统证书才可以.

把证书发送到电脑上使用 openssl 工具来计算Hash值,进行重命名证书文件

使用命令: openssl x509 -subject_hash_old -in <Certificate_File>
其中<Certificate_File> 替换成证书文件全称
如下图,我电脑的证书 Hash值为 357802a9

0_1542303550925_QQ20181116-012530.png

使用上面的那个值把证书文件重命名为 357802a9.0
注意证书的命名规则为 HashCode.Number
如果证书Hash值相同,则Number值+1 默认为0

证书重命名后,发给手机,将证书移动到/system/etc/security/cacerts/ 目录中
此处需要给 / 目录读写权限,root后才能操作

安装好以后如图:
0_1542304574650_QQ20181116-015517.png

注意:每台电脑的抓包工具对应一个证书文件,如果换其他电脑抓包了,需要重新安装证书,才行.

其他抓包工具的证书操作方式与上方的步骤一样. 操作完成后,第三方证书,就安装为系统证书了.

查看方式:
设置-->安全和隐私-->更多安全设置-->受信任的凭据 根据证书名称首字母排序,自己查看,有开关按钮可以控制是否启用该证书.

openssl工具下载:

MAC_OS系统本身自带.无需下载.
Windows系统 下载地址: http://bcn.bathome.net/tool/1.0.1c/openssl.exe
没电脑的自己想办法下载支持安卓命令行的 openssl 工具

Charles下载地址:
https://www.charlesproxy.com/download/

Charles破解补丁生成地址:
https://www.zzzmode.com/mytools/charles/
补丁使用方法,页面有说明

发布在 教程与示例 阅读更多

将一个文件夹压缩成一个zip包,可应用于项目文件夹打包成zip, 文件夹过滤了目录中的空文件夹,因此,空文件夹不会被打包到zip包中.
由于本人JS知识有限,JAVA也不懂, 导致该函数, 打包大型文件时, 非常慢,性能低下. 如果@admin 有好的方法, 可以发一下, 谢谢.

importClass(java.io.File);
importClass(android.net.Uri);
importClass(java.lang.System);
importClass(java.io.FileInputStream);
importClass(java.io.FileOutputStream);
importClass(java.io.OutputStream);
importClass(java.util.zip.ZipEntry);
importClass(java.util.zip.ZipOutputStream);

var srcPath = "/sdcard/脚本/";
var zipFilePath = "/sdcard/autoJS.zip"

dirToZip(srcPath, zipFilePath);

/**
 * 将一个文件夹压缩成zip包 
 * @param {string} srcDir 要压缩的文件夹(绝对路径)
 * @param {string} out 压缩后输出的zip文件(绝对路径)
 */
function dirToZip(srcDir, out) {
    var zipPath = new FileOutputStream(new File(out));
    var path = new File(srcDir);
    var srcDirParent = path.getParent();
    var start = System.currentTimeMillis();
    var zos = null ;
    try {
        zos = new ZipOutputStream(zipPath);
        var sourceFile = new File(srcDir);
        compress(sourceFile, zos, sourceFile.getName());
        var end = System.currentTimeMillis();
        log("压缩完成,耗时:" + (end - start) +" ms");
    } catch (e) {
        throw ("zip error from ZipUtils"+e);
    } finally {
        if(zos != null){
            try {
                zos.close();
            } catch (e) {
                log(e);
            }
        }
    }
    function compress(sourceFile, zos, name) {
        if(files.isFile(sourceFile)){
            zos.putNextEntry(new ZipEntry(name));
            var len;
            var put = new FileInputStream(sourceFile);
            while ((len = put.read()) != -1){
                zos.write(len);
            }
            zos.closeEntry();
            put.close();
        } else {
            var listFiles = getListFilePath(sourceFile);
            for (let i in listFiles) {
                var fileName = new File(listFiles[i]);
                compress(listFiles[i], zos, fileName.getParent().split(srcDirParent)[1] + "/" + fileName.getName());
            }
        }
    }
    function getListFilePath(i) {
        i = i.toString();
        function r(i) {
            var e = files.listDir(i);
            for (var s in e) {
                if ("/" == i.charAt(i.length - 1)) var a = i + e[s]; else var a = i + "/" + e[s];
                files.isDir(a) ? r(a) : t.push(a);
            }
        }
        var t = [];
        return r(i), t;
    }
}
发布在 一般交流 阅读更多

@烈日千阳 环境没装好吧...java环境

发布在 一般交流 阅读更多

@13973165909 看日志是在 帮助->开发者选项->console 里面

发布在 脚本需求 阅读更多

哦 ...微信公众号就算了~


与 Auto.js 的连接断开,我们正在尝试重连,请耐心等待