开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 10122|回复: 14
收起左侧

[JS例程分享] 【原创】基于autojs的TikTok自动关注及自动私信脚本源码

[复制链接]
发表于 2020-12-28 23:57:47 | 显示全部楼层 |阅读模式   浙江省杭州市
本帖最后由 dnahonker 于 2020-12-29 00:03 编辑

源代码仅供学习研究autojs使用,不得用于任何非法行为,否则一切后果自行承担。

目前tiktok比较火,花了一天看了一下autojs的文档,又花了一天根据文档写了一个Tiktok的自动关注及自动私信脚本,带UI,使用的是autojs4.0版本,autojs使用的是javascript作为主要编程语言,脚本比较简单,将代码导入到autojs即可运行。脚本适配了华为麦芒5手机,分辨率一样的手机都可以使用。必须安卓7.0以上系统,否则不能使用autojs,不需要越狱。脚本特点是可以设置关注某一个用户的粉丝列表,也可以随机关注用户的粉丝列表,关注用户时随机时间。发私信自动添加随机表情,以防被封,如遇已发过的私信不再继续发送。以下是脚本运行截图。源代码仅供学习研究autojs使用,不得用于任何非法行为,否则一切后果自行承担。

000.png


autojs的界面和程序不能写到一个线程里面,否则就无法使用,以下是详细代码:
  1. "ui";
  2. ui.layout(
  3.                 <frame>
  4.                 <ScrollView>
  5.                         <vertical h="auto" w="*">
  6.                         <card  w="*" margin="10 5"  h="70" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical">
  7.                                 <vertical h="auto" w="*">
  8.                                         <text paddingLeft="20" paddingTop="16" text="TikToK自动化脚本" w="auto" textSize="16sp" textColor="#000000"/>
  9.                                         <text paddingLeft="20" paddingBottom="16" text="unsoft出品" w="auto"/>
  10.                                 </vertical>
  11.                                 <View bg="#f44336" h="auto" w="10"/>
  12.                         </card>
  13.                         <card  w="*" margin="10 5"  h="250" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical">
  14.                                 <vertical h="auto" w="*">
  15.                                         <horizontal>
  16.                                                 <text paddingLeft="20" paddingTop="16" text="自动关注设置" w="auto" textColor="#000000"/>
  17.                                         </horizontal>
  18.                                         <horizontal>
  19.                                                 <text paddingLeft="20" text="关注间隔" w="auto" />
  20.                                                 <input id="bmiao" inputType="number" text="2" w="50" gravity="center"/>
  21.                                                 <text text="秒至" w="auto"/>
  22.                                                 <input id="emiao" inputType="number" text="5" w="50" gravity="center"/>
  23.                                                 <text text="秒" w="auto"/>
  24.                                         </horizontal>
  25.                                         <horizontal>
  26.                                                 <text paddingLeft="20" text="每作品关注" w="auto"/>
  27.                                                 <input id="zpnumb" inputType="number" text="200" w="50" gravity="center"/>
  28.                                                 <text text="个粉丝" w="auto"/>
  29.                                         </horizontal>
  30.                                         <horizontal>
  31.                                                 <text paddingLeft="20" text="总共关注" w="auto"/>
  32.                                                 <input id="allnumb" inputType="number" text="200" w="50" gravity="center"/>
  33.                                                 <text text="个粉丝" w="auto"/>
  34.                                         </horizontal>
  35.                                         <horizontal padding="20">
  36.                                                 <button id="btn_gz" w="*" text="开始关注" gravity="center" bg="#409EFF" textColor="#ffffff"/>
  37.                                         </horizontal>
  38.                                 </vertical>
  39.                                 <View bg="#FFA500" h="auto" w="10"/>
  40.                         </card>
  41.                         <card  w="*" margin="10 5"  min-h="250" cardCornerRadius="2dp" cardElevation="1dp" gravity="center_vertical">
  42.                                 <vertical h="auto" w="*">
  43.                                         <horizontal>
  44.                                                 <text paddingLeft="20" paddingTop="16" text="自动私信设置" w="auto" textColor="#000000"/>
  45.                                         </horizontal>
  46.                                         <horizontal paddingRight="20">
  47.                                                 <text paddingLeft="20" text="私信一:" w="auto" />
  48.                                                 <input id="fst" w="*"/>
  49.                                         </horizontal>
  50.                                         <horizontal paddingRight="20">
  51.                                                 <text paddingLeft="20" text="私信二:" w="auto" />
  52.                                                 <input id="sec" w="*"  />
  53.                                         </horizontal>
  54.                                         <horizontal paddingRight="20">
  55.                                                 <text paddingLeft="20" text="私信三:" w="auto" />
  56.                                                 <input id="thr" w="*"  />
  57.                                         </horizontal>
  58.                                         <horizontal padding="20">
  59.                                                 <button id="btn_sx" w="*"  text="开始私信" gravity="center" bg="#409EFF" textColor="#ffffff"/>
  60.                                         </horizontal>
  61.                                 </vertical>
  62.                                 <View bg="#4caf50" h="auto" w="10"/>
  63.                         </card>
  64.                         </vertical>
  65.                         </ScrollView>
  66.                 </frame>
  67.         );


  68.        
  69. var fuhao=[","];
  70. var pics=["1","2","3"];//图片有表情帖子就发不上来

  71. function flo()
  72. {
  73.         var w = floaty.rawWindow(
  74.     <frame gravity="center">
  75.         <text id="flt" text="Stop" textSize="16sp" textColor="red"/>
  76.     </frame>
  77.         );
  78.         w.setPosition(0, 500);

  79.         w.flt.click(function(){
  80.     //停止所有脚本
  81.         threads.start(endprocess);
  82. }
  83. );
  84. }

  85. function main_gz()
  86. {
  87.         auto.waitFor();
  88.         console.show();
  89.         //flo();
  90.         var int_bmiao=parseInt(ui.bmiao.getText());//起始秒数
  91.         var int_emiao=parseInt(ui.emiao.getText());//结束秒数
  92.         var int_zpnumb=parseInt(ui.zpnumb.getText());//每作品关注人数
  93.         var int_allnumb=parseInt(ui.allnumb.getText());//总计关注人数
  94.         var i=0;
  95.         var j=0;
  96.     toast("开启关注程序!");
  97.         launchApp("TikTok");
  98.         //sleep(3000);
  99.         //click(106,1700);
  100.         sleep(4000);
  101.        
  102.         while(i<int_allnumb)
  103.         {
  104.                 click(985,560);
  105.                 sleep(2000);
  106.                 var user=id("aol").findOne();
  107.                 sleep(2000);
  108.                 click(user.bounds().centerX(),user.bounds().centerY());
  109.                 sleep(2000);
  110.                 m=0;
  111.                 while(m<int_zpnumb)
  112.                 {
  113.                         var follow=id("s3").find();
  114.                         sleep(800)
  115.                         console.log("找到点击目标");
  116.                         for(n=0;n<follow.length;n++)
  117.                         {
  118.                                
  119.                                 var txt=follow[n].text();
  120.                                 if(txt=="Follow" && m<int_zpnumb && follow[n].bounds().centerY()<1789 && follow[n].bounds().centerY()>360)
  121.                                 {
  122.                                         click(follow[n].bounds().centerX(),follow[n].bounds().centerY());
  123.                                         var rdm=random(int_bmiao,int_emiao);
  124.                                         sleep(rdm*1000);
  125.                                         console.log("正在点击...");
  126.                                         m++;
  127.                                         i++;
  128.                                 }
  129.                         }
  130.                         sleep(2000);
  131.                         swipe(540,1618,540,330,1000);
  132.                         sleep(2000)
  133.                 }
  134.                 back();
  135.                 sleep(1000);
  136.                 back();
  137.                 sleep(2000);
  138.                 swipe(540,1618,540,330,500);
  139.                 sleep(2000);
  140.         }
  141.        
  142.         toast("程序结束!");
  143. }

  144. ui.btn_gz.click(function(){
  145.     //开始关注
  146.         threads.start(main_gz);
  147. });

  148. ui.btn_sx.click(function(){
  149.     //开始私信
  150.         threads.start(main_sx);
  151. }
  152. );


  153. function endprocess()
  154. {
  155.         engines.stopAll();
  156.         floaty.closeAll();
  157.         toast("程序结束!");
  158. }

  159. function main_sx()
  160. {
  161.         auto.waitFor();
  162.         console.show();
  163.         //flo();
  164.         var fsts=ui.fst.getText();//私信一
  165.         var ssecs=ui.sec.getText();//私信二
  166.         var thrs=ui.thr.getText();//私信三
  167.         var str_fst=String(fsts);
  168.         var str_sec=String(ssecs);
  169.         var str_thr=String(thrs);
  170.         toast("开启私信程序!");
  171.         launchApp("TikTok");
  172.         sleep(2000);
  173.         click(754,1700);
  174.         sleep(2000);
  175.         while(true){
  176.                 var msg=id("s3").find();
  177.                 console.log("找到目标");
  178.                 sleep(800);
  179.                 for(n=0;n<msg.length;n++)
  180.                 {
  181.                         stat=1;
  182.                         if(msg[n].bounds().centerY()<1603 && msg[n].bounds().centerY()>240 && msg[n].text()=="Message")
  183.                         {
  184.                                 click(msg[n].bounds().centerX(),msg[n].bounds().centerY());
  185.                         }
  186.                         else
  187.                         {
  188.                                 continue;
  189.                         }
  190.                         console.log("正在点击...");
  191.                         sleep(1000);
  192.                        
  193.                         var istxt=id("bsa").findOnce();
  194.                         sleep(800);
  195.                         if(istxt!=null)
  196.                         {
  197.                                 console.log("已经发过了");
  198.                                 stat=2;
  199.                                 sleep(1000);
  200.                         }
  201.                         /*
  202.                         var cud=id("cud").findOnce();
  203.                         sleep(800);
  204.                         if(cud!=null)
  205.                         {
  206.                                 console.log("被封号了");
  207.                                 engines.stopAll();
  208.                                 stat=2;
  209.                                 sleep(1000);
  210.                         }
  211.                         */
  212.                         if(stat==1)
  213.                         {
  214.                                 if(str_fst!="")
  215.                                 {
  216.                                         console.log("发送第一句");
  217.                                         var nb=parseInt(random(0,fuhao.length));
  218.                                         var picnb=parseInt(random(0,pics.length));
  219.                                         //var str_fst_txt=str_fst+fuhao[nb]+pics[picnb];
  220.                                         var str_fst_txt=str_fst+" "+pics[picnb];
  221.                                         id("bs8").setText(str_fst_txt);
  222.                                         sleep(1000);
  223.                                         id("cli").findOne().click();
  224.                                         sleep(1000)
  225.                                 }
  226.                                 if(str_sec!="")
  227.                                 {
  228.                                         console.log("发送第二句");
  229.                                         var nb=parseInt(random(0,fuhao.length));
  230.                                         var picnb=parseInt(random(0,pics.length));
  231.                                         //var str_sec_txt=str_sec+fuhao[nb]+pics[picnb];
  232.                                         var str_sec_txt=str_sec+" "+pics[picnb];
  233.                                         id("bs8").findOne().setText(str_sec_txt);
  234.                                         sleep(1000);
  235.                                         id("cli").findOne().click();
  236.                                         sleep(1000)
  237.                                 }
  238.                                 if(str_thr!="")
  239.                                 {
  240.                                         console.log("发送第三句");
  241.                                         var nb=parseInt(random(0,fuhao.length));
  242.                                         var picnb=parseInt(random(0,pics.length));
  243.                                         //var str_thr_txt=str_thr+fuhao[nb]+pics[picnb];
  244.                                         var str_thr_txt=str_thr+" "+pics[picnb];
  245.                                         id("bs8").findOne().setText(str_thr_txt);
  246.                                         sleep(1000);
  247.                                         id("cli").findOne().click();
  248.                                         sleep(1000)
  249.                                 }
  250.                         }
  251.                         sleep(1000);
  252.                         back();
  253.                         sleep(1000);
  254.                 }
  255.                 swipe(540,1618,540,350,500);
  256.                 sleep(2000);
  257.         }
  258. }
