找回密码
  注册[Register]
查看: 1703|回复: 10

[python] 抖音自动关注粉丝引流脚本,最新测试每天可加110人左右,python脚本,到手可用

  [复制链接]
发表于 2020-6-18 10:22 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

我只发脚本,别的什么都不说了,版主别开枪!


因为很多人在问,这个不是什么高大上的玩意儿,发出来共同进步!我自己在用的,还只有这个稳定一点,别的什么其实都不好用。


需要自己截图,存在程序同目录下,就是通过图片判断,是否点击和点击位置。

主程序
  1. #python 3.6.4
  2. # encoding:utf-8

  3. #确保已连接好adb
  4. #1080 2280 分辨率,一加6测试通过
  5. #抖音版本20200618

  6. import os
  7. import cv2
  8. import sys
  9. import time
  10. import random
  11. from PIL import Image #pip install pillow  
  12. import diannaoshuohua
  13. import zhaotu

  14. # 上传照片到电脑
  15. def screen():
  16.         # 截图保存在手机上
  17.         os.system('adb shell screencap -p /sdcard/screen.png')
  18.         # 传到电脑上
  19.         os.system('adb pull /sdcard/screen.png')

  20. # 截图,粉丝详情页图片
  21. def screen3():
  22.         # 截图保存在手机上
  23.         os.system('adb shell screencap -p /sdcard/screen3.png')
  24.         # 传到电脑上
  25.         os.system('adb pull /sdcard/screen3.png')


  26. #处理照片
  27. def getDistance():         
  28.         #读取图片
  29.         image = Image.open('screen.png')
  30.         #返回元组
  31.         width = image.size[0]
  32.         height = image.size[1]
  33.         #print(height,width)

  34.         for i in range(803,804):#遍历一个纵列
  35.                 for j in range(0,height):
  36.                         if image.getpixel((i,j))[:3] == (179, 38, 69):#如果找到符合位置的颜色点,则确定了按钮所在
  37.                                 yield j   #生成器。返回所有找到的纵坐标的值

  38. def jietu(mubiaotu):
  39.         # 打开刚截取的全屏图
  40.         img = Image.open(mubiaotu)
  41.         # 定位到需要截取的地方
  42.         img = img.crop((0, 200, 1080, 1400))
  43.         # 截取成功并保存到本地
  44.         img.save('screen3_jietu.png')

  45. def as_num(x):
  46.     y = '{:.10f}'.format(x)  # .10f 保留10位小数
  47.     return y

  48. # 查找图片
  49. def findImg(target1,template2):
  50.         #读取目标图片
  51.         target = cv2.imread(target1)
  52.         #读取模板图片
  53.         template = cv2.imread(template2)
  54.         #获得模板图片的高宽尺寸
  55.         theight,twidth = template.shape[:2]
  56.         #执行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED
  57.         result = cv2.matchTemplate(target,template,cv2.TM_SQDIFF_NORMED)
  58.         cv2.normalize(result,result, 0, 1, cv2.NORM_MINMAX, -1 )
  59.         min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
  60.         strmin_val = str(min_val)
  61.         cv2.rectangle(target,min_loc,(min_loc[0]+twidth,min_loc[1]+theight),(0,0,225),2)
  62.         print ("匹配最小值为:"+as_num(float(str(min_val))))
  63.         print ('匹配最大值为:'+as_num(float(str(max_val))))
  64.         r = int((image.getpixel((min_loc[0]+23,min_loc[1]+17)))[0])
  65.         if (abs(float(as_num(float(str(max_val))))) >= 0.9) and r > 180:#如果找到符合位置的颜色点:
  66.                 print ('找到符合的图片')
  67.                 return True
  68.         else:
  69.                 print('没有找到符合的图片')
  70.                 return False


  71. if __name__ == '__main__':#主函数开头

  72.         i=0
  73.         n=0
  74.         sj = random.uniform(1,5)

  75.          
  76.         for _ in range(100):
  77.                 screen()
  78.                 print('截屏某用户的粉丝列表')
  79.                 xy = zhaotu.findImg2('s.png','screen.png')
  80.                 for d in xy:
  81.                         screen()
  82.                         time.sleep(sj)
  83.                         os.system('adb shell input tap {} {}'.format(d[0],d[1]))
  84.                         time.sleep(sj)
  85.                         screen3()#个人详情页截图        
  86.                         time.sleep(sj)
  87.                         jietu('screen3.png')
  88.                         time.sleep(sj)        
  89.                         
  90.                         if zhaotu.findImg1('nv.png','screen3_jietu.png'):
  91.                                 xy = zhaotu.findImg1('nv.png','screen3_jietu.png')
  92.                                 image = Image.open("screen3_jietu.png")#打开个人详情页截图
  93.                                 r = int((image.getpixel((xy[0],xy[1])))[0])
  94.                                 if (r > 180):
  95.                                         print('找到一位女士,即将关注!')
  96.                                         os.system('adb shell input tap 550 466')#点击关注按钮,暂用坐标,待完善
  97.                                         time.sleep(sj)
  98.                                         os.system('adb shell input keyevent 4')
  99.                                         time.sleep(sj)                                         
  100.                                         i=i+1
  101.                                         print('已关注了'+str(i)+'位女士')
  102.                                         if i == 175:
  103.                                                 print('本次运行已关注198人,已退出运行!')
  104.                                                 diannaoshuohua.shuohua('本次已关注198人,即将退出!')
  105.                                                 os.system('adb shell input keyevent 26')#power事件。
  106.                                                 sys.exit()
  107.                                 else:
  108.                                         os.system('adb shell input keyevent 4') #点击后退按钮        
  109.                         else:
  110.                                 print('这不是女士,即将返回!')
  111.                                 n=n+1
  112.                                 os.system('adb shell input keyevent 4') #点击后退按钮
  113.                                          
  114.                 #翻页滑动按钮
  115.                 os.system('adb shell input swipe 548 1500 540 225 511')
  116.                 time.sleep(random.uniform(0.4, 0.8))
  117.                 print('正在翻页。。。')


  118. #zhaotu.py 调用方法:findImg('目标图片地址','模板图片地址')
  119. #findImg2----多目标匹配,返回的是生成器结果,需要for遍历出单个结果
  120. #findImg1----单目标匹配,返回图片所在位置的中心点坐标值

  121. import cv2
  122. import numpy
  123. from PIL import Image

  124. def as_num(x):
  125.     y = '{:.10f}'.format(x)  # .10f 保留10位小数
  126.     return y

  127. def findImg2(target,template):#opencv模板匹配----多目标匹配
  128.         #读取目标图片
  129.         target = cv2.imread(target)
  130.         #读取模板图片
  131.         template = cv2.imread(template)
  132.         #获得模板图片的高宽尺寸
  133.         theight, twidth = template.shape[:2]
  134.         #执行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED  
  135.         print(theight,twidth)
  136.         result = cv2.matchTemplate(target,template,cv2.TM_SQDIFF_NORMED) #CV_TM_SQDIFF_NORMED

  137.         min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

  138.         cv2.rectangle(target,min_loc,(min_loc[0]+twidth,min_loc[1]+theight),(0,0,225),2)

  139.         strmin_val = str(min_val)
  140.         #初始化位置参数
  141.         temp_loc = min_loc
  142.         other_loc = min_loc
  143.         numOfloc = 1
  144.         #第一次筛选----规定匹配阈值,将满足阈值的从result中提取出来
  145.         #对于cv2.TM_SQDIFF及cv2.TM_SQDIFF_NORMED方法设置匹配阈值为0.01
  146.         threshold = 0.01 #这个值从0.01到0.05之间
  147.         loc = numpy.where(result<threshold)
  148.         if loc:
  149.                 #遍历提取出来的位置
  150.                 for other_loc in zip(*loc[::-1]):
  151.                     #print(other_loc[0],other_loc[1])
  152.                     yield other_loc
  153.         else:
  154.                 return false


  155. # 查找设定的图片是否包含在另一张图片里
  156. def findImg1(target1,template2):#传入要查找的图片地址和名称,1为大图,2为小图,从大图里查找小图。
  157.         #读取目标图片
  158.         target = cv2.imread(target1)
  159.         theight1,twidth1 = target.shape[:2]
  160.         #读取模板图片
  161.         template = cv2.imread(template2)
  162.         #获得模板图片的高宽尺寸
  163.         theight,twidth = template.shape[:2]
  164.         #执行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED
  165.         result = cv2.matchTemplate(target,template,cv2.TM_SQDIFF_NORMED)
  166.         #归一化处理
  167.         cv2.normalize(result,result, 0, 1, cv2.NORM_MINMAX, -1 )
  168.         #寻找矩阵(一维数组当做向量,用Mat定义)中的最大值和最小值的匹配结果及其位置
  169.         min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
  170.         #对于cv2.TM_SQDIFF及cv2.TM_SQDIFF_NORMED方法min_val越趋近与0匹配度越好,匹配位置取min_loc
  171.         #对于其他方法max_val越趋近于1匹配度越好,匹配位置取max_loc
  172.         strmin_val = str(min_val)
  173.         #min_loc:矩形定点
  174.         cv2.rectangle(target,min_loc,(min_loc[0]+twidth,min_loc[1]+theight),(0,0,225),2)
  175.         #显示结果,并将匹配值显示在标题栏上
  176.         print ("匹配最小值为:"+as_num(float(str(min_val))))
  177.         print ('匹配最大值为:'+as_num(float(str(max_val))))

  178.         if (abs(float(as_num(float(str(max_val))))) >= 0.9):# 如果找到
  179.                 print ('找到符合的图片')
  180.                 return min_loc[0]+twidth1/2,min_loc[1]+theight1/2
  181.         else:
  182.                 print('没有找到符合的图片')
  183.                 return False
复制代码


免费评分

参与人数 1热心值 +1 牛币 +1 收起 理由
metsys + 1 + 1

查看全部评分

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2020-6-18 10:28 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-6-18 10:49 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-6-18 10:50 | 显示全部楼层
好的,非常感谢
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-6-18 11:39 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-6-18 11:47 | 显示全部楼层
喜欢但是不会用哭了  
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-6-18 11:52 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-6-18 13:05 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-6-18 14:49 | 显示全部楼层
6666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-6-18 15:18 | 显示全部楼层
主要是怎么用,这方面小白
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|广告投放|大牛论坛

GMT+8, 2024-5-13 00:39 , Processed in 0.076688 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表