今天无意中看到一篇一年前的技术文章,文章的作者ID为“神奇的战士”(Github上ID为wangshub),这位作者也是曾经有名的“微信跳一跳辅助”的Python大佬。

下面言归正传,看看如何利用Python做一些有趣的事,比如在抖音上找到漂亮小姐姐。

技术原理很简单,主要利用的是Python和Android ADB的结合,加以AI辅助,从而实现在抖音上发现漂亮面孔、点赞、关注以及自动评论,先来看看成效如何:

java抖音评论抓取 抖音自动抓取评论_java抖音评论抓取

自动关注+点赞

实现功能包括:

  • 自动翻页
  • 颜值检测
  • 人脸识别
  • 自动点赞
  • 自动关注
  • 随机防 Ban
  • 自动评论

实现步骤如下:

  1. 打开《抖音短视频》APP,进入主界面
  2. 获取手机截图,并对截图进行压缩 (Size < 1MB);
  3. 请求人脸识别 API;
  4. 解析返回的人脸 Json 信息,对人脸检测切割;
  5. 当颜值大于门限值 BEAUTY_THRESHOLD时,点赞并关注;
  6. 下一页,返回第一步。

下面我们来看看部分代码实现:

使用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等:

java抖音评论抓取 抖音自动抓取评论_配置文件_02

利用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的文件夹中,

java抖音评论抓取 抖音自动抓取评论_配置文件_03

目前该代码在Github上的Star数量已高达6.7K,甚至曾被Github官方推荐至首页,果然是广大技术宅男之福音。

随着Python的越来越流行,使用Python可以做出很多有趣的事,各位少年,加油吧!