DcrClub 发布的最佳帖子
发布在 教程与示例 阅读更多
/**
 * 脚本运行环境,autojs版本不要低于3.0,安卓版本不要低于 5.0,低于7.0的手机要root
 * 
 * 自动回赞,别人给自己点过几次赞,则回点几次赞.
 */
auto.waitFor();
if(!requestScreenCapture()){
    alert("请求截图失败\n程序结束");
    exit();
}

events.on("exit", function(){
    if (device.sdkInt < 24) {
        ra.exit();
    }
});
// var MyQQ = "289986635";

var MyQQ = rawInput("请输入您的QQ号码:");

if (device.sdkInt < 24) {
    var ra = new RootAutomator();
}

app.startActivity({
    data:"mqqapi://card/show_pslcard?&uin="+MyQQ
});

descEndsWith("次赞").findOne().click();
waitForActivity("com.tencent.mobileqq.activity.VisitorsActivity");
sleep(500);
while(true) {
    if (device.sdkInt < 24) {
        ra.swipe(device.width/2, device.height*0.43, device.width/2, device.height*0.8, 300); sleep(350);
    } else {
        swipe(device.width/2, device.height*0.43, device.width/2, device.height*0.8, 300); sleep(350);
    }
    sleep(3000);
    var img = captureScreen();
    var obj = textEndsWith("次").boundsInside(5,5,device.width-10,device.height-10).find();
    var loopTimes = obj.size();
    for (let i = 0; i < loopTimes; i++) {
        let Btn = desc("赞").find().get(i).bounds();
        let leftX = Btn.left;
        let topY = Btn.top;
        let w = Btn.right - leftX;
        let h = Btn.bottom - topY;

        var p = findColorEquals(img, -15550475, leftX, topY, w, h);
        if (p) {
            continue;
        }
        var counts = obj.get(i).text().replace(/[^0-9]/ig,"");
        for (let i = 0; i < counts; i++) {
            let X = Btn.centerX();
            let Y = Btn.centerY();
            if (device.sdkInt < 24) {
                ra.tap(X,Y);
            } else {
                click(X,Y);
            }
        }
    }
    sleep(10*1000);
}
发布在 教程与示例 阅读更多

收集了一些系统设置界面的Intent跳转,只收集了不传值,可直接调用一些参数

var intent = new Intent();
// vpnIntent.setAction("android.net.vpn.SETTINGS");
intent.setAction("android.settings.ACCESSIBILITY_SETTINGS"); //辅助功能
intent.setAction("android.settings.ADD_ACCOUNT_SETTINGS"); //添加账户
intent.setAction("android.settings.AIRPLANE_MODE_SETTINGS"); //系统设置首页
intent.setAction("android.settings.APN_SETTINGS"); //APN设置
intent.setAction("android.settings.APPLICATION_SETTINGS"); //应用管理
intent.setAction("android.settings.BATTERY_SAVER_SETTINGS"); //节电助手
intent.setAction("android.settings.BLUETOOTH_SETTINGS"); //蓝牙
intent.setAction("android.settings.CAPTIONING_SETTINGS"); //字幕
intent.setAction("android.settings.CAST_SETTINGS"); //无线显示
intent.setAction("android.settings.DATA_ROAMING_SETTINGS"); //移动网络
intent.setAction("android.settings.DATE_SETTINGS"); //日期和时间设置
intent.setAction("android.settings.DEVICE_INFO_SETTINGS"); //关于手机
intent.setAction("android.settings.DISPLAY_SETTINGS"); //显示设置
intent.setAction("android.settings.DREAM_SETTINGS"); //互动屏保设置
intent.setAction("android.settings.HARD_KEYBOARD_SETTINGS"); //实体键盘
intent.setAction("android.settings.HOME_SETTINGS"); //应用权限,默认应用设置,特殊权限
intent.setAction("android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS"); //忽略电池优化设置
intent.setAction("android.settings.INPUT_METHOD_SETTINGS"); //可用虚拟键盘设置
intent.setAction("android.settings.INPUT_METHOD_SUBTYPE_SETTINGS"); //安卓键盘语言设置(AOSP)
intent.setAction("android.settings.INTERNAL_STORAGE_SETTINGS"); //内存和存储
intent.setAction("android.settings.LOCALE_SETTINGS"); //语言偏好设置
intent.setAction("android.settings.LOCATION_SOURCE_SETTINGS"); //定位服务设置
intent.setAction("android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS"); //所有应用
intent.setAction("android.settings.MANAGE_APPLICATIONS_SETTINGS"); //应用管理
intent.setAction("android.settings.MANAGE_DEFAULT_APPS_SETTINGS"); //与ACTION_HOME_SETTINGS相同
intent.setAction("android.settings.action.MANAGE_OVERLAY_PERMISSION"); //在其他应用上层显示,悬浮窗
intent.setAction("android.settings.MANAGE_UNKNOWN_APP_SOURCES"); //安装未知应用 安卓8.0
intent.setAction("android.settings.action.MANAGE_WRITE_SETTINGS"); //可修改系统设置 权限
intent.setAction("android.settings.MEMORY_CARD_SETTINGS"); //内存与存储
intent.setAction("android.settings.NETWORK_OPERATOR_SETTINGS"); //可用网络选择
intent.setAction("android.settings.NFCSHARING_SETTINGS"); //NFC设置
intent.setAction("android.settings.NFC_SETTINGS"); //网络中的 更多设置
intent.setAction("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"); //通知权限设置
intent.setAction("android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS"); //勿扰权限设置
intent.setAction("android.settings.ACTION_PRINT_SETTINGS"); //打印服务设置
intent.setAction("android.settings.PRIVACY_SETTINGS"); //备份和重置
intent.setAction("android.settings.SECURITY_SETTINGS"); //安全设置
intent.setAction("android.settings.SHOW_REGULATORY_INFO"); //监管信息
intent.setAction("android.settings.SOUND_SETTINGS"); //声音设置
intent.setAction("android.settings.SYNC_SETTINGS"); //添加账户设置
intent.setAction("android.settings.USAGE_ACCESS_SETTINGS"); //有权查看使用情况的应用
intent.setAction("android.settings.USER_DICTIONARY_SETTINGS"); //个人词典
intent.setAction("android.settings.VOICE_INPUT_SETTINGS"); //辅助应用和语音输入
intent.setAction("android.settings.VPN_SETTINGS"); //VPN设置
intent.setAction("android.settings.VR_LISTENER_SETTINGS"); //VR助手
intent.setAction("android.settings.WEBVIEW_SETTINGS"); //选择webview
intent.setAction("android.settings.WIFI_IP_SETTINGS"); //高级WLAN设置
intent.setAction("android.settings.WIFI_SETTINGS"); //选择WIFI,连接WIFI


