统计
  • 文章总数:24 篇
  • 评论总数:49 条
  • 分类总数:5 个
  • 最后更新:2024年11月12日
技术教程 本文章已被专题收录

Autojs脚本常用功能函数备份

本文阅读 5 分钟
首页 技术教程 正文

1.控件随机点

function 控件随机点(uiObject) {
    if (!uiObject) return null;
    let bus = uiObject.bounds();
    let 偏移 = {
        x: bus.width() * 0.3,
        y: bus.height() * 0.3,
    };
    let busObj = {
        x: random(bus.left + 偏移.x, bus.right - 偏移.x),
        y: random(bus.top + 偏移.y, bus.bottom - 偏移.y),
    };
    if (busObj.x < 0 || busObj.y < 0 || busObj.x > device.width || busObj.y > device.height) {
        return false;
    }
    // log(bus.centerX(), bus.centerY())
    // log(busObj.x, busObj.y);
    click(busObj.x, busObj.y);
    sleep(500)
    return true;
};

2.设置代理IP和清除代理

设置代理

function 换IP(){
    // 清除现有代理设置
    shell ("settings put global http_proxy :0", true);
    // 访问API获取新的代理信息
    
   //  var apiUrl = ui.runCountInput.getText().toString();
    var apiUrl = "https://api.douyadaili.com/proxy/?service=GetIp&authkey=H3oToE523ViSh7r94Qwi&num=1&lifetime=15&prot=0&format=json&distinct=1&isp=0&sameoutip=1&high=1&detail=1";
    var response = http.get(apiUrl);
    if (response.statusCode != 200) {
        log("API 请求失败");
        return;
    }
   
    // 解析API返回的代理信息
    var responseData = JSON.parse(response.body.string());
    if (responseData.ret !== 200) {
        toast("API 返回错误:" + responseData.msg);
        return;
    }
    
    // 提取代理信息
    var proxyInfo = responseData.data[0];
    var host = proxyInfo.ip;
    var port = proxyInfo.port;
    // var user = proxyInfo.user;
    // var password = proxyInfo.pwd;
   
    // 设置新的代理
    shell("settings put global http_proxy " + host + ":" + port, true);
    shell("settings put global global_http_proxy_host " + host, true);
    shell("settings put global global_http_proxy_port " + port, true);
    // shell("settings put global global_http_proxy_user " + user, true);
    // shell("settings put global global_http_proxy_password " + password, true);
   
    log("代理设置成功: " + host + ":" + port);
       }

清除代理

function 清除代理(){
    // 清除现有代理设置
       }

3.获取ip城市

 // 定义获取城市信息的函数
function getCityFromIpAddress() {
    // 设置请求的URL
    var url = "https://whois.pconline.com.cn/ipJson.jsp?json=true";

    // 发送GET请求
    var response = http.get(url);

    // 检查响应状态码
    if (response.statusCode == 200) {
        // 解析返回的JSON字符串
        var json = JSON.parse(response.body.string());

        // 提取城市信息
        var city = json.city;

        // 返回城市信息
        return city;
    } else {
        // 如果响应状态码不是200,返回错误信息
        // return "Error: " + response.statusCode;
        return "网络错误";

    }
}

4.生成随机手机号码

// 生成随机手机号码
function generateRandomPhoneNumber() {
     // 中国大陆手机号码前三位(号段)列表
     const prefixList = ['130', '131', '132', '133', '134', '135', '136', '137', '138', '139',
        '145', '147', '149', '150', '151', '152', '153', '155', '156',
        '157', '158', '159', '166', '170', '171', '172', '173', '174', '175',
        '176', '177', '178', '180', '181', '182', '183', '184', '185', '186', '187', '188', '189',
        '191', '198', '199'];

// 随机选择号段
let phoneNumber = prefixList[randomInt(0, prefixList.length - 1)];

// 剩余八位是随机数字
for (let i = 0; i < 8; i++) {
    phoneNumber += randomInt(0, 9).toString();
}

return phoneNumber;
}
// 生成qq
function generateRandomNumber() {
    const length = Math.floor(Math.random() * 2) + 8; // 随机生成8或9
    let randomNumber = '';
    for (let i = 0; i < length; i++) {
        randomNumber += Math.floor(Math.random() * 10).toString();
    }
    return randomNumber;
}

