今天无意中看到一篇一年前的技术文章,文章的作者ID为“神奇的战士”(Github上ID为wangshub),这位作者也是曾经有名的“微信跳一跳辅助”的Python大佬。
下面言归正传,看看如何利用Python做一些有趣的事,比如在抖音上找到漂亮小姐姐。
技术原理很简单,主要利用的是Python和Android ADB的结合,加以AI辅助,从而实现在抖音上发现漂亮面孔、点赞、关注以及自动评论,先来看看成效如何:
自动关注+点赞
实现功能包括:
- 自动翻页
- 颜值检测
- 人脸识别
- 自动点赞
- 自动关注
- 随机防 Ban
- 自动评论
实现步骤如下:
- 打开《抖音短视频》APP,进入主界面
- 获取手机截图,并对截图进行压缩 (Size < 1MB);
- 请求人脸识别 API;
- 解析返回的人脸 Json 信息,对人脸检测切割;
- 当颜值大于门限值 BEAUTY_THRESHOLD时,点赞并关注;
- 下一页,返回第一步。
下面我们来看看部分代码实现:
使用adb shell input swipe实现滑动,从而实现“下一页”:
在终端中输入 adb shell input swipe 540 1300 540 500 100
表示从坐标点(540,1300)用100ms滑动到(540,500)坐标点, 最后的100,为时间参数,以毫秒为单位,不填则为默认时间。
code:
def next_page(): """ 翻到下一页 :return: """ cmd = 'shell input swipe {x1} {y1} {x2} {y2} {duration}'.format( x1=config['center_point']['x'], y1=config['center_point']['y']+config['center_point']['ry'], x2=config['center_point']['x'], y2=config['center_point']['y'], duration=200 ) adb.run(cmd) time.sleep(1.5)
使用adb shell input tap实现屏幕点击,从而实现“点赞”和“关注”:
在终端中输入 adb shell input tap 500 500
表示在坐标500,500处进行点击
code:
def thumbs_up(): """ 点赞 :return: """ cmd = 'shell input tap {x} {y}'.format( x=config['star_bottom']['x'] + _random_bias(10), y=config['star_bottom']['y'] + _random_bias(10) ) adb.run(cmd) time.sleep(0.5)
def follow_user(): """ 关注用户 :return: """ cmd = 'shell input tap {x} {y}'.format( x=config['follow_bottom']['x'] + _random_bias(10), y=config['follow_bottom']['y'] + _random_bias(10) ) adb.run(cmd) time.sleep(0.5)
使用 am broadcast -a ADB_INPUT_TEXT --es msg,从而实现自动评论:
在控制台输入adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'test'
即可实现输入指定的文本
code:
def auto_reply(): msg = "垆边人似月,皓腕凝霜雪。就在刚刚,我的心动了一下,小姐姐你好可爱呀_Powered_By_Python" # 点击右侧评论按钮 tap(config['comment_bottom']['x'], config['comment_bottom']['y']) time.sleep(1) #弹出评论列表后点击输入评论框 tap(config['comment_text']['x'], config['comment_text']['y']) time.sleep(1) #输入上面msg内容 ,注意要使用ADB keyboard 否则不能自动输入,参考:https://www.jianshu.com/p/2267adf15595 cmd = 'shell am broadcast -a ADB_INPUT_TEXT --es msg {text}'.format(text=msg) adb.run(cmd) time.sleep(1) # 点击发送按钮 tap(config['comment_send']['x'], config['comment_send']['y']) time.sleep(0.5) # 触发返回按钮, keyevent 4 对应安卓系统的返回键,参考KEY 对应按钮操作: cmd = 'shell input keyevent 4' adb.run(cmd)
而对于漂亮小姐姐的识别,则是将当前视频屏幕进行截图,然后将图片放到AI平台,调用其API进行判断(请自行申请AI平台的AppID和AppKey),如腾讯AI、百度AI等:
利用BEAUTY_THRESHOLD与API返回的JSON数据中的beauty值进行比对,从而判断是否为“漂亮”小姐姐,当然代码中的BEAUTY_THRESHOLD的初始默认值为80,可以根据需要自行修改。
需要注意的是,目前该代码暂时只适配了一加5(1920x1080 分辨率),如果手机不是该分辨率,需要修改 config/ 文件夹下面的配置文件;
- config.json配置文件参考:
- center_point: 屏幕中心点(x, y),区域范围 rx, ry
- follow_bottom: 关注按钮位置(x, y),区域范围 rx, ry
- star_bottom: 点赞按钮位置(x, y),区域范围 rx, ry
另外,面部截取的图片会保存在名为face的文件夹中,
目前该代码在Github上的Star数量已高达6.7K,甚至曾被Github官方推荐至首页,果然是广大技术宅男之福音。
随着Python的越来越流行,使用Python可以做出很多有趣的事,各位少年,加油吧!