app.startActivity(intent);
发布在 一般交流 阅读更多

此篇帖子主要是帮助一些新手快速上手autojs脚本开发,放弃手机中的编辑器,和UI控件检查工具.当然并不是让你完全的放弃手机端的UI查看工具,因为在某些情况下,PC端的uiautomatorviewer是无法查看到手机页面上的控件,这时候还是需要借助AutoJS本身自带的UI查看工具.

首先需要准备以下几个软件:
  我自己的电脑是64位系统,对应的软件,我已经准备好.

0_1515679863185_tools.png

1️⃣>>查看自己系统的具体位数!(比较简单,但还是说一下吧)

  1.首先右键"我的电脑"点击属性按钮;

0_1515679624749_1.png

  2.在弹出的页面中查看此位置,如图:

0_1515679674859_系统位数查询.png

2️⃣>>查看到自己的系统位数后,去下载对应的JDK,和SDKTools还有VScode

  下面开始安装JDK. 双击"jdk-8u151-windows-x64.exe"

0_1515680135692_jdk1.png

  点击下一步. 此处我们修改一下安装路径.注意记住自己安装的路径,后面会用到.

0_1515680300045_jdk2.png

  好的,我选在安装在"D:\JAVA\jdk1.8.0_151"下面

0_1515680486926_jdk3.png

  OK,我们继续下一步...这一步就是安装jdk了

0_1515680779505_jdk4.png

  注意安装过程中会让我们安装jre,我们还是选择跟jdk安装在一起.修改好路径后点击下一步.

0_1515680943173_jdk5.png

  正在安装jre.

0_1515681003775_jdk6.png

  jre安装完成以后,我们的JDK就算安装完成了. 点击关闭即可.

0_1515681065016_jdk7.png

接下来将我们下载并解压好的SDK tools移动到"D:\JAVA"中,此时的目录中是这样的:

0_1515681220480_jdk8.png

好的,下面开始配置JAVA环境,JAVA环境的配置很重要,切记不要配置错误

  首先我们打开环境变量设置:右键我的电脑-->点击属性-->点击高级系统设置--点击环境变量. 好的具体的操作步骤如图:

0_1515681869681_jt1.png

0_1515681908500_jt2.png

0_1515681934375_jt3.png

  打开环境变量设置后点击 系统变量下面的 新建按钮

0_1515682077776_jt4.png

  在新建系统变量对话框中,设置 变量名为:JAVA_HOME 变量值为:D:\JAVA\jdk1.8.0_151 这个路径就是我们安装jdk时的路径. 填写好以后点击确定.

