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

基于Chrome140的VK账号自动化——脚本撰写(二)

引言在上一篇文章《基于Chrome140的VK账号自动化——需求分析环境搭建一》中我们完成了开发环境的准备工作包括Python环境配置、uv包管理器安装、Playwright框架部署以及Chrome浏览器的配置。现在我们将进入核心开发阶段基于RPA框架构建VK自动化浏览系统。本文将详细介绍如何使用基于动作执行器action_executor的RPA框架实现VK的智能浏览、交互和状态管理。通过状态机模式和权重化随机动作系统我们将构建一个既自然又高效的自动化解决方案。本教程将展示业务核心内容代码框架部分将不作为展示。1. RPA框架架构设计核心框架结构基于您提供的代码我们的VK自动化系统采用了成熟的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.1 状态机设计模式系统采用状态机模式管理不同的页面状态每个状态对应特定的动作集合home状态VK首页浏览detail状态帖子详情页交互unknown状态异常状态处理2. 核心动作系统智能滚动动作滚动是模拟真实用户浏览行为的基础动作我们实现了支持随机距离、持续时间和方向的智能滚动系统。action_exector def scroll_action(page: CoreBrowsePage, distance: Tuple[int, int], duration: Tuple[float, float], scroll_down_probability: int): 滚动动作 :param distance: 滚动距离的范围是一个元组如(100, 200) :param duration: 滚动持续时间的范围是一个元组如(0.1, 1.0) :param scroll_down_probability: 向下滚动的概率0-100之间的整数 :param page: 页面对象 pass page.ui_logger.log(fScrolling the page with a random distance between {distance[0]} and {distance[1]} pixels, ) _distance random.randint(*distance) _duration random.uniform(*duration) if random.randint(0, 100) scroll_down_probability: # 向上滚动 _distance -_distance smooth_scroll(page.page, _distance, _duration)2.1 停留动作模拟停留动作模拟用户阅读和思考的时间是增强真实性的重要组件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. 内容交互系统智能帖子选择与点击内容交互是VK自动化的核心功能我们实现了智能的帖子识别和点击系统action_exector def detail_action(page: CorePageObject): pass _article_locators page.page.locator(video) _selected_article None for _article_locator in _article_locators.all(): if element_in_viewport(page.page, _article_locator) and _article_locator.is_enabled(): _selected_article _article_locator break if not _selected_article: page.logger.info(not found article in viewport) return page.logger.info(fclick article position: {_selected_article.bounding_box()}) _article_title_locator _selected_article if _article_title_locator.count() 0: page.logger.info(fclick article title {_article_title_locator.first.text_content()}) simulate_mouse_click(page.page, _article_title_locator.first)3.1 返回导航动作返回动作确保用户能够从详情页回到主页面继续浏览action_exector def back_action(page: CorePageObject): pass page.page.go_back()4. VK页面控制器VKBrowsePage核心类VK浏览页面类是整个系统的核心控制器管理页面状态、动作权重和异常处理class VKBrowsePage(CoreBrowsePage): property def url(self): return https://vk.com property def random_actions(self): return { home: [ (self.scroll_weight, partial(scroll_action, distanceself.scroll_distance, durationself.scroll_time, scroll_down_probabilityself.scroll_down_probability)), (self.stay_weight, partial(stay_action, stay_timeself.home_stay_time)), (self.view_detail_weight, partial(detail_action)), ], detail: [ (self.scroll_weight, partial(scroll_action, distanceself.scroll_distance, durationself.scroll_time, scroll_down_probabilityself.scroll_down_probability)), (self.stay_weight, partial(stay_action, stay_timeself.home_stay_time)), (self.go_back_weight, partial(back_action)), ], } def check_exception_handler(self): 每个随机动作之前检查是否有异常行为 例如页面弹出的dialog :return: pass4.1 登录状态检测def is_login(self): 检查是否登录 :return: try: self.page.wait_for_selector(.feed_row .post_info, timeout10000) self.ui_logger.log(Logged in successfully.) except TimeoutError: self.ui_logger.log(Login required., warning) return False return True4.2 页面状态识别def get_current_state(self): _current_page_url self.page.url self.logger.info(fcurrent page url: {_current_page_url}) if _current_page_url.strip(/) https://www.vk.com: return home else: return detail5. 系统启动与配置主流程启动配置系统启动使用框架提供的start_main_page_process函数支持重试机制和超时控制# 系统主流程启动 start_main_page_process( self, # 页面实例 VKBrowsePage, # VK页面控制器类 retry1, # 失败重试次数 timeout60000 # 超时时间毫秒 )5.1 配置参数说明VK自动化系统的行为通过以下权重参数进行调控# 动作权重配置示例 class VKBrowsePage(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 # 主流程启动器 )最佳实践建议权重调优根据实际需求调整各动作的权重比例时间控制合理设置停留时间和滚动持续时间异常处理完善check_exception_handler方法的异常检测逻辑日志记录充分利用页面对象的logger进行调试和监控状态管理根据业务需求扩展更多的页面状态结语本文详细介绍了基于RPA框架的VK自动化浏览系统实现方案。通过动作执行器模式、状态机管理和权重化随机动作系统我们构建了一个功能完整、行为自然的自动化解决方案。核心技术特点基于装饰器的动作执行器模式代码结构清晰状态机管理不同页面的行为策略权重化随机动作系统模拟真实用户行为智能内容识别和交互机制完善的异常检测和处理框架系统优势高度模块化的设计易于扩展和维护基于成熟RPA框架稳定性有保障智能的页面状态识别和动作选择丰富的配置参数适应不同使用场景通过本文的学习您已经掌握了VK自动化系统的核心开发技术。在下一篇文章《基于Chrome140的VK账号自动化——运行脚本三》中我们将重点介绍系统的部署运行、监控管理和性能优化帮助您将开发完成的自动化脚本投入实际应用。

