马上到“双十一”了,今年天猫推出了瓜分红包的活动,可以通过浏览店铺等方式赚取喵币,为记得更多获取红包的机会,而笔者做为程序员不愿意在京东、天猫上浪费时间。就到Github上去逛了逛,没想到发现一个可以自动刷喵币的项目,笔者亲测成功,现在把攻略推荐给大家。这个项目整体上说和我之前那个《如何用爬虫技术帮助孩子秒到心仪的幼儿园》https://blog.csdn.net/BEYONDMA/article/details/87902276的思路类似,都是使用自动按键的方式来达到与人工点击相同的效果,并且防止底层的注入带来的风险。虽然实现不难,但是思路很好。

1.使用攻略

1.下载安装包

到github上把相关的安装包下载到手机上https://github.com/sleepybear1113/taobaoVisitingVenues/blob/master/%E6%B7%98%E5%AE%9D%E5%96%B5%E5%B8%81_v1.1.0.apk,

2.嵌入悬浮窗口权限,这个各个手机不一样,程序安装完成后一般都有正确揭示。

3.选择功能方式:启动程序,这时会有悬浮窗口出现,先在选择功能项中选择“去浏览+去逛店”的方式。

4.打开淘宝,进入喵币页面:一般每天首次登陆淘宝APP的“双十一合伙人”也就是攒喵币的页面时,都会有弹出有以下页面。这个页面需要大家手工关闭后APP才能正常开始。

4.点击启动:在悬浮窖上点击开始,就能自动逛淘宝得喵币了。

5.程序结束:程序运行完成后就自动退出了。

2.代码初探

本身这个项目是基于auto.js pro 7.0,其实就是手机版本的按键精灵。其中主逻辑都在https://github.com/sleepybear1113/taobaoVisitingVenues/blob/master/src_code/script.js这个脚本中实现,截取主要部分说明如下:

toastLog("开始");/*** 点击领喵币的按钮* @param delay 点击之后延迟多久进行下一个函数* @returns {number}*/
function openBeginningBtnItem(delay) {let items = textStartsWith("gif;base64").depth(19).find();console.log("寻找--领喵币");if (items.length > 0) {let item = items[items.length - 1];console.log("点击--领喵币");clickItemInCenter(item);sleep(delay);return 1;}if (items.length === 0) {let go = text("领喵币").findOne(1000);if (go != null) {console.log("点击--领喵币");clickItemInCenter(go);sleep(delay);return 1;}}return -1;
}/*** 判断是否打开领取中心* @returns {number}*/
function isOpenBeginning() {let signIn = textContains("签到").findOnce();if (signIn != null) {console.log("成功--打开领取中心");return 1;}return -1;
}/*** 确保打开领取中心* @param waitDelay* @returns {number}*/
function ensureOpenBeginning(waitDelay) {if (isOpenBeginning() === -1) {openBeginningBtnItem(waitDelay);}if (isOpenBeginning() === 1) return 1;console.error("失败--打开领取中心");toast("失败--打开领取中心");return -1;
}function checkIn(flag) {console.log("判断店铺签到");if (flag === true) {let getMoney = desc("签到领喵币").findOne(500);if (getMoney != null) {clickItemInCenter(getMoney);console.log("点击签到");sleep(2000);let happyToGet = desc("开心收下").findOnce();clickItemInCenter(happyToGet);console.log("店铺签到获得喵币");sleep(500);}}}/*** 向上滑动*/
function swipeUp() {let x = parseInt(deviceWidth / 2);let duration = 500;let y = [parseInt(deviceHeight * 0.75), parseInt(deviceHeight * 0.25)];swipe(x, y[0], x, y[1], duration);swipe(x, y[0], x, y[1], duration);
}/*** 逛店有没有满* @returns {number}*/
function isFull() {for (let i = 0; i < 10; i++) {if (descContains("已达上限").findOnce() || textContains("已达上限").findOnce()) {console.log("今日已达上限");return 1;}sleep(200);}return 0
}/*** 执行浏览结束的判断操作* @returns {number}*/
function browseFinish() {for (let i = 0; i < 10; i++) {let normalFinishDesc = descContains("已获得").findOnce();let normalFinishText = textContains("已获得").findOnce();let swipeFinishDesc = descContains("任务完成").findOnce();let swipeFinishText = textContains("任务完成").findOnce();if (normalFinishDesc != null || swipeFinishDesc != null || normalFinishText != null || swipeFinishText != null) {console.log("浏览结束");return 0;}sleep(250);}console.log("浏览未知");return -1;
}/*** 判断进入浏览的时候是否需要滑动* @returns {number}*/
function judgeWay() {let timeOut = 1000 * 7;let delay = 250;let loops = parseInt(timeOut / delay);for (let i = 0; i < loops; i++) {let swipeAppearDesc = descContains("滑动浏览得").findOnce();let swipeAppearText = textContains("滑动浏览得").findOnce();if (swipeAppearDesc != null || swipeAppearText != null) {console.log("已获取到滑动浏览模式");return 0;}let directBrowseDesc = desc("浏览").findOnce();let directBrowseText = text("浏览").findOnce();if (directBrowseDesc != null || directBrowseText != null) {if (descContains("00喵币").findOnce() != null || textContains("00喵币").findOnce() != null) {console.log("已获取到正常浏览模式");return 1;}}sleep(delay);}console.log("超时");return -1;
}/*** 关闭领取中心再打开* @returns {number}*/
function reopenAgain() {console.log("reopen");let tbs = id("taskBottomSheet").findOnce();if (tbs == null) return -1;let close = tbs.child(1);if (close != null) {console.log("关闭");clickItemInCenter(close);sleep(1000);return ensureOpenBeginning(2000);}return -1;
}/*** 点击-去浏览 按钮* @returns {number}*/
function clickGoBrowse() {let browse = text("去浏览").findOne(1000);if (browse != null) {let guessYouLike = textContains("猜你喜欢").findOnce();if (guessYouLike != null) {console.log("出现猜你喜欢");let pp = browse.parent().bounds().top;let ppp = guessYouLike.parent().parent().bounds().top;if (ppp === pp) {console.log("跳过--猜你喜欢");let allBrowse = text("去浏览").find();for (let i = 0; i < allBrowse.length; i++) {let item = allBrowse[i];if (item.bounds().top !== browse.bounds().top) {browse = item;}}}}console.log("点击--去浏览");clickItemInCenter(browse);return 1;}return -1;
}/*** 循环执行浏览操作*/
function runGoBrowse() {let isSuccess = 1;// 进行循环浏览for (let i = 0; i < 50; i++) {isSuccess = ensureOpenBeginning(2000); // 打开领取中心if (isSuccess !== 1) break; //打开失败就 -1// 每 5 次重新开关领取中心进行刷新if (i % 5 === 0) {reopenAgain();}// 点击去浏览,如果没找到 去浏览 的按钮,那就关闭领取中心再打开,三次for (let j = 0; j < 3; j++) {isSuccess = clickGoBrowse();if (isSuccess !== 1) {reopenAgain();} else break;}if (isSuccess === -1) break; //如果 3 次之后还是不行,那就 -1toastLog(i);let jw = judgeWay(); //去浏览之后,判断是不是滑动浏览。这里最多延时 7ssleep(1000);// 进行滑动。如果是滑动的话,就是店铺,判断是否有店铺签到的操作。if (jw === 0) {checkIn(isCheckIn);swipeUp();} else if (jw === -1) { //如果没有滑动浏览,那就可能不需要,或者浏览到上限了if (isFull() === 1) { // 这里的最多延时 2sconsole.log("已达上限");backToBefore();reopenAgain();continue;}}// 这里通过不同的情况区分不同的延时if (jw === -1) {sleep(1000 * 10);console.log("10s");} else {sleep(1000 * 14);console.log("14s");}let isF = browseFinish(); //右下角是否出现浏览完成类似的字样。最多延时 2.5sif (isF === 0) {console.log("浏览结束,返回");} else if (isF === -1) {console.log("浏览未正常结束,返回");}backToBefore();}
}

以上就是我今天在Github上看到的惊喜,不知道对于各位读者能否有帮助。