0_1515682230982_jt5.png

  继续添加环境变量,现在要在Path变量中添加我们的JAVA环境目录.双击Path变量或者选中Path变量,点击编辑按钮.

0_1515682377036_jt.png

  在编辑系统变量对话框中,编辑变量值.注意!!! 不要修改变量名.

0_1515682510227_jt7.png

  在对话框的末尾添加以下字段: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; [注意:如果原来变量值的末尾没有';'号,务必先在末尾添加一个';'(分号,无引号),路径与路径之间应以分号';'隔开,如果是win10的话,则无需这么麻烦,直接新建一行即可.]

0_1515683041324_jt8.png

  点击确定后,再次点击系统变量中的 新建 按钮.变量名填写:CLASSPATH 变量值填写:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
注意开头有个点 分号 确认填写无误之后,点击确定.

0_1515683256592_jt9.png

  下面是最后一步,配置adb的环境变量.将下载的platform-tools解压后放到"D:\JAVA\"中.返回环境变量设置,继续在Path变量值的末尾添加adb.exe的所在路径.如图:

0_1515686194880_jt12.png

到此,我们的JAVA环境配置完成.可以验证一下配置结果:点击开始按钮-->点击运行 或者使用快捷键,win + R,输入cmd打开命令行,在命令行中输入 : echo %path% 回车检查回显内容是否有我们刚才配置的D:\JAVA\开头的路径.如果没有,那么我们需要重启电脑以使配置生效.

0_1515683814097_jt10.png

好的经过检查发现,刚才配置的环境变量都已经生效.

  接下来安装调试uiautomatorviewer,使用此工具,我们需要adb工具来配合.因为本人使用的是win7虚拟机来配置的这个环境,执行到此发现电脑连接手机后虚拟机无法通过adb连接到手机...尴尬,那就使用mac的环境来继续演示,请放心,以上都配置好以后,将手机的adb调试模式打开,均可正常连接.若不知道怎么打开自己手机的【开发者选项】那么请你根据自己手机的具体型号,去百度一下,怎么开启手机的 开发者模式.

**  手机打开USB调试模式以后,通过USB线连接到手机,此时在命令行中执行:adb devices 会显示已连接的设备.---下图是mac中的显示,windows中显示的是一样的.

0_1515686647504_jt13.png

此时我们双击运行"D:\JAVA\SDK_tools\bin\uiautomatorviewer.bat",桌面会弹出黑框,并随后打开一个界面.如图:

0_1515686866487_jt14.png

0_1515686916018_jt15.png

在弹出的界面点击 红色箭头所指的按钮.此时便会获取当前手机屏幕的UI界面:
---下图使用的也是mac版的,windows中显示是一样的.
0_1515687033079_jt16.png

比如我们要查看QQ消息页面的UI布局,效果如下:

0_1515687209079_jt17.png

红框标记的地方既是该控件的信息.右上方方框,显示的是UI布局层次

最后来配置一下VScode

  下载好VScode后,安装,win下安装软件就不讲了吧...你喜欢安装在哪就安装在哪...安装时注意这里,最好是全部勾上.

0_1515687444711_jt18.png

安装好以后,启动VScode程序,点击此处:

0_1515687687479_jt19.png

在搜索栏中搜索 Auto.js-VSCodeExt

0_1515687794148_jt20.png

因为我已经安装过 vscode的 Autojs插件,所以此处显示的是一个小齿轮图标.若没有安装插件,会显示 安装 字样,点击安装 稍等片刻后 会提示你 重新加载, 点击重新加载,这样VScode的AutoJS插件就安装好了.右侧显示了插件的使用方法.

0_1515688022958_jt21.png

Show log from Auto.js on Console.(Press Ctrl+Shift+Y to open console)
显示Auto.js控制台的log信息(按 Ctrl+Shift+Y 打开VScode的控制台);

Press Ctrl+Shift+P and enter Auto.js you can see several commands:
按Ctrl+Shift+P 然后输入Auto.js 你可以看到一些命令;

0_1515688389552_jt22.png

一般常用的命令就是: Start Server/开启服务,Run/运行脚本, Save/保存到设备,Stop/停止运行脚本 命令后面显示的有快捷键,很方便!

首先启动 服务 选择 Start Server,然后在手机上启动autojs APP 点击链接电脑,在弹出的对话框中输入,你电脑的IP地址,点击确定.在vscode中会有提示.

0_1515688884578_jt23.png

如何查看IP地址? 看图吧!看不懂,那只能百度了

0_1515688700134_jt22.png

如图所示,我当前联网的网卡名称为 本地链接, 在命令行中输入 ipconfig 回车,然后查看 本地链接的IPV4信息,图中所示的 192.168.10.215 便是我电脑的IP地址.

