最近今日头条安卓版本推出了一个『任务中心』,总结反正就是看文章、看视频、看广告,可以给你金币,然后金币可以兑换人民币
说白了就是想嫖我们用户的时间,广告主给它钱,人家再给点钱打发一下用户
那。。岂能让他白嫖我,我不得嫖回去
基本就是一下几点
每隔十分钟可以领取一次宝箱金币,领取了以后,可以看看广告继续增加金币收益
每天有十次看广告领取金币
刷小视频有金币收益
以上比较容易自动化,其他的得空手点一下
白嫖准备工作
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 在生活工作中用来提升效率