相关文章:

基于Chrome140的VK账号自动化——脚本撰写(二)

引言在上一篇文章《基于Chrome140的VK账号自动化——需求分析&环境搭建(一)》中,我们完成了开发环境的准备工作,包括Python环境配置、uv包管理器安装、Playwright框架部署以及Chrome浏览器的配置。现在,我们将进入…...

复现论文:基于物理–智能混合理论的自动驾驶车辆动态场景库生成方法

复现论文:基于物理–智能混合理论的自动驾驶车辆动态场景库生成方法 摘要 本文详细复现了 Zhang 等人于 2022 年发表在《Sensors》期刊上的论文《Research on the Physics–Intelligence Hybrid Theory Based Dynamic Scenario Library Generation for Automated Vehicles》…...

基于Matlab的《液体动静压轴承》回油槽径向静压轴承图谱程序

基于matlab的根据《液体动静压轴承》编写的有回油槽径向静压轴承的可显示承载能力、压强、刚度及温升等图谱.程序已调通,可直接运行。打开MATLAB就闻到机油味是怎么回事?最近折腾了个有意思的玩意——基于《液体动静压轴承》教材搞的径向静压轴承仿真程序…...

如何快速使用“知窗”将网页打包成为 Windows 桌面应用 @杨章隐

在很多实际业务中,我们都会遇到这样一个问题:系统已经是 Web 的,但客户却希望有一个“桌面应用”。比如:工厂标签打印系统仓库管理系统内部 ERP / OA收银、前台系统用户不想:打开浏览器输入网址处理各种兼容问题他们只…...

python+Ai技术框架的基于微信小程序的智慧社区娱乐服务管理平台django flask

目录技术选型与架构设计核心功能实现路径数据处理与AI整合微信小程序对接部署与性能优化测试与迭代项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术选型与架构设计 后端框架选择 Django适合快速构…...

千寻起名助手小程序(1.0)

“千寻起名助手”是由千寻百念工作室精心研发的一款国风智能起名微信小程序。我们将先进的 AI 语言大模型与东方传统的“新中式”美学巧妙结合,致力于为新生儿父母提供高效、专业、富有文化底蕴的起名灵感。🏮 核心亮点:智能推演,…...

需求文档埋雷:软件测试从业者的集体PTSD与破局之道