好的!现在就可以在VScode中编写代码,用uiautomatorviewer查看UI布局了,是不是美滋滋!如果你在配置过程中遇到了什么不懂的问题,可以在下方回帖留言,我看到就会回复...

######################################################################

UIautomatorviewer 启动报错解决:
替代文字
如上图所示,如果报此错误,是因为 uiautomatorviewer.bat文件的最后一行中:
方法一:
-Dcom.android.uiautomator.bindir= 后面应该改成platform-tools目录的路径如图所示:
0_1517503901811_WX20180202-005013.png
这个是我自己的platform-tools的路径,请修改成你自己的

方法二:
如果方法一不行,请尝试此方法.
将adb.exe AdbWinApi.dll AdbWinUsbApi.dll 移动到 uiautomatorviewer.bat 所在目录目录
0_1518433772652_QQ截图20180212190753.png

UIautomatorviewer.bat去除黑框

https://share.weiyun.com/5BgXgfH

使用方法:

    将这个UI查看工具.exe放到uiautomatorviewer.bat所在的目录下,然后创建一个快捷方式到桌面,双击运行,就不会出现那个黑色窗口了

0_1522727449862_QQ截图20180403115028.png

发布在 教程与示例 阅读更多
auto();
console.show();

importClass('java.net.Inet4Address');
importClass('java.net.InetAddress');
importClass('java.net.NetworkInterface');
importClass('java.util.Enumeration');
importClass('java.net.Inet6Address');
//获取内网IP地址
var hostIp = null;
try{
    var nis = NetworkInterface.getNetworkInterfaces();
    var ia = null;
    while (nis.hasMoreElements()) {
        var ni = nis.nextElement();
        var ias = ni.getInetAddresses();
        while (ias.hasMoreElements()) {  
            ia = ias.nextElement();  
            if (ia instanceof Inet6Address) {
                continue;
            }
            var ip = ia.getHostAddress();
            if (!"127.0.0.1".equals(ip)) {
                hostIp = ia.getHostAddress();
                break;
            }
        }
    }
} catch (e) {
    log(e);
}
log(hostIp);

//获取外网ip地址
var getIp_api = http.get('http://pv.sohu.com/cityjson?ie=utf-8');
var InetIP = getIp_api.body.string();
eval(InetIP);
log(returnCitySN.cip);
发布在 脚本发布 阅读更多

一个百度应用中 密码生成器的移植版...
也算是一个示例吧... 可以做一个参考

"ui";
/**
 * 随机密码生成器.
 * 测试环境:华为P10 安卓7.0 AutoJS版本:Alpha35
 */
ui.layout(
        <vertical background="http://1.119.192.186:8088/img/bg1.jpg">
            <vertical>
                <text w="*" h="56" gravity="center" color="#4D3D26" size="24sp" textStyle="bold">复杂密码生成器</text>
            </vertical>
            <vertical marginTop="13">
                <text marginLeft="16" color="#1E1E1E" size="18sp" textStyle="bold">设置要生成密码的长度和数量</text>
                <linear>
                <input id="passlength" paddingLeft="5" inputType="number" maxLength = "2" marginTop="8" singleLine="true" marginLeft="16" h="*" w="154" hint="长度[6-32位]" bg="http://1.119.192.186:8088/img/a6.png" />
                <input id="passnum" paddingLeft="5" inputType="number" maxLength = "3" marginTop="8" singleLine="true" marginLeft="16" h="*" w="154" hint="数量[选填]" bg="http://1.119.192.186:8088/img/a6.png" />
                </linear>
            </vertical>
        <linear paddingTop='10'>
            <checkbox id="str" text="小写字母" color="#684D38" marginLeft="16"/>
            <checkbox id="STR" text="大写字母" color="#684D38" marginLeft="16"/>
        </linear>
        <linear paddingTop='10'>
            <checkbox id="num" text="数字" color="#684D38" marginLeft="16"/>
            <checkbox id="sym" text="特殊符号" color="#684D38" marginLeft="44"/>
        </linear>

        <input id="text_output" paddingLeft="5" gravity="top" bg="http://1.119.192.186:8088/img/TextBg1.png" color="#000000" size="15" margin="15 16 0 16" w="*" h="200" />

        <linear gravity="center">
            <button id="make" h="35" bg="http://1.119.192.186:8088/img/produce.jpg" margin="16"></button>
            <button id="copy" h="35" bg="http://1.119.192.186:8088/img/copy.jpg" margin="16"></button>
        </linear>
        </vertical>
);

