用户设备IP三者绑定自动上号

这篇具有很好参考价值的文章主要介绍了用户设备IP三者绑定自动上号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

发送任务:

# -*- coding: utf-8 -*-
# @Author  : Codeooo
# @Time    : 2021/10/27


import json
import uuid
import random

from db.RedisDB import RedisDB


alphabet = ''.join(str(uuid.uuid4()).split('-'))


def deviceRandom():
    # android iD:
    androidid = "a786f7eb46d80d8"

    # 厂商 "Xiaomi" "HUAWEI" "OPPO" "VIVO" "GOOGLE" ""
    _manifuature = ["Xiaomi","HUAWEI","OPPO","VIVO","GOOGLE"]

    manifuature  = random.choice(_manifuature)

    # 序列号
    serialno = alphabet[:16].upper()

    # imei = "866001033006546"
    imei = f"{random.randint(166001033006546,996001033006546)}"

    wifiaddress = f"{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}"

    wifiname = f"{alphabet[24:28].upper()}-{alphabet[28:32].upper()}"

    # 手机品牌
    brand = manifuature

    # 手机型号
    model = brand

    # IMSI = "460066624657531"
    IMSI = f"{random.randint(460000000000030,990000000000030)}"

    product = ""

    # 蓝牙名称
    btnam = alphabet[16:24].upper()

    # 蓝牙MAC
    btaddr =  f"{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}:{random.choice(alphabet) + random.choice(alphabet)}"
    print("btaddr",btaddr)

    phoneno = f"1{random.randint(3000000000,9000000000)}"

    displayId = f"AL1512-mido-build-{random.randint(20000101,20211101)}005127"

    # 基带版本
    baseVersion = f"{random.randint(100,999)}_GEN_PACK-1.{random.randint(1000000,9999999)}.{random.randint(1000000,9999999)}.1"

    # 运营商
    operatornam =  random.choice(["中国移动","中国电信","中国联通"])

    numeric = "46000"

    country = "cn"

    deviceFirst = f"setphone -a {androidid} -m {manifuature} -s {serialno} -i {imei} -w {wifiaddress} -n {wifiname} -b {brand} -o {model} -e {IMSI} -p {product} --btnam {btnam} --btaddr {btaddr}"

    deviceLast = f" --phoneno {phoneno} --displayId {displayId} --baseVersion {baseVersion} --operatornam {operatornam} --numeric {numeric} --country {country}"

    device = deviceFirst + deviceLast
    print(device)

    return  device




if __name__ == '__main__':


    task = {
        "user": "18647664673",
        "pwd": "3bbrhfc6",
        "status": "1",
        "ip":"218",
        "setPhone":deviceRandom()
    }

    print(f"本次登陆用户{task.get('user')}")
    RedisDB().set_info("a786f7eb46d80d8", json.dumps(task))

云机监听登陆:文章来源地址https://www.toymoban.com/news/detail-507170.html

/*
@Author  : Codeooo
@Time    : 2021/10/25
ks.9.5.10.20016.apk
*/


auto.waitFor();


function updateStatus(deviceId,status) {
    for (var i=0; i<5; i++) {
        var url = "http://你的服务/userSave/" + deviceId + "/" + status ;
        var res = http.get(url);
        if (res.statusCode === 200) {
            print("===回写updateStatus成功===");
            return
        }
    }
}


function caseLogin(data,deviceId) {

    if (data.user) {

        //获取账号信息
        toast(data.user);
        user = data.user;
        pwd = data.pwd;

        //ip 设备 初始化
        setIp(data.ip);
        sleep(1000);
        setPhone(data.setPhone,deviceId);
        sleep(1000);
        //授权
        authentication();
        sleep(2000);

        loginToken = login(user, pwd);
        if (loginToken){
            updateStatus(deviceId,0);
            // qrBase();
        }else{
            updateStatus(deviceId,2);
            //close("快手");
        }
    }

}


function caseQr(data,deviceId) {
    if (data.img) {
        qrBase();
        images.save(images.fromBase64(data.img), "/sdcard/code.jpg", "jpg", 50);
        //app.viewFile("/sdcard/code.jpg");
        media.scanFile("/sdcard/code.jpg");
        print("===图片下载成功===");
        qrToken = qrLast();
        if (qrToken){
            updateStatus(deviceId,0);
            //qrBase()
        }else{
            updateStatus(deviceId,2);
            //close("快手");
        }
    }

}


function ksFans(deviceId) {

    while (1) {
        var url = "http://你的服务/getTask/" + deviceId;
        var res = http.get(url);
        if (res.statusCode !== 200) {
            print("===请求main失败===");
        } else {
            var data = res.body.json();
            if (data.status) {
                caseLogin(data,deviceId);
                caseQr(data,deviceId);
            }
        }
        //sleep(3000);
    }
}

