当前位置: 首页 > news >正文

基于Chrome140的TK账号自动化(关键词浏览)——脚本撰写(二)

引言

在上一篇文章《基于Chrome140的TK账号自动化(关键词浏览)——需求分析&环境搭建(一)》中,我们完成了开发环境的准备工作,包括Python环境配置、uv包管理器安装、Playwright框架部署以及Chrome浏览器的配置。现在,我们将进入核心开发阶段,基于RPA框架构建TikTok自动化浏览系统。

本文将详细介绍如何使用基于动作执行器(action_executor)的RPA框架,实现TikTok的智能浏览、交互和状态管理。通过状态机模式和权重化随机动作系统,我们将构建一个既自然又高效的自动化解决方案。

本教程将展示业务核心内容代码,框架部分将不作为展示。

1. RPA框架架构设计

1.1核心框架结构

基于您提供的代码,我们的Facebook自动化系统采用了成熟的RPA框架设计,具有以下核心特性:

from stubs.rpa import *
from functools import partial
from typing import Tuple
import random
import time# 核心组件说明
# - CoreBrowsePage: 浏览器页面基类
# - CorePageObject: 页面对象基类  
# - action_exector: 动作执行器装饰器
# - start_main_page_process: 主流程启动器

1.2 状态机设计模式

系统采用状态机模式管理不同的页面状态,每个状态对应特定的动作集合:

  • home状态:Facebook首页浏览
  • detail状态:帖子详情页交互
  • unknown状态:异常状态处理

2. 核心动作系统

2.1智能滚动动作

滚动是模拟真实用户浏览行为的基础动作,我们实现了支持随机距离、持续时间和方向的智能滚动系统。

@action_exector
def scroll_action(page: CoreBrowsePage, distance: Tuple[int, int], duration: Tuple[float, float], scroll_down_probability: int):"""智能滚动动作执行器Args:page: 浏览器页面对象distance: 滚动距离范围 (min_distance, max_distance)duration: 滚动持续时间范围 (min_duration, max_duration)  scroll_down_probability: 向下滚动概率 (0-100)"""_distance = random.randint(*distance)_duration = random.uniform(*duration)_scroll_locator = page.page.locator('body')if random.randint(0, 100) > scroll_down_probability:# 向上滚动_distance = -_distancesmooth_scroll(page.page, _distance, _duration)

2.2 停留动作模拟

停留动作模拟用户阅读和思考的时间,是增强真实性的重要组件:

@action_exector
def stay_action(page: CoreBrowsePage, stay_time: Tuple[int, int]):"""用户停留动作模拟器模拟真实用户在浏览过程中的阅读、思考停顿时间Args:page: 浏览器页面对象stay_time: 停留时间范围 (min_seconds, max_seconds)"""# 随机生成停留时间_stay_duration = random.uniform(*stay_time)page.logger.info(f"用户停留思考: {_stay_duration:.2f}秒")# 执行等待time.sleep(_stay_duration)# 如果需要截图可以添加截图记录执行page.save_html_and_screenshot() # 保存html内容和截图page.logger.info("停留结束,继续浏览")

3. 内容交互系统

3.1智能帖子选择与点击

内容交互是TikTok自动化的核心功能,我们实现了智能的帖子识别和点击系统:

@action_exector
def detail_action(page: CorePageObject):"""智能帖子详情页进入动作自动识别当前视口内的可点击内容"""_article_locator = found_video_in_view(page)if _article_locator is None:page.logger.info("no video found in view")returnpage.logger.info(f"found video in view: {_article_locator}")simulate_mouse_click(page.page, _article_locator.first)

3.2 返回导航动作

返回动作确保用户能够从详情页回到主页面继续浏览:

@action_exector
def back_action(page: CorePageObject):"""页面返回导航动作从帖子详情页返回到主页面,并等待页面加载完成"""page.logger.info("执行页面返回操作")# 执行浏览器返回page.page.go_back()# 等待页面稳定page.logger.info("等待页面加载完成...")page.page.wait_for_timeout(5000)  # 固定等待5秒page.page.wait_for_load_state()   # 等待页面加载状态page.logger.info("页面返回完成")

4. TikTok页面控制器

4.1 TiktokBrowsePage核心类

TikTok浏览页面类是整个系统的核心控制器,管理页面状态、动作权重和异常处理:

# 详情页URL关键词定义
_DETAIL_URL_KEYWORDS = ["photo",    # 图片帖子"watch",    # Watch视频"video",    # 普通视频"reel",     # Reels短视频"live",     # 直播内容
]class TiktokBrowsePage(CoreBrowsePage):"""Tiktok 自动化浏览页面控制器"""@propertydef url(self):"""Facebook主页URL"""return "https://facebook.com"@propertydef random_actions(self):"""状态化随机动作配置系统根据当前页面状态返回对应的动作权重配置每个动作都有对应的权重值,系统会根据权重随机选择执行"""return {# 主页状态动作配置"home": [# (权重, 动作函数)(self.scroll_weight, partial(scroll_action, distance=self.scroll_distance, duration=self.scroll_time, scroll_down_probability=self.scroll_down_probability)),(self.stay_weight, partial(stay_action, stay_time=self.home_stay_time)),(self.view_detail_weight, partial(detail_action)),],# 详情页状态动作配置"detail": [# 详情页不执行滚动,主要是停留和返回(self.stay_weight, partial(stay_action, stay_time=self.home_stay_time)),(self.go_back_weight, partial(back_action)),],}

4.2 页面状态识别

    def get_current_state(self):"""智能页面状态识别系统根据当前页面URL自动识别页面状态,用于动作选择Returns:str: 页面状态 ("home", "detail", "unknown")"""_current_page_url = self.page.urlself.logger.info(f"current page url: {_current_page_url}")if "tiktok.com/search/video" in _current_page_url:return "home"pattern = r"https://www\.tiktok\.com/@([\w\.\-]+)/video/(\d+)"match = re.search(pattern, _current_page_url)if match:return "detail"return "unknown"

5. 系统启动与配置

主流程启动配置

系统启动使用框架提供的start_main_page_process函数,支持重试机制和超时控制:

# 系统主流程启动
start_main_page_process(self,                # 页面实例TiktokBrowsePage,       # Facebook页面控制器类retry=1,            # 失败重试次数timeout=60000       # 超时时间(毫秒)
)

5.1 配置参数说明

Facebook自动化系统的行为通过以下权重参数进行调控:

# 动作权重配置示例
class TiktokBrowsePage(CoreBrowsePage):def __init__(self):super().__init__()# 滚动相关配置self.scroll_weight = 40          # 滚动动作权重self.scroll_distance = (200, 600) # 滚动距离范围(像素)self.scroll_time = (0.5, 2.0)    # 滚动持续时间(秒)self.scroll_down_probability = 80 # 向下滚动概率(%)# 停留相关配置self.stay_weight = 30            # 停留动作权重self.home_stay_time = (3, 8)     # 主页停留时间范围(秒)# 交互相关配置self.view_detail_weight = 20     # 查看详情权重self.go_back_weight = 80         # 返回操作权重

额外说明

框架依赖说明

本系统基于成熟的RPA框架构建,主要依赖组件包括:

# 核心依赖模块
from stubs.rpa import (CoreBrowsePage,      # 浏览器页面基类CorePageObject,      # 页面对象基类action_exector,      # 动作执行器装饰器smooth_scroll,       # 平滑滚动函数element_in_viewport, # 视口检测函数simulate_mouse_click, # 鼠标点击模拟start_main_page_process # 主流程启动器
)

最佳实践建议

  1. 权重调优:根据实际需求调整各动作的权重比例
  2. 时间控制:合理设置停留时间和滚动持续时间
  3. 异常处理:完善check_exception_handler方法的异常检测逻辑
  4. 日志记录:充分利用页面对象的logger进行调试和监控
  5. 状态管理:根据业务需求扩展更多的页面状态

结语

本文详细介绍了基于RPA框架的TikTok自动化浏览系统实现方案。通过动作执行器模式、状态机管理和权重化随机动作系统,我们构建了一个功能完整、行为自然的自动化解决方案。

核心技术特点

  • 基于装饰器的动作执行器模式,代码结构清晰
  • 状态机管理不同页面的行为策略
  • 权重化随机动作系统,模拟真实用户行为
  • 智能内容识别和交互机制
  • 完善的异常检测和处理框架

系统优势

  • 高度模块化的设计,易于扩展和维护
  • 基于成熟RPA框架,稳定性有保障
  • 智能的页面状态识别和动作选择
  • 丰富的配置参数,适应不同使用场景

通过本文的学习,您已经掌握了TikTok自动化系统的核心开发技术。在下一篇文章《基于Chrome140的FB账号自动化(关键词)——运行脚本(三)》中,我们将重点介绍系统的部署运行、监控管理和性能优化,帮助您将开发完成的自动化脚本投入实际应用。

http://www.dtcms.com/a/544630.html

相关文章:

  • C# SelectMany 完全指南:从入门到精通
  • 卡片式设计网站制作婚庆网站建设需求分析
  • RK3399 11.0关闭调试串口改为普通RS232通信串口
  • 手机网站弹窗大唐网站建设
  • 播放本地音频的代码
  • cefsharp139-H264-X86升级测试(MP4)-支持PDF预览-chromium7258定制浏览器
  • pandoc导出markdown为PDF,同时解决中文内容报乱码的错误
  • 【printpdf】生成PDF的全能Rust库printpdf
  • 小技巧:ipynb转pdf
  • 计算机网络自顶向下方法16——应用层 因特网视频 HTTP流和DASH
  • 摄像头选型与对应采集工具方案
  • 免费的行情软件下载安装佛山网站优化指导
  • 仓颉尾递归优化:从编译器实现到函数式编程实践
  • 小智机器人连接抖音直播间教程
  • webhooks
  • 基于Springboot + vue3实现的亚运会志愿者管理系统
  • 绥中做网站百度如何网站
  • 双碳主题互动装置-低碳环保互动游戏-VR环保展厅方案
  • AI重构兴趣内容与营销生态,驱动消费全链路升级
  • 【数据结构】从线性表到排序算法详解
  • 网站家建设培训学校设计科技公司官网
  • SPIR-V后端稳定性的推进工作报告总结
  • MySQL逗号分隔字段-历史遗留原因兼容方案
  • Bun.js + Elysia 框架实现基于 SQLITE3 的简单 CURD 后端服务
  • 做网站 怎么赚钱吗网站数据分析课程
  • Rust——迭代器适配器深度解析:函数式编程的优雅实践
  • 理解PostgreSQL中的映射表
  • Java1029 抽象类:构造方法
  • 类和对象(中)——日期类的实现取地址运算符重载
  • Linux系统编程—线程同步与互斥