ui.str.setChecked(true);
ui.STR.setChecked(true);
ui.num.setChecked(true);
ui.sym.setChecked(true);
ui.text_output.setCursorVisible(false);
ui.text_output.setFocusable(false);
ui.text_output.setHint('        本程序是百度应用"随机密码生成器"的移植版,唯一不同的是,本程序可以一次性生成多条密码.');

var str = 'abcdefghijklmnopqrstuvwxyz';
var STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var num = '0123456789';
var sym = '+=-@#~,.[]()!%^*$';

ui.make.click(function() {
    var PassLength = ui.passlength.text();
    var PassNum = ui.passnum.text();
    if (PassLength == '') {toast('密码长度不能为空!'); return;}
    if (PassNum == '') {PassNum = 1;}
    if (PassLength < 6 || PassLength > 32) {
        toast('长度设置非法!');
        return;
    }else if (PassNum == 0) {
        toast('生成数量不可为"0"!');
        return;
    }
    
    var text = new Array();
    if (ui.str.isChecked()) {text.push(str);}
    if (ui.STR.isChecked()) {text.push(STR);}
    if (ui.num.isChecked()) {text.push(num);}
    if (ui.sym.isChecked()) {text.push(sym);}
    if (!ui.str.isChecked() && !ui.STR.isChecked() && !ui.num.isChecked() && !ui.sym.isChecked()) {
        toast('请选择密码的组合元素');
        return;
    }

    function randPassword(){
        var pw = '';
        for(i=0; i<PassLength; i++){
            var strpos = random(0,text.length-1);
            pw += text[strpos].charAt(random(0, text[strpos].length-1));
        }
        return pw; 
    }
    var Result1 = '';
    for (var j = 0; j < PassNum; j++) {
        var Result = randPassword();
        if(j > 0) {
            Result1 += '\n';
        }
        Result1 += Result;

    }
    // log(Result);
    ui.text_output.setText(Result1);
});

ui.copy.click(function() {
    var PasswordText = ui.text_output.text();
    if (PasswordText != null && PasswordText != '') {
        setClip(PasswordText);
        var ClipText = getClip();
        if (ClipText == PasswordText) {
            toast('已复制到剪贴板!')
        } else {
            toast('写入剪贴板失败!')
        }
    } else {
        toast('请先生成密码!');
    }
    return;
});

UI界面
0_1515513349816_QQ20180109-235445.png

脚本文件下载地址
http://yun.dyzj.online:8000/f/3ce95842d6/

发布在 BUG与问题反馈 阅读更多

小白交流啥~

大佬,这个功能的代码是什么?
大佬,求个xxx的脚本...
大佬,这里又报错了,什么原因...

如果是这样的交流~完全没必要交流,这样的交流都是浪费生命

发布在 一般交流 阅读更多

crontab依赖于crond服务,安卓手机上默认是安装了这个服务的,只是在使用命令

crontab -l

的时候总是报这个错误: unknown uid 0

即便使用root权限去执行仍然报这个错误.

在使用autojs来设置定时任务的时候,锁屏后长时间不激活autojs,就会使autojs的计划任务失效(华为手机测试是这样的).那么突发奇想,能否像linux那样使用crontab来设置计划任务呢,于是百度谷歌了一下,还真发现了方法.

虽然还没有经过长时间的测试 来验证此方法的可行性,但是先写一篇安装教程吧

那么本篇帖子则讲一下如何在安卓机上使用crontab来设置一些计划任务.

首先需要准备的环境:

  • 获取了root权限的手机一部

  • 有adb环境或者终端模拟器

  • 下载文件SP8-CRON_v2.zip

  • 手机激活了init.d (重要)

安装过程:

  • 下载 SP8-CRON_v2.zip 解压后,将文件放置到手机的内部存储中
      确保能访问到即可.
  • 使用adb连接手机,连接成功后,使用root身份
      输入 su 切换到root权限
  • 切换到SP8-CRON_v2的目录,在目录中执行命令
    sh Install.sh

等待安装完毕后,手机会重启.重启后crontab内的计划任务则开始生效了.

里面有默认的3条计划任务,想删掉就删掉.

crontab的设置规则以及验证请参考下面网址:

编辑时间: 2018-05-22 11:08
经过长时间的测试,发现这个crontab是可以后台自动运行的只不过他默认使用的是UTC时间,与我们系统的时间有时差,无论你后台是否有进程限制,或是锁屏冻结所有应用,他都可以准时运行,只不过时间需要自己设置好,搭配shell命令启动autojs脚本,可以完美的做一些骚操作.各位同学,是时候秀一下你的安卓手机了...

shell启动autojs脚本命令:

am start -n org.autojs.autojs/.external.open.RunIntentActivity -d /sdcard/脚本/xxx.js  -t application/x-javascript