复制代码

autojs比较简单,但是编辑代码比较麻烦,他设置的是在手机端编辑的,虽然官方提供了一个VScode的插件,因为代码本身也比较简单,就懒得去装了。在电脑端写完后全文复制到手机端的。与autojs类似的脚本框架还有很多,都比较简单。看一看文档一般很快就能上手,对于这类脚本应用还有很多地方,可以解放双手。如你也感兴趣欢迎交流学习。
发表于 2022-4-3 10:22:03 | 显示全部楼层   浙江省杭州市
这没有卵用啊
回复 支持 反对

使用道具 举报

发表于 2022-3-7 14:24:07 | 显示全部楼层   福建省泉州市
有成品吗?联系我1109563009
回复 支持 反对

使用道具 举报

结帖率:94% (72/77)
发表于 2022-3-4 10:10:50 | 显示全部楼层   湖南省郴州市

寻tiktok ios协yi  q 3503651
回复 支持 反对

使用道具 举报

发表于 2022-1-4 22:24:41 | 显示全部楼层   河南省郑州市
寻tiktok ios协yi  q 3503651
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 14 天

发表于 2021-12-7 14:58:32 | 显示全部楼层   山东省青岛市
请问楼主,autojs如何解决手机息屏后定时执行任务呢?我做了个脚本打包安装后,设定每天指定时间执行任务,息屏后就不执行了。
回复 支持 反对

使用道具 举报

结帖率:89% (32/36)

签到天数: 6 天

发表于 2021-8-27 12:41:50 | 显示全部楼层   广东省惠州市
厉害啊  可以加个q 学习一下么 我在玩autojs
回复 支持 反对

使用道具 举报

发表于 2021-7-25 18:32:33 | 显示全部楼层   河南省商丘市
楼主怎么联系我的v;keeplsd
回复 支持 反对

使用道具 举报

结帖率:96% (402/420)

签到天数: 7 天

发表于 2021-6-21 16:34:17 | 显示全部楼层   福建省莆田市
dashen258258258 发表于 2021-5-29 00:21
有tiktok成品吗?50000块收成品

可以联系 老马1131121634
回复 支持 反对

使用道具 举报

发表于 2021-5-29 00:21:20 高大上手机用户 | 显示全部楼层   山东省济宁市
why009 发表于 2021-1-7 22:57
支持下楼主  很不错的   我现在也在研究这个

有tiktok成品吗?50000块收成品
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表