function login(user, pwd) {
    app.launchApp("快手");
    print("===启动快手成功===");

    sleep(2000);

    //更改协议同意
    id("positive").findOne().click();
    print("===协议同意===");
    sleep(1000);


    id("left_text").findOne().click();//left-login
    print("===点击登陆按钮===");

    sleep(1000);
    id("other_login_tv").findOne().click(); //other
    print("===选择其他登陆方式===");

    sleep(1000);

    //id("protocol_checkbox").findOne(1000).click();//yes http
    //print("===协议同意===");

    id("sina_login_view").findOne().click(); //weibo
    print("===选择微博方式登陆===");
    sleep(1000);

    id("etLoginUsername").findOne().setText(user);
    print("===账号输入完毕===");
    id("etPwd").findOne().setText(pwd);
    print("===密码输入完毕===");

    sleep(1000);
    id("new_bnLogin").findOne().click();
    print("===点击登陆===");

    sleep(3000);
    id("new_bnLogin").findOne().click();
    print("===授权成功===");

    if (desc("精选").findOne(15000)) {
        if (desc("关闭").findOne(2000)){
            desc("关闭").findOne().click()
        }
        toast("===登陆成功===");
        return true;
    } else {
        toast("===登陆失败===");
        return false;
    }
}



function qrLast() {

    var str = "相册";
    var x = text(str).findOne().bounds().left;// 首次出现的x坐标
    var y = text(str).findOne().bounds().top;// 首次出现的y坐标
    click(x, y);
    print("===点击相册===");
    sleep(2000);

    click(10, 200);
    print("===第一张图===");

    if (id("login_confirm_ok").findOne(12000)) {
        id("login_confirm_ok").findOne().click();
        toast("===登陆成功===");
        return true;
    } else {
        toast("===二维码过期===");
        if (text("知道了").exists()) {
            text("知道了").findOne().click();
        }

        id("left_btn").findOne().click();
        print("===点击左上角===");
        sleep(2000);

        return false;
    }
}

function qrBase() {

    sleep(2000);

    id("left_btn").findOne().click();
    print("===点击左上角===");
    sleep(2000);

    swipe(device.width / 2, 800, device.width / 2, 500, 1000);
    print("===下滑找更多===");

    sleep(2000);

    var str = "更多";
    var xQ = text(str).findOne().bounds().left;// 首次出现的x坐标
    var yQ = text(str).findOne().bounds().top;// 首次出现的y坐标
    click(xQ+10, yQ-10);
    //row("7").findOne().click();
    print("===点击更多===");
    sleep(2000);


    // var strQr = "扫一扫";
    // var xQr = text(strQr).findOne().bounds().left;// 首次出现的x坐标
    // var yQr = text(strQr).findOne().bounds().top;// 首次出现的y坐标
    // click(xQr+10, yQr-10);

    click(250,600);
    print("===点击扫一扫===");
    sleep(1000)

}


function createRedisKey(deviceId) {

    for (var i=0; i<5; i++) {
        var url = "http://你的服务/createRedisKey/" + deviceId;
        var res = http.get(url);
        if (res.statusCode !== 200) {
            print("===createRedisKey失败===");
        } else {
            var data = res.body.json();
            return data.result
        }
    }
    return false;
}

function auth(packagename,phone,photo,write,read) {
    var sh = new Shell(true);
    sh.exec(phone);//执行代码运行中属于异步运行
    sh.exec(photo);//执行代码运行中属于异步运行
    sh.exec(write);//执行代码运行中属于异步运行
    sh.exec(read);//执行代码运行中属于异步运行
    sleep(1000);
    sh.exit;
}



function authentication() {
    //授权
    var packageName = getPackageName("快手");
    var phone = "pm grant com.smile.gifmaker android.permission.READ_PHONE_STATE";
    var photo = "pm grant com.smile.gifmaker android.permission.CAMERA";
    var write = "pm grant com.smile.gifmaker android.permission.WRITE_EXTERNAL_STORAGE";
    var read = "pm grant com.smile.gifmaker android.permission.READ_EXTERNAL_STORAGE";
    auth(packageName,phone,photo,write,read);
}


function cmd(cmdStr,cmdStr1) {
    var sh = new Shell(true);
    sh.exec(cmdStr);
    if (cmdStr1){
        sh.exec(cmdStr1);
    }
    sleep(1000);
    sh.exit;
}


function clear(mastPackagename,otherPackagename) {
    var sh = new Shell(true);
    sh.exec("pm clear"+" "+mastPackagename);//执行代码运行中属于异步运行
    sh.exec("pm clear"+" "+otherPackagename);//执行代码运行中属于异步运行
    sleep(1000);
    sh.exit;
}

function setPhone(cmdStr,deviceId) {
    if(cmdStr){
        cmd(cmdStr,"setphone -a " + deviceId);
        toast("设备大师指定刷新")
    }else{
        cmd("setphone","setphone -a " + deviceId);
        toast("设备大师随机刷新")
    }
    clear(getPackageName("快手"),getPackageName("微博"));
}