命令自己应该都会修改吧.只要修改自己的脚本名字即可

发布在 脚本需求 阅读更多

百度了 几个 发现 不是要先认证 就是 数据不准...,下午 抽空 自己写了一个接口.

拿去用吧:
https://api.dcrclub.com/holiday?d=2018-01-02

接口说明:

  • 列表请求方式: get

  • 参数d
      日期格式:YYYY-MM-DD

  • 返回值: type=0|1|2  格式:JSON
      0:为工作日  1:为普通休息日  2:为法定节假日

  • 只能查询2018年的

本人渣渣服务器,维护不易,切勿攻击!!!!谢谢

发布在 脚本发布 阅读更多

data由autojs群中的 +攀登 提供

闲着无聊抓了一点小程序的ID,谁有时间可以继续抓下去,并补充到本帖...感谢分享

/**
 * 60000002 蚂蚁森林
 * 60000006 附近优惠
 * 60000012 中小学
 * 60000023 蚂蚁保险
 * 60000024 彩票游戏,不对所有用户开放
 * 60000029 口碑排行榜
 * 60000032 添加第一张证件 各类证件齐管理
 * 60000033 in贴纸商城
 * 60000039 超值抢购
 * 60000040 未来酒店
 * 60000044 权益区 无法加载
 * 60000047 校园头条 无法加载,可能缺少参数
 * 60000052 手机通讯录备份 未对所有用户开放
 * 60000057 阿里宝卡
 * 60000071 天天有料
 * 60000076 VIP预约服务 无法加载,可能我不是VIP的原因
 * 60000077 优酷会员首页
 * 60000081 商家服务
 * 60000091 花呗
 * 60000103 支付周奖励金列表页
 * 60000105 我的银行卡 管理页
 * 60000120 福员外 不知道干嘛的
 * 60000125 租房
 * 60000126 余额宝
 * 60000130 淘票票
 * 60000134 外币兑换 服务正在升级
 * 60000135 飞猪汽车票
 * 60000145 阿里巴巴认证中心
 * 60000146 寄快递
 * 60000148 财富号
 * 60000150 我的口碑
 * 60000153 注销账号 注销支付宝账号用的
 * 60000154 AA收款
 * 60000155 共享单车
 * 60000156 支付宝红包~这个应该也是缺少参数
 * 60000160 稳健收益  应该是理财类的东西 
 * 60000161 蚂蚁会员周周乐
 * 60000162 彩虹星愿 应该是教育孩子的
 * 
 */

var a = app.intent({
    action: "VIEW",
    data: "alipayqr://platformapi/startapp?saId=60000002"
});
app.startActivity(a);
发布在 脚本发布 阅读更多

执行脚本需要自己会抓包,如果不会抓包,我也帮不上忙了,如果有报错请打印第一个 sdk.php接口返回的数据,是否正确,不正确的话,需要自己重新抓这个接口的提交参数

什么叫脱机脚本:
脱机就是说不需要打开APP直接进行一些脚本操作,此处重点说明一下,只要你autojs有后台权限,可以完全在后台运行,执行该脚本后,直接锁屏即可,无需亮屏即可自动收红包

APP下载,见底部二维码

/**
 * 遍地红包自动收红包脚本,没有处理网络不好的情况.
 * 脚本运行,每半小时收取一次红包.
 * 该脚本纯后台运行,脱机脚本
 * QQ群:823217748
 */

var uid = ""; //个人中心用户名下面的那串数字
var cookie = ""; //需要自己抓包获得
var auth = ""; //需要自己抓包获得