当需求文档成为“隐形炸弹”在敏捷交付的战场上,需求文档的缺陷如同埋设的地雷,轻则导致返工延期,重则引发生产事故。对测试人员而言,反复因需求歧义、遗漏或变更导致的无效测试、缺陷误判和版本回溯,已形成职业性创伤…...

智慧水库垃圾识别 水面漂浮物识别 水库治理巡检 河道等水域漂浮物自动检测第10572期

计算机视觉数据集 数据集核心信息类别信息 该数据集共包含 2个 核心类别,中文名称分别为:水面、漂浮物。数量规模 数据集标注样本总量为 900 张,覆盖不同水域环境、光照条件下的目标特征,数据分布均衡,可满足模型训练的…...

SSR驱动220V需TVS/MOV而非RCD

固态继电器控制220V交流电时的RCD缓冲器必要性分析 一、核心结论:通常不需要传统RCD缓冲器,但需要针对性保护 关键区别: 机械继电器:需要RCD缓冲器抑制触点电弧 固态继电器(SSR):基于半导体开关,无需灭弧,但需要针对性的瞬态电压抑制 二、SSR工作特性与保护需求 保护需…...

黑马点评-用JMeter测试缓存重建时,HTTP请求的响应结果的data为空

问题描述用JMeter测试缓存重建时,HTTP请求的响应结果的data为空解决方案1.未缓存预热(可能的问题1)“逻辑过期”方案通常用于极高并发的热点 Key。为了防止查数据库拖垮系统,我们默认这些热点数据一定是事先手动存入 Redis 的解决方法: 运行下面测试方法将"热点…...

用 OpenClaw + 飞书 Agent 打造 AI 自主模拟炒股系统:从零到实盘全记录

作者:海风 | 日期:2026年3月17日 本文记录了我用 OpenClaw 2026.3.8 搭建 AI 自主模拟炒股系统的完整过程。trader Agent 拥有 5 万元虚拟资金,每天自主选股、自主决策买卖、自主管理仓位——完全不需要人类干预交易决策。 一、背…...

伪造代码亲缘关系:让系统认我当爹——软件测试从业者的专业指南

在软件测试领域,伪造亲缘关系是一种关键的黑盒与白盒测试技术,尤其适用于血缘关系图谱系统(如家族树或遗传分析工具)。这类系统通过对象关系映射亲缘(如父子、兄弟),而测试中故意伪造关系&#…...

python+Ai技术框架的美食分享平台 美食餐厅活动报名系统django flaskdjango flask

目录 技术选型与框架设计核心功能模块数据库设计AI集成实现部署与优化测试与迭代 项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 技术选型与框架设计 后端框架选择 Django:适合快速开发…...

AI 原生人才管理系统解析,智能人才库简历激活实操攻略

在人力资源管理数字化升级的当下,AI 原生的人才管理系统成为企业优化人才管理效率的核心工具,而智能人才库的运营则是挖掘存量人才价值的关键。很多企业拥有大量简历资源却处于沉睡状态,无法转化为实际的人才储备,而 AI 原生系统能…...

等保测评命令——达梦数据库 DM

根据 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级"安全计算环境" 条款,结合 达梦数据库 DM8 官方安全指南及多家测评机构现场实践,给出可直接落地的 测评命令清单。已在 DM8 2023Q4 / DM8 2024Q1 环境验证通过&#xff0…...

GinCdn内容分发系统V1.0.2发布:企业级CDN架构迎来节点监控全面升级

GinCdn内容分发系统V1.0.2发布:企业级CDN架构迎来节点监控全面升级引言在当今互联网高速发展的时代,内容分发网络(CDN)已成为保障网站和应用高性能、高可用的基础设施。2026年3月16日,GinCdn内容分发系统正式发布V1.0.…...

vue2.0 接入腾讯位置服务