// 92a98c170a174060bac927f026e90c78
function setIp(deviceIp) {
    if (deviceIp){
        cmd("ipclient 92a98c170a174060bac927f026e90c78 1 region true cities " + deviceIp,"");
        // cmd("ipclient 92a98c170a174060bac927f026e90c78 1","");
    }else{
        cmd("ipclient 92a98c170a174060bac927f026e90c78 1","");
    }
    toast("云机代理ip: " + deviceIp )
}




//设备id
var deviceId = device.getAndroidId();
print(deviceId);

//创建秘钥
createRedisKey(deviceId);

//主流程
ksFans(deviceId);


// adb pull /storage/emulated/0/脚本/login/build/login_v1.0.0.apk  D:\KS


// setphone -a a786f7eb46d80d8 -m Xiaomi -s 1QASSCJ99J91UTPO -i 866001033006546 -w 71:00:e7:2c:32:5e -n FAST-Ym31 -b xiaomi -o Redmi Note 4x -e 460066624657531 -p {product}

到了这里,关于用户设备IP三者绑定自动上号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用代理ip实现自动化爬虫任务管理

        我们在进行爬虫任务管理时,需要对爬取目标、爬取频率、数据存储等多个方面进行规划和管理。使用HTTP代理可以帮助我们提高爬虫效率,同时也可以实现自动化的爬虫任务管理。下面我们来分析一下怎么利用代理ip实现自动化爬虫任务管理。                 一、选

    2024年02月10日
    浏览(80)
  • 常用服务器和存储设备管理口默认IP用户名密码汇总(持续更新)

    一、服务器设备默认管理 1、宝德4卡服务器 默认用户名:ADMIN        密码:11111111 2、超微服务器 默认用户名:ADMIN   密码:admin000 默认用户名:ADMIN   密码:ADMIN 3、浪潮服务器 默认用户/密码:admin/admin ------------------------------------------ 浪潮AS5300/5500 默认 IP 为 192.168.1.

    2024年02月05日
    浏览(39)
  • 超网、IP 聚合、IP 汇总分别是什么?三者有啥区别和联系?

    一、超网 超网(Supernet)是一种网络地址聚合技术,它可以将多个连续的网络地址合并成一个更大的网络地址,从而减少路由表的数量和大小。超网技术可以将多个相邻的网络地址归并成一个更大的网络地址,这个更大的网络地址可以用来代替原来的多个网络地址,从而简化

    2024年04月09日
    浏览(29)
  • 【WPF】异步任务更新UI、绑定命令、绑定字符串属性

    WPF异步任务 主界面 在视图模型中定义命令: 在主界面xaml中绑定命令:  创建命令实例:

    2024年02月09日
    浏览(50)
  • Linux 内核设备树时钟绑定

    这种绑定依然处于开发中,并且基于 benh[1] 的一些实验性工作。 时钟信号源可以由设备树中的任何节点表示。这些节点被指定为时钟提供者。时钟消费者节点使用 phandle 和时钟指示符对将时钟提供者输出连接到时钟输入。与 gpio 指示符类似,时钟指示符是 0 个、1 个或多个标

    2024年02月17日
    浏览(35)
  • Vue3-属性绑定、定时任务

    2024年02月07日
    浏览(31)
  • rabbitMQ:绑定Exchange发送和接收消息(direct)

    AMQP 协议中的核心思想就是生产者和消费者的解耦,生产者从不直接将消息发送给队列。生产者通常不知道是否一个消息会被发送到队列中,只是将消息 发送到一个交换机。先由 Exchange 来接收,然后 Exchange 按照特定的策略转发到 Queue 进行存储。Exchange 就类似于一个交换机,

    2024年02月15日
    浏览(24)
  • OSI(七层)网络模型,三次握手四次挥手梳理,Socket.TCP/IP.HTTP三者说明

    目录 一   OSI网络模型 二   三次握手与四次挥手的简单理解 ● 常见问题梳理 三   Socket,TCP/IP,HTTP ① TCP/IP连接 ② HTTP连接 ③ Socket说明 ● 套接字(socket)概念 ● 建立socket连接 四   Socket连接与TCP/IP连接 五   Socket连接与HTTP连接 OSI网络模型也称七层网络模型 7 应用层

    2023年04月09日
    浏览(35)
  • python3发送Gratuitous ARP更新vip绑定关系

    操作系统 :CentOS 7.6_x64 Python版本:3.9.12 FreeSWITCH版本 :1.10.9 高可用场景下,vip切换完成后需要发送arp广播更新ip和mac地址的绑定关系,如果不及时发广播,会导致tcp重连等问题。 今天记录下python3如何使用arp广播更新ip和mac地址的绑定关系,我将从以下几个方面进行展开:

    2024年02月03日
    浏览(26)
  • 人脸识别平台批量导入绑定设备的一种方法

            因为原先平台绑定设备是通过一个界面进行人工选择绑定或一个人一个人绑定设备。如下:  但有时候需要在几千个里选择出几百个,那这种方式就不大现实了,需要另外一种方法。   目前相到可以通过导入批量数据进行绑定的方式。 一、前端 主要是显示选择文件

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包