while(true) {
    var TimeStamp = Math.round(new Date());
    var locPoint = http.post("http://loc.map.baidu.com/sdk.php", {
        "trtm" : TimeStamp,
        "bloc" : "hU2XyZmfmszBwZYHXN03oMafAq-yF5KJfZTeim4XW2z09tnM8Joj_VofBtkCpkFBkJ373V7dUsMgu89sKM-AX16CnIYNBdWAtxKwPAOEFgcWKM6h2cFdynWFIqWUI4xEP50WkFsG9TZ3xv6y6PC6kLoYRiXx8UW7VbXGYpp0vO6fDkwjKA8BpUEiYK8vpbTTNBpy0Sq3R1VLJ2hJwMqAsfJZz8QaQDtP1GTk4JWpPb91yT1KxKWfG2qcAiPQy4umWkJgfvCNwfrXGDNwLdugdRnW1OHeObHy-vSUJWpujiWp-KTTCIWp-pd7eAu-hacvsauKjR-6wdb6ZtUzwxLeeBDu4d_gm2ExGnPfdSJjoQ4RuhSl0RnsQd-8bINiVbFeoh-XH_7XDpytu__7DAtL20FH-f7DlMciUXAZexBSy6riI3PPrRRJb_zSolKCjizK3eF9Py7OmZRiR-zKhf..|tp=4"
    });
    var point = locPoint.body.json().content.point;
    
    var redbagList = http.post("http://bdhb.shuangpinkeji.com/api/m1/redbag/redbag-list", {
        'longitude':point.x,
        'latitude':point.y,
        'uid':uid,
    }, postHeader());
    var jsonInfo = redbagList.body.json();
    var list = jsonInfo.data.list;
    // log(list);
    // log(list.length);
    if (list.length > 0) {
        for (let i = 0; i < list.length; i++) {
            var redid = jsonInfo.data.list[i].id;
            var long = jsonInfo.data.list[i].longitude;
            var lat = jsonInfo.data.list[i].latitude;
        
            var click = http.post("http://bdhb.shuangpinkeji.com/api/m1/redbag/click", {
                'type':'2',
                'longitude':long,
                'latitude':lat,
                'id':redid,
                'uid':uid,
            }, postHeader());
            var json = click.body.json();
            //log(json);
            var id = json.data.id;
            var sign = json.data.sign;
        
            var sysReceive = http.post("http://bdhb.shuangpinkeji.com/api/m1/redbag/sys-receive", {
                'uid':uid,
                'sign':sign,
                'id':id,
                'type':'2',
            }, postHeader());
            var res = sysReceive.body.json();
            var money = res.data.user_money;
            log(money);
            sleep(1000);
        }
    } 
    log("当前无红包,30分钟后继续...");
    sleep(31*60*1000);
}


function postHeader() {
    var release = device.release;
    var model = device.model;
    var build = device.buildId;
    var header = {
        headers: {
            'Host':'bdhb.shuangpinkeji.com',
            'Content-Length':'65',
            'Accept':'*/*',
            'Origin':'file://',
            'X-Requested-With':'XMLHttpRequest',
            'Authorization':auth,
            'User-Agent':'Mozilla/5.0 (Linux; Android '+release+'; '+model+' Build/'+build+'; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 Mobile Safari/537.36 Html5Plus/1.0',
            'Content-Type':'application/x-www-form-urlencoded',
            'Cookie':cookie,
        }
    }
    return header;
}

二维码下载:
0_1537551659144_QQ截图20180922013704.png

一元提现秒到,到账图:
0_1537551898442_QQ截图20180922014416.png

发布在 一般交流 阅读更多

相对于脚本而言,一般不写UI最好.但有时候要确认用户的选择和输入,不得不使用UI或者悬浮窗...
但两者的功能和实现方法 是一样的.

针对于初次编写UI界面的同学来说,可能会遇到各种各样的坑.

但是针对于写UI而遇到的各种问题,希望看此篇帖子的同学:
第一: 不要问我任何关于代码的问题,因为我没有时间帮你写代码;
第二: 如果我不会,你要我帮你解决...那我也得去百度google找资料,研究明白,再告诉你,这与你自己去找资料然后自己研究而言,除了浪费了我的时间,没有任何的实际帮助.

坑1:
不管你的代码多么少, "ui"; 这个字符串,必须放在第一行,在它之上,不能有任何的代码和注释

坑2:
整个UI编写过程中,有一个非常重要的原则:
  UI线程中除函数和公用变量外不要写任何流程性质的代码,如果要写流程,必须使用线程

threads.start(function() {
    //这里写你的流程代码
});

坑3:
使用线程时,如果要对UI中的数据进行修改,最好使用下面的方法来执行:

threads.start(function() {
    //流程代码
    ui.run(()=>{
        //这里写针对UI的操作
    });
});

坑4:
为了方便管理,所有开的线程,根据不同功能,最好都定义各个线程的变量名

var Thread = threads.start(function() {});

坑5:
线程函数,不能简写 观察上面的代码,你会发现:
ui.run()中 我的写法是:

ui.run(()=>{});

而在线程 threads.start();中,我的写法是:

threads.start(function() {});

坑6:
使用setVisibility()方法时,一定要 importClass(android.view.View);
括号中的属性包括:
View.GONE //完全隐藏控件
View.INVISIBLE //隐藏控件,但保留控件的位置
View.VISIBLE //默认属性, 显示控件

坑7: 针对text控件的对齐 gravity 要在 linear 布局中进行设置,例如

<linear gravity="right|center" w="80" h="*">
    <text text="当前速度: "
        textColor="#FFFFFF"
        textSize="16sp" />
</linear>

坑8:
不同机型,不同DPI适配 在线性布局中 务必灵活运用 layout_weight,否则,分辨率改变 DPI改变后,你的UI 会变形

