添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
坏坏的香槟  ·  Universal Robots - ...·  1 月前    · 
不拘小节的仙人掌  ·  Guide to Zoom: ...·  1 月前    · 
飞奔的大脸猫  ·  Enable Double Tap to ...·  1 月前    · 
微醺的墨镜  ·  Python ...·  3 周前    · 
逆袭的电梯  ·  flutter uint8list to ...·  11 月前    · 
发怒的小蝌蚪  ·  DeepSpeed ...·  1 年前    · 

最近今日头条安卓版本推出了一个『任务中心』,总结反正就是看文章、看视频、看广告,可以给你金币,然后金币可以兑换人民币

说白了就是想嫖我们用户的时间,广告主给它钱,人家再给点钱打发一下用户

那。。岂能让他白嫖我,我不得嫖回去

基本就是一下几点

  • 每隔十分钟可以领取一次宝箱金币,领取了以后,可以看看广告继续增加金币收益
  • 每天有十次看广告领取金币
  • 刷小视频有金币收益
  • 以上比较容易自动化,其他的得空手点一下
  • 白嫖准备工作

    1. 下载 ADB 工具

    ADB 工具提供了一些命令行方法,可以通过 USB 调试的方式操作安卓手机

    我是在 macOS 下,所以只需要运行

    brew install --cask android-platform-tools
    

    Windows 下可以自己找一下方法,或者最傻瓜的方式就是安装 Android Studio

    2. 安卓进入开发者模式

    进入『设置』- 『关于本机』- 『版本信息』

    连续点击『版本号』

    不进入开发者模式,下一步『开发者选项』是没有的。

    3. 安卓手机打开 USB 调试,以及指针位置

    进入『设置』- 『系统设置』- 『开发者选项』

    打开『USB 调试』以及『指针位置』

    应该能看到你触摸的 XY 坐标了

    此时手机插上 USB 数据线连接电脑,应该会有进入 USB 调试的提示

    在电脑命令行中尝试输入以下命令,回车。理论上手机会滑一下屏

    adb shell input swipe 100 760 1000 760
    

    成功执行说明以上三步都没有问题

    编写自动化 Python 脚本

    总共就用到两个 ADB 命令,一个是点击,一个是滑动

    adb shell input swipe {x1} {y1} {x2} {y2}   # 从 x1 y1 滑动到 x2 y2
    adb shell input tap {x} {y}   # 点击 x y
    

    Python 中执行 ADB 脚本可以用

    import os
    def tap(button_x_y):
        cmd = 'adb shell input tap {} {}'.format(button_x_y[0], button_x_y[1])
        os.system(cmd)
    def swipe(from_x_y, to_x_y):
        cmd = 'adb shell input swipe {} {} {} {}'.format(from_x_y[0], from_x_y[1], to_x_y[0], to_x_y[1])
        os.system(cmd)
    

    剩下的就是根据上面研究的规则,基本每个按钮的位置都是固定的,通过手动点击按钮的位置

    找到每个按钮的 x y 坐标(从指针位置图层看到)

    我这边取到了这几个按钮

    宝箱按钮 = (931, 2086)
    去看视频按钮 = (534, 1529)
    关闭视频按钮 = (977, 84)
    再看一个按钮 = (540, 1360)
    领福利按钮 = (866, 1443)
    视频按钮 = (318, 2341)
    小视频按钮 = (494, 295)
    任意一个小视频 = (290, 777)
    退出小视频 = (76, 193)
    任务中心按钮 = (547, 2350)
    

    每个手机的分辨率不一样,所以具体得看你的安卓手机

    然后编写几个操作为方法

    def 开宝箱():
        time.sleep(2)
        tap(宝箱按钮, '宝箱按钮')
        time.sleep(2)
        tap(去看视频按钮, '去看视频按钮')
        time.sleep(30)
        for i in range(3):
            tap(关闭视频按钮, '关闭视频按钮')
            time.sleep(2)
            tap(再看一个按钮, '再看一个按钮')
            time.sleep(30)
        tap(关闭视频按钮, '关闭视频按钮')
    def 领福利():
        time.sleep(2)
        tap(领福利按钮, '宝箱按钮')
        time.sleep(2)
        tap(去看视频按钮, '去看视频按钮')
        time.sleep(30)
        for i in range(3):
            tap(关闭视频按钮, '关闭视频按钮')
            time.sleep(2)
            tap(再看一个按钮, '再看一个按钮')
            time.sleep(30)
        tap(关闭视频按钮, '关闭视频按钮')
    def 去小视频页面():
        time.sleep(3)
        tap(视频按钮, '视频按钮')
        time.sleep(3)
        tap(小视频按钮, '小视频按钮')
        time.sleep(5)
        tap(任意一个小视频, '点任意一个小视频')
    def 刷小视频():
        for i in range(6):
            swipe()
            time.sleep(10)
    def 去任务中心页面():
        time.sleep(2)
        tap(退出小视频, '退出小视频')
        time.sleep(2)
        tap(任务中心按钮, '任务中心按钮')
    

    最后根据设想的逻辑,写一个调度方法

    # 需要传入领福利次数,因为你启动脚本的时候,可能每日领福利次数不是 10 次
    def auto_earn_coin(领福利次数):
        下次领福利时间戳 = 0
        下次开宝箱时间戳 = 0
        while True:
            now = int(time.time())
            if now > 下次开宝箱时间戳:
                print('去开宝箱')
                开宝箱()
                下次开宝箱时间戳 = now + 630
                print('下次开宝箱时间', get_strftime(下次开宝箱时间戳))
                continue
            if 领福利次数 > 0 and now > 下次领福利时间戳:
                print('去领福利')
                领福利()
                下次领福利时间戳 = now + 730
                领福利次数 -= 1
                print('还能领福利次数', 领福利次数, '下次领福利时间', get_strftime(下次领福利时间戳))
                continue
            if 下次开宝箱时间戳 - now > 120:
                print('刷两分钟小视频先')
                去小视频页面()
                刷小视频()
                去任务中心页面()
                continue
            time.sleep(5)
    

    总的逻辑就是:

  • 进来先判断是否可以开宝箱,如果可以则开,然后看广告,看完以后,记录下次刷新时间
  • 如果可以领福利,去领福利,然后继续看广告,看完以后,记录下次刷新时间
  • 如果离下次开宝箱时间还有 2 分钟以上,先去刷一会小视频
  • 其实这个脚本也并非 Python 才能做,其实用系统自带的批处理脚本就行,只是习惯了 Python

    也是突发奇想弄一下,因为最早的时候微信跳一跳刚流行的时候,用过类似的方法作弊玩过,当然那个就稍微复杂一些,需要使用 ADB 截图以后,Python 分析出需要多长时间的触摸蓄力

    完整代码下载

    另外,如果有兴趣,可以关注一下,最近在教零基础的对象学 Python,会顺便分享出来,主要想要达成的目的是用 Python 在生活工作中用来提升效率