本文仅供学习交流使用,如侵立删!

企鹅 : 1033383881

环境:

win10 64位

python 3.6.1

appium 0.41

selenium 3.141.0

mitmproxy 4.0.4(中间件)

逍遥模拟器或真机

PS:需提前配置好Appium、 mitmproxy 运行环境

1.启动mitmproxy中间件

def response(flow):

url = 'https://aweme-hl.snssdk.com/aweme/v2/comment/list'

# 筛选出以上面url为开头的url

if flow.request.url.startswith(url):

# 获取评论json数据

text = flow.response.text

# 将已编码的json字符串解码为python对象

content = json.loads(text)

# 评论内容

comments = content['comments']

for comment in comments:

# 评论内容

_text = comment['text']

# 用户名

nickname = comment['user']['nickname']

# 个性签名

signature = comment['user']['signature']

脚本运行命令:

切换至脚本目录下运行脚本mitmdump -s 脚本文件

2.启动Appium服务

start /b appium -a 127.0.0.1 -p 4723 --no-reset

Appium 可安装桌面版或者命令行版本,上面命令为命令行启动

PS:多开注意端口号 冲突问题,指定不同端口号即可

3.连接设备

真 机:通过usb连接至电脑

模拟器:直接开启即可

adb devices # 查看连接设备

成功读取所有连接设备:

在这里插入图片描述

没有读取到连接设备可通过设备名手动连接

命令:

adb connect 设备名称 # 连接指定设备

4.评论数据刷新脚本

def slide(self):

while True:

print('定位评论按钮')

comment = self.wait.until(EC.presence_of_element_located((By.ID, 'com.ss.android.ugc.aweme:id/a3j')))

comment_num = comment.text

if '评论' in comment_num:

# 下一个视频

self.driver.keyevent(4)

time.sleep(2)

print(f'评论数量:{comment_num}')

comment_num = int(float(comment_num.replace('w', ''))) * 1000 if 'w' in comment_num else int(

int(comment_num) / 10)

if int(comment_num) < 100:

self.driver.swipe(200, 1500, 200, 500, 500)

continue

comment.click()

print('刷新评论数据')

# 判断数据是否刷新出来

if not self.wait.until(EC.presence_of_all_elements_located((By.ID, 'com.ss.android.ugc.aweme:id/a7b'))):

self.driver.keyevent(4)

continue

new_time = (datetime.datetime.now()+datetime.timedelta(minutes=20)).strftime('%Y-%m-%d %H:%M:%S')

# print(new_time)

for i in range(comment_num):

if (i + 1) % 10 == 0:

self.driver.swipe(200, 1400, 200, 1600, 1000)

time.sleep(0.5)

continue

start_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

# print(start_time)

if new_time < start_time:

print('超时退出')

break

self.driver.swipe(200, 1700, 200, 800, 500)

# 下一个视频

self.driver.keyevent(4)

time.sleep(2)

self.driver.swipe(200, 1700, 200, 500, 500)

print('*' * 25)

三开

四开

PS:此文只是提供思路,具体很多细节没有详细介绍比如(Appium环境配置,mitmproxy抓包脚本,模拟器代理配置等等)后续会陆续写单独的教程

Logo

一站式 AI 云服务平台

更多推荐