发布在 脚本发布 阅读更多

此脚本主要是因为自己在写代码 调试代码的时候,需要屏幕常亮,如果临时有事,离开了,可能会忘记关闭屏幕,而10分钟的息屏时间,也是有点太长了...不过没办法,因为不想频繁解锁手机.虽然手机没什么秘密,但是也不想让别人随便动我的东西.

如果你喜欢这个脚本,那么点个赞,收藏一下吧! 如果有bug,我特喵的也不想改!

因为我自己使用的手机已经root了,也解锁了init.d,常用的脚本可以通过系统开机时直接启动,在之后的脚本发布中,可能都会带有root权限的命令

/*
 * @Author: Dcr.Yu 
 * @Date: 2018-07-03 12:09:01 
 * @Last Modified by: Dcr.Yu
 * @Last Modified time: 2018-07-03 12:21:21
 * @Remarks: 脚本需要root权限,无root权限无法锁屏;
 *           脚本没有设置监听 绕X轴的变化,如果需要,可以自行添加;
 *           限制了在autojs界面时(4.0版本以上) 执行锁屏操作
 */

//初始化监听参数
var Y = 0;
var Z = 0;

//开始监听绕 Y轴 Z轴 的角度变化
sensors.register("orientation").on("change", (event, dx,dy,dz)=>{
    Y = parseInt(dy);
    Z = parseInt(dz);
});

//脚本主循环
while(true) {
    var oldTime = new Date();
    var Con_Y = Y;
    var Con_Z = Z;
    while(true) {
        var newTime = new Date();
        if (newTime - oldTime >= 30*1000) {
            while (true) {
                // log('超过30秒,屏幕亮着,未发生变化');
                if ((Y != Con_Y || Z != Con_Z) && device.isScreenOn()) {
                    // log('手机动了,开始锁屏!');
                    if (currentPackage() != 'org.autojs.autojs') {
                        KeyCode(26);
                    } else{
                        continue;
                    }
                    while (device.isScreenOn()) {
                        // log('屏幕亮着');
                        sleep(500);
                    }
                    break;
                }
            }
            break;
        } else if (Y != Con_Y || Z != Con_Z) {
            // log('30秒内发生变化,重新计时');
            break;
        }
    }

    while (!device.isScreenOn()) {
        // log('屏幕关闭');
        sleep(1000);
    }
}
发布在 脚本需求 阅读更多

@子懿 按照 格式写需求,看看谁接~

发布在 脚本需求 阅读更多

auto.waitFor();
打开了 就不执行,没打开就跳转到开启无障碍功能的界面

发布在 脚本需求 阅读更多

脚本需求板块,禁止发布接单定制脚本等垃圾帖子,严禁发布各种及时聊天工具的ID账号,板块内部只允许发布脚本需求.任何关于交易的信息,请私下沟通

如果想找别人代写脚本,请详细阐述你的脚本需求,最好有视频说明,或者开发文档,可以让别人一目了然.

线下交易者,请谨防上当受骗,请勿在论坛发泄你的情绪,发布违规帖等内容的一律删帖,情节严重的,直接封号处理.

最后,论坛并无担保资质,因此,不建议各位进行大额线下交易.交易时请谨慎,若被骗,请拨110.

发布在 一般交流 阅读更多

事实证明啊,这华为手机,锁屏后,连系统服务都不放过.今早测试失败

发布在 一般交流 阅读更多

拿走不谢....

//淘宝时间戳API
var recode_taobao = http.get("http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp");
var taobaoTime = recode_taobao.body.json().data.t;
log(taobaoTime);
//腾讯QQ时间API
var recode_qq = http.get("http://cgi.im.qq.com/cgi-bin/cgi_svrtime");
var qqTime = recode_qq.body.string();
log(qqTime);
//苏宁时间API
var recode_suning = http.get("http://quan.suning.com/getSysTime.do");
var suningTime = recode_suning.body.json();
log(suningTime.sysTime1);
log(suningTime.sysTime2);
发布在 脚本需求 阅读更多

@飞丶扬

用楼上那个吧,开发者又添加新函数了~更方便

发布在 脚本需求 阅读更多
var str = text('很少').find();
var strSize = str.size();
for(var i = 0; i < strSize; i++){
    let strBounds = str.get(i).bounds();
    let x1 = strBounds.left;
    let y1 = strBounds.top;
    let x2 = strBounds.right;
    let y2 = strBounds.bottom;

    if(x1 > 400 && x2 < 900 && y1 > 1300 && y2 < 1800){
        log('找到了!\n' + '坐标是: ' + x1 + ',' + y1 + ',' + x2 + ',' + y2);
        str.get(i).click();
    }
}

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