Ip定位为例子(非精确定位场景)(https://lbs.qq.com/service/webService/webServiceGuide/position/webServiceIp) 步骤一:在腾讯申请key步骤二:在代码调用 方式一:手动封装 JSONP 函数 创建 uti…...

Spice Data招聘产品专员,聚焦餐饮数据服务

Spice Data招聘产品专员,明确岗位职责Spice Data正在招聘产品专员(应届毕业生),工作地点位于美国旧金山。该岗位要求应聘者具备较强的数据处理能力,需运用产品思维创建和维护数据映射,清理原始数据。同时&a…...

mathtype加载到WPS灰色无法使用

具体安装教程很多,步骤都是对的,我这只是说一下我安装好几次在自己电脑上的问题,就是把两个文件复制到startup之后,也安装了VBA,但是打开WPS文档还是灰的不能用,我搞了几次发现在工具选项卡里宏无法运行&am…...

规则引擎到底是什么?三分钟让你彻底搞懂

前言:你是不是也被这些词搞晕了?说实话,我刚接触"规则引擎"这个词的时候,也是一头雾水。那时候我在一家金融公司做技术,老板天天把"规则引擎"、"业务流程管理系统"、"决策引擎&quo…...

day02_Python开发环境部署与Python基础语法

写在前面 学习AI之前,Python是必备技能,所以接下来一段时间都会先讲Python的知识。本篇文章主要讲如何部署便于开发Python的环境,以及一些简单的Python入门语法。 我们正生活在一个AI飞速发展的时代,在学习这个领域,…...

Linux 命令:vgchange —— 修改卷组属性

1. 命令简介 vgchange 命令用于修改 Linux 逻辑卷管理器(LVM)中卷组(Volume Group)的属性。其主要功能是激活或停用卷组,这是管理 LVM 存储空间(如创建、删除逻辑卷或卷组)前的关键步骤。一个卷组必须处于非活动状态才能被安全删除。 2. 语法格式 shell vgchange [选…...

Bash脚本学习

1、第一行#!/bin/bash,表示sh脚本默认按bash运行2、set ex #命令失败时立即退出;打印执行的每一条命令 set -o pipefail #管道中任何一个命令失败都算失败3、basepath$(cd "$(dirname "$0")" && pwd) #获取脚本所在路径一、…...

Go 协程与线程性能对比

Go 协程与线程性能对比:轻量并发的革命 在现代高并发编程中,Go 协程(Goroutine)和传统线程(Thread)是两种核心的并发模型。Go 协程凭借其轻量级设计和高效的调度机制,逐渐成为开发者青睐的选择…...

环境测试(二):电动振动试验系统双臂跌落试验机

概述 正弦振动:又分为扫频振动(用于寻找产品的共振频率)和定频振动(用于评估产品在特定频率下的耐久性)。 随机振动:模拟真实世界中的复杂振动,如卡车运输颠簸、路面不平、发动机宽带噪声等&…...

【2026远程技术服务推荐】分子对接代理、分子动力学指导、虚拟筛选与软件安装、生物信息分析 系统重装

远程技术服务推荐:分子对接、分子动力学、虚拟筛选、生物信息分析与各类软件环境安装 一、简介 智澈乐尚网络工作平台 目前向广大研友长期提供 远程技术服务 的平台,主要面向有以下需求的用户: 分子对接:AutoDock、AutoDock Vi…...

草莓遗传转化

草莓遗传转化体系成熟,主要采用农杆菌介导法,以叶盘或子叶为外植体再生转基因植株,森林草莓(如Hawaii 4)转化效率可显著提升至对照的2–3倍,常用于抗病和品质改良。 主流方法比较 方法 外植体 优点 …...

刷题统计【牛客tracker 每日一题】

刷题统计 时间限制:1秒 空间限制:256M 网页链接 牛客tracker 牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题…...

python+Ai技术框架的美食交流宣传系统的设计与实现django flask

目录PythonAI技术框架的美食交流宣传系统设计与实现技术选型分析系统核心模块设计Django实现方案Flask实现方案AI集成方案部署架构设计开发路线图关键技术点性能优化建议测试方案项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方…...

基于金枪鱼群算法优化BP神经网络(TSO-BP)在多输出数据回归预测中的应用及Matlab代码实现

基于金枪鱼群算法优化BP神经网络(TSO-BP)的多输出数据回归预测TSO-BP多输出数据回归 matlab代码注:暂无Matlab版本要求--推荐2018B版本及以上金枪鱼群算法(TSO)遇上BP神经网络会发生什么化学反应?最近在折腾多输出数据回归预测时发…...