用Github上的高星项目,告诉你程序员过双十一的正确姿势相关推荐

  1. 盘点 12 个 GitHub 上的高仿项目

    今日推荐为什么不建议你用a.equals(b)判断对象相等 SpringBoot中的线程池,你真的会用么? 代码对比工具,就用这7个! 在 IDEA 中的各种调试技巧,轻松定位 Bug(超级全面) 后 ...

  2. 热门App 高仿项目12 个 GitHub 上的高仿项目

    哈喽大家好,今天和大家分享一些现在比较热门 App 的高仿项目,包括高仿微信.微博.B站.斗鱼.抖音.美团.头条.掘金等等. 这些项目涉及的技术栈有 Vue.Flutter 等等,看这些高仿项目的源码 ...

  3. Github上安卓榜排名第2的程序员教你如何学习【转载,侵删】

    来自:峰瑞资本(微信号:freesvc)文章作者:代码家(微信 ID:daimajia_share) 软件早已吞噬整个世界,程序员是关键角色.过去 40 年中,许多伟大的公司都由程序员缔造,比如比尔· ...

  4. 年度盘点!必看AI顶会论文、Github高星项目大合集(附链接)

    目前,国外计算机界评价学术水平主要是看在顶级学术会议上发表的论文,特别是在机器学习.计算机视觉和人工智能领域,顶级会议才是王道.本期我们盘点了2019年人工智能领域的顶会,如最核心的顶会AAAI.IJ ...

  5. 独家 | 年度盘点!必看AI顶会论文、Github高星项目大合集(附链接)

    目前,国外计算机界评价学术水平主要是看在顶级学术会议上发表的论文,特别是在机器学习.计算机视觉和人工智能领域,顶级会议才是王道.本期我们盘点了2019年人工智能领域的顶会,如最核心的顶会AAAI.IJ ...

  6. ChatGPT中文版Prompt提示工程超详细指南《提示工程简介及示例》Github最新破万星项目Meta AI前工程师解密百万年薪提示工程师GPT-4模型优化利器(一)

    提示工程简介及示例 前言 Introduction 导言 提示工程简介 什么是提示工程 大语言模型设置 基础提示词 提示词格式 提示词要素 设计提示的通用技巧 从简单开始 指令 具体性 避免不精确 做 ...

  7. iOS---学习研究大牛Git高星项目YYCategories(三)

    转载请注明出处!!! 本文是接着上一篇博客iOS---学习研究大牛Git高星项目YYCategories(二) 大神果真是大神,一个简单的宏定义类,就有如此多的需要注意的地方.在一篇文章中写篇幅过长就 ...

  8. iOS---学习研究大牛Git高星项目YYCategories(二)

    转载请注明出处. 本文是接着上一篇博客iOS---学习研究大牛Git高星项目YYCategories(一) 三.YYCategoriesMacro.h 一个宏定义类,我会把这一块的功能说一下. tip ...

  9. GitHub上优秀的开源项目(转载)

    GitHub上优秀的开源项目(转载) 转载出处:https://github.com/Trinea/android-open-project 第一部分 个性化控件(View) 主要介绍那些不错个性化的 ...

最新文章

  1. python可视化多个机器学习模型在独立测试集(test data set)上面的AUC值、可视化模型效能
  2. 转换时间对象和字符串对象添加时间
  3. STM32 DMA正常模式等待传输完成和开始下一次传输
  4. mysql 5.6.23 源码包安装报错_大环境下MySQL5.6源码安装实战一步步教你 CentOS6.5_64bit下编译安装...
  5. tomcat8 安装|解决启动慢|进入管理|host-manager 403错误
  6. 开博了,喜欢这里的气氛
  7. arraylist怎么在mysql中排序_对ArrayList中对象元素进行排序
  8. mysql主从 毫秒_MySQL主从数据库同步延迟问题解决(转)
  9. Maven学习总结(3)——使用Maven构建项目
  10. 机器学习《西瓜书》EM算法公式推导+三硬币模型求解实例
  11. matplotlib—matplotlib绘图中出现□的解决办法
  12. 7-6 查找整数 (10 分)
  13. 洛谷 P2117 小Z的矩阵
  14. 局域网管理工具_局域网vnc远程控制软件,七款免费又好用的局域网vnc远程控制...
  15. roseha 11 用VM虚拟机创建集群测试
  16. GIF动态表情图如何制作
  17. 徒手撸一个好玩的App:美图
  18. 5G消息是什么?RCS又是什么?让我们一探究竟
  19. 数组去重——将数组中重复的元素去掉
  20. Bootstarp4 徽章

热门文章

  1. 影评《北京爱情故事》告诉我们一些事
  2. 新库上线 | CnOpenData中国游戏审批数据
  3. python爬取表格指定列_Chrome爬取网页上表格某列的数据
  4. BIOS追code之PEI phase
  5. remote: Support for password authentication was removed on August 13, 2021
  6. “不用谢!”,“不客气!”的十种英文说法
  7. python 各种开源库
  8. 如何设计神经网络结构图,神经网络设计与实现
  9. FusionInsight安全组件FAQ
  10. win10系统应用程序无法正常启动提示0xc0000142错误的解决方法