使用Python刷淘宝喵币(低阶入门版)


Posted in Python onOctober 30, 2019

这两天因为双十一来临,到处收集喵币,反反复复的点击操作搞得我十分头痛,遂产生了写个脚本自动点击的想法。

【低阶入门版本】之中不牵扯图像文字转换,或者图像匹配的问题,只是简单的屏幕开屏、点击和滑动。如果你对更智能化的程序有想法,欢迎回复与我一起研究,后续我会增添文字识别和定位,以适应在各类不同屏幕上进行此类操作。

在开始这篇文章前,首先你需要确认自己电脑上安装了 Python 或者 Anacoda(Python的一个集成类库),除此之外安装了ADB(如果没有安装请查看这篇博文),确认用USB链接到了手机,手机需开启USB调试。

如果上述工作全部完成,那我们在接下的过程中应该会进行的很愉快。

首先新建一个Python文件(.py的),引入一些可能会用到的库。

# coding: utf-8
import os
import sys
import subprocess
import time
import math
from PIL import Image
import random

在这之后,我们写上一些按钮、点击与滑动的函数。

def click(x, y): # 点击屏幕(x, y)坐标点
 cmd = 'adb shell input tap {x1} {y1}'.format(x1=x, y1=y)
 os.system(cmd)
 
 
def slide(x, y, ex, ey): # 滑动屏幕从(x, y)坐标点到(ex, ey)坐标点
 print("滑动屏幕")
 cmd = 'adb shell input swipe {x1} {y1} {x2} {y2}'.format(x1=x, y1=y, x2=ex, y2=ey)
 os.system(cmd)
 
 
def touch(key): # 按动相应的按键
 if key == "back":
 print("> 返回按键")
 os.system('adb shell input keyevent 4')
 elif key == "light":
 print("> 开屏按键")
 os.system('adb shell input keyevent 26')
 time.sleep(1) # 等待1s 等手机反应

写一个截屏并且保存的函数,以便我们之后进阶的时候会用到(入门版可跳过)。

在此处这个 screenshot_way 代表截屏的方式,根据手机型号的不同,截屏方式会有差别,如果你的手机不适用与此截屏方式,可在此函数中继续增加其它的截屏方式。

screenshot_way = 2
 
 
def pull_screenshot(filename):
 '''
 获取截屏
 '''
 global screenshot_way
 if screenshot_way == 2 or screenshot_way == 1:
 process = subprocess.Popen('adb shell screencap -p', shell=True, stdout=subprocess.PIPE)
 screenshot = process.stdout.read()
 if screenshot_way == 2:
  binary_screenshot = screenshot.replace(b'\r\n', b'\n')
 else:
  binary_screenshot = screenshot.replace(b'\r\r\n', b'\n')
 f = open(filename, 'wb')
 f.write(binary_screenshot)
 f.close()
 elif screenshot_way == 0:
 os.system('adb shell screencap -p /sdcard/'+filename)
 os.system('adb pull /sdcard/'+filename+' .')

因为我觉得手机可能会息屏,所以写个函数判断一下是不是黑屏(入门版可跳过)。

在屏幕上平均取了100个点(长取10份,宽取10份),判断如果都为黑色,则为息屏状态。

def is_black(im):
 im_pixel = im.load()
 piece_x_dilation = int(im.size[1]/10)
 piece_y_dilation = int(im.size[1]/10)
 piece_x_max = im.size[0]
 piece_y_max = im.size[1]
 for i in range(0, piece_x_max, piece_x_dilation):
 for j in range(0, piece_y_max, piece_y_dilation):
  if not im_pixel[i, j][0] == 0 or not im_pixel[i, j][1] == 0 or \
   not im_pixel[i, j][2] == 0 or not im_pixel[i, j][3] == 255:
  return False
 print("熄屏状态...")
 return True

最后,准备工作就全部完成了,主函数如下。

def main():
 '''
 主函数
 '''
 while True:
 pull_screenshot('autojump.png') # 截图并保存为autojump.png
 im = Image.open('./autojump.png') # 打开截图autojump.png
 if is_black(im): # 如果没写这个函数可以去掉if...一直到else
  touch('light') # 点亮屏幕
  slide(int(im.size[0]/2), int(im.size[1]/1.1), int(im.size[0]/2), int(im.size[1]/2)) # 因为我的手机是上滑解锁,所以上滑了一下
 else:
  print("点击进入浏览")
  click(591, 783) # 这个位置是进入“领喵币”界面底下,那个“去逛逛”按钮的位置
    # 因为是 入门版 ,所以这个坐标就写死了,是我用PS量的(手动滑稽)
  for i in range(0, 10): # 点开之后随机向下滑动几下
     # 滑动位置也有着微小的随机变化(怕被检测出来是机器)
  if random.random() > 0.5:
   slide(int(im.size[0]/2 - (random.random()*20) + 10),
    int(im.size[1]/1.1 - (random.random()*20) + 10),
    int(im.size[0]/2 - (random.random()*20) + 10),
    int(im.size[1]/1.1 - (random.random()*20) - 300)) # 向上稍微滑滑
  time.sleep(3) # 等待3s
  touch('back') # 返回按键
 time.sleep(1) # 等待1s

总结

以上所述是小编给大家介绍的使用Python刷淘宝喵币(低阶入门版),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
Dec 20 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
PyTorch基本数据类型(一)
May 22 Python
python中 * 的用法详解
Jul 10 Python
python批量图片处理简单示例
Aug 06 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
python轮询机制控制led实例
May 03 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 #Python
Flask框架 CSRF 保护实现方法详解
Oct 30 #Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 #Python
python基于K-means聚类算法的图像分割
Oct 30 #Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 #Python
Python文件路径名的操作方法
Oct 30 #Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 #Python
You might like
PHP goto语句简介和使用实例
2014/03/11 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
Symfony2针对输入时间进行查询的方法分析
2017/06/28 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
基于React.js实现原生js拖拽效果引发的思考
2016/03/30 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
Python中functools模块函数解析
2017/03/12 Python
Django验证码的生成与使用示例
2017/05/20 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
2018/06/25 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
python性能测试工具locust的使用
2020/12/28 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
意外伤害赔偿协议书范文
2014/09/23 职场文书
副总经理岗位职责
2015/02/02 职场文书
联谊活动总结范文
2015/05/09 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书