5.生成随机账号

 // 生成随机账号
function generateRandomAccount() {
    // 定义账号长度为8到14位
    const length = randomInt(8, 14);
    // 定义字母和数字的数量
    const numLetters = randomInt(1, length - 3); // 至少一个字母,且字母后面至少有三个数字
    const numNumbers = length - numLetters;

    // 生成字母部分
    let lettersPart = '';
    for (let i = 0; i < numLetters; i++) {
        lettersPart += String.fromCharCode(randomInt(97, 122)); // 小写字母a-z的ASCII码
    }

    // 生成数字部分
    let numbersPart = '';
    for (let i = 0; i < numNumbers; i++) {
        numbersPart += randomInt(0, 9).toString();
    }

    // 合并字母和数字部分
    return lettersPart + numbersPart;
}

6.生成随机密码

// 生成随机密码
function generateRandomPassword() {
    // 定义密码的总长度为6到10位
    const totalLength = randomInt(6, 10);
    // 定义前两位为小写字母
    let password = '';
    for (let i = 0; i < 2; i++) {
        password += String.fromCharCode(randomInt(97, 122)); // 小写字母a-z的ASCII码
    }
    // 生成剩余的字符
    for (let i = 2; i < totalLength; i++) {
        // 随机选择生成字母还是数字
        const isLetter = randomInt(0, 1) === 0;
        if (isLetter) {
            // 随机生成一个小写字母
            password += String.fromCharCode(randomInt(97, 122));
        } else {
            // 随机生成一个数字
            password += randomInt(0, 9).toString();
        }
    }
    return password;
}

7.执行下滑动操作

// 执行下滑动操作
function swipeDown() {
    // 设置滑动参数
var width = device.width; // 设备宽度
var height = device.height; // 设备高度
var swipeDuration = 500; // 滑动持续时间(毫秒)
    // 从屏幕中间向上滑动
    swipe(width / 2, height * 3.5 / 4, width / 2, height / 4, swipeDuration);
}

8.取号分割符----

function 取号() {
    let filePath = "/mnt/shared/Pictures/666.txt";
    if (!filePath) {
        console.log("输入路径为空,请输入有效的文件路径");
        return null;
    }

    let file = open(filePath, "r");
    let lines = file.readlines();
    file.close();

    if (lines.length === 0) {
        console.log("没有文件了");
        exit()
        return null; // 如果文件为空,则返回null
        

    }

    let firstLine = lines[0];
    let parts = firstLine.split("----");

    return {
        cardnanme: parts[0].trim(),
        card: parts[1].trim()
    };
}

9.写入文本文件

function 写入文件(文件路径, 内容) {
    // 检查文件是否存在,不存在则先创建文件
    let file = open(文件路径, "a"); // "a" 模式用于追加内容
    if (!file) {
        console.log("无法打开或创建文件:" + 文件路径);
        return;
    }
    file.writeline(内容); // 写入内容并自动添加换行
    file.close(); // 关闭文件
}

//调用如
写入文件("/mnt/shared/Pictures/" + "已注册信息.txt","注册成功----" + randomAccount + "----" + randomPassword+city);

10.删除当前行

function 删除当前行(filePath, identifier) {
    // 打开文件以读取内容
    let file = open(filePath, "r");
    // 读取文件的所有行
    let lines = file.readlines();
    // 关闭文件
    file.close();

    // 存储未被删除的行
    let remainingLines = [];
    // 遍历文件的每一行
    for (let line of lines) {
        // 如果行不以指定标识符开头,则将其保留
        if (!line.startsWith(identifier)) {
            remainingLines.push(line);
        }
    }

    // 重新打开文件以写入修改后的内容
    file = open(filePath, "w");
    // 将剩余的行写入文件
    for (let line of remainingLines) {
        file.writeline(line);
    }
    // 关闭文件
    file.close();
}

//调用如
删除当前行("/mnt/shared/Pictures/666.txt",quhao.cardnanme);
//慎用,会删除当前行分割符合某一部分的所有行

11.塞贝尔曲线滑动

function 投篮功能() {
    try {
    sleep(1200)
    // 图片1和图片2的网络链接(确保设备连接到互联网并且能够访问这些链接)
    // var image1Url = "https://p1.meituan.net/csc/46a47df620209f5e8a322dc26a8fdd534470.jpg";
    // var image2Url = "https://p0.meituan.net/csc/ebf80e004b05a72f8e1f661913a877817626.jpg";
    // // className("android.view.View").depth("15").drawingOrder("0").findOne(10000)

    // 从网络获取图片1和图片2
    var image1 = images.read("/mnt/shared/Pictures/Screenshots/篮球.png");
    var image2 = images.read("/mnt/shared/Pictures/Screenshots/蓝框.png");
    // // 从网络获取图片1和图片2
    // var image1 = images.load(image1Url);;
    // var image2 = images.load(image2Url);;
    
    if (!image1 || !image2) {
        console.log("获取图片失败");
        // exit();
    }
    if(!requestScreenCapture()){
        alert("请求截图失败");
        // exit();
        return false;
    }
    // 获取当前屏幕截图
    var screenshot = captureScreen();
    
    // 查找图片1的位置
    var image1Point = images.findImage(screenshot, image1, {
        threshold: 0.1 // 尝试调整阈值,范围从0到1,值越大匹配越严格
    });
    
    // 查找图片2的位置
    var image2Point = images.findImage(screenshot, image2, {
        threshold: 0.1
    });
    
    if (image1Point && image2Point) {
        // 计算图片1和图片2的中心点坐标
        var image1CenterX = image1Point.x + image1.width / 2;
        var image1CenterY = image1Point.y + image1.height / 2;
    
        var image2CenterX = image2Point.x + image2.width / 2;
        var image2CenterY = image2Point.y + image2.height / 2;
    
        // 塞贝尔曲线的控制点
        var controlX1 = image1CenterX + (image2CenterX - image1CenterX) / 4;
        var controlY1 = image1CenterY - 200;
        var controlX2 = image1CenterX + 3 * (image2CenterX - image1CenterX) / 4;
        var controlY2 = image1CenterY + 200;

        // 生成贝塞尔曲线点
        function bezierCurvePoints(startX, startY, controlX1, controlY1, controlX2, controlY2, endX, endY, steps) {
            var points = [];
            for (var t = 0; t <= 1; t += 1 / steps) {
                var x = Math.pow(1 - t, 3) * startX +
                        3 * t * Math.pow(1 - t, 2) * controlX1 +
                        3 * Math.pow(t, 2) * (1 - t) * controlX2 +
                        Math.pow(t, 3) * endX;
                var y = Math.pow(1 - t, 3) * startY +
                        3 * t * Math.pow(1 - t, 2) * controlY1 +
                        3 * Math.pow(t, 2) * (1 - t) * controlY2 +
                        Math.pow(t, 3) * endY;
                points.push([x, y]);
            }
            return points;
        }

        // 生成贝塞尔曲线的点
        var points = bezierCurvePoints(image1CenterX, image1CenterY, controlX1, controlY1, controlX2, controlY2, image2CenterX, image2CenterY, 100);

        // 执行滑动操作
        gesture.apply(null, [random(1399, 1899)].concat(points));

        console.log("投篮成功");
        let 重试 =text("Verify Fail, Click For Retry").findOne(5000)
    if(重试){

        控件随机点(重试)
        return 投篮功能()
    }
    
    } else {
        console.log("未找到篮球图片或蓝框图片");
    let 重试 =text("Security Verify").findOne(3000)
    if(重试){

        控件随机点(重试)
        return 投篮功能()
    }
    }

} catch (error) {
    console.log("投篮失败");
    let 重试 =text("Verify Fail, Click For Retry").findOne(3000)
    if(重试){

        控件随机点(重试)
        return 投篮功能()
    }
  
}

}

....待添加

本文来自投稿,不代表本站立场,如若转载,请注明出处:
Autojs常用的点击方式
« 上一篇 07-10
免费的Chat gpt AI学习网站
下一篇 » 07-10

发表评论

发表评论

作者信息

热门文章

最多点赞

标签TAG

热评文章