模拟人为操作并获取数据

问题

假设需要获取一个微信公众号h5应用的某些数据,而这个应用存在如下一些反爬措施,从而决定了获取数据的方式。

每一个操作都有类似埋点行为,这样即可收集每个用户的操作轨迹。通过轨迹正常与否,很容易判断一个用户是否在恶意获取数据。因此直接调用数据接口的方式就不可行了。

维护并验证用户token与微信accessCode的关系,这可是终极大招。微信code是无法模拟的,因此,获取数据的前提就很苛刻了,必须登录微信且从微信跳转到公众号h5应用。

针对这种情况,需要模拟人为操作如下流程,打开微信,打开公众号,打开h5应用,进行各种有目的性的点击、输入等。

目前面临的一个问题是:如何让pc知道点击哪里?

我这里选择PyAutoGUI,简介:PyAutoGUI一个用于自动化控制鼠标和键盘的跨平台Python模块。它可以模拟用户的输入行为,如点击、滚动、拖拽、键入等,非常适合用于自动化测试、任务自动化等场景。PyAutoGUI 提供了图像识别功能,可以匹配屏幕上的图片,并获取该图片在屏幕上的位置。

几个关注点

  • 如何确定操作坐标:为每个操作准备一张图片,识别到图片在屏幕的坐标。
  • 图片要求:图像文件应该与想在屏幕上找到的内容完全匹配。通常是截取屏幕上某个部分作为搜索目标。
  • 匹配准确性:图像识别依赖于屏幕上显示内容与提供给函数的图像完全一致。任何微小差异(如颜色变化、缩放等)都可能导致无法正确匹配。
  • 如何实现输入:用工具包实现复制粘贴,pyautogui只支持英文,需要用其他包如pyperclip。
  • 需要为每个页面操作流程编写一遍代码

目前有两种方式,方式1是通过识别屏幕中图片,确定点击屏幕位置;方式2是时限指定固定的坐标,确定点击屏幕位置。准备6台pc,屏幕配置保持一致,包括像素和亮度。在开发机截取每一步的图片,并在开发机上测试方式1,运行的没有问题。将脚本放到其他机器,均是无法识别到图片。因此基于图片的方式就不可行了。测试方式2之前,做一些准备工作,在开发机获取某个点击点在屏幕上的坐标,保持几台电脑屏幕配置一致,包括微信图标的位置一致(例如左上角第一个图标)、窗口位置大小一致(例如全屏)、窗口位置一致(例如窗口右上角对齐屏幕右上角)。在几台电脑上测试方式2,点击和输入都符合预期。因此选择坐标方式确定操作位置。

接下来面临的一个问题:如何获取数据接口返回数据?

数据处理后最终都是结构化的。观察接口返回数据已经是结构化的,那么直接获取接口返回值并落库,后续可以解析报文并结构化存储。此时,需要考虑如何获取到http请求的报文。因此需要使用网络代理了。对网络代理要求,free,可编写脚本,可连接数据库和redis,编写脚本还得简单。我选择了mitmproxy,满足要求,不仅free而且用py写脚本。

解决

解决以上几个主要问题,基本选型已经确定,可以绘制主要模块交互图。

选型为:windows、python、PyAutoGUI、pyperclip、redis、mysql、mitmproxy。

其他需要考虑的:定时任务调度,任务驱动,pc间数据隔离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring Cloud Alibaba】开源组件Nacos及安装与配置

目录 什么是NacosNacos的关键特性服务发现和服务健康监测动态配置服务动态 DNS 服务服务及其元数据管理 Nacos的架构Nacos的用户Nacos的安装预备环境准备安装方式有两种:源码安装和下载编译好的安装包Nacos 支持三种部署模式,分别是单机、集群和多集群。…

性能飙升50%,react-virtualized-list如何优化大数据集滚动渲染

在处理大规模数据集渲染时,前端性能常常面临巨大的挑战。本文将探讨 react-virtualized-list 库如何通过虚拟化技术和 Intersection Observer API,实现前端渲染性能飙升 50% 的突破!除此之外,我们一同探究下该库还支持哪些新的特性…

【Git篇 二】idea中使用git合并分支(拉取分支)

idea中使用git合并分支 前言idea使用git合并分支1) 将主分支(master)更新到自己的分支(dev)① checkout到自己分支② 目标分支(dev)更新到当前分支(dev_KC240524)③ 当前分支出现“绿…

【Python】 Python网络请求库大比拼:urllib、urllib2、urllib3与requests

基本原理 在Python中,进行网络请求是常见的任务之一,无论是下载网页内容、获取API数据还是进行文件上传。Python社区提供了多种库来帮助开发者完成这些任务。其中,urllib、urllib2、urllib3和requests是最为流行的几个。了解它们之间的区别对…

促进设备缺陷闭环管理,引入智能巡检系统正当时

经过近些年的应用与发展,智能巡检系统的功能与可操作性已经非常成熟,在巡检工作整合管理、与其他系统调用对接、促进设备缺陷闭环管理方面的优秀表现,使其在安全管理工作中的发挥了超预期的工具价值。 一、巡检工作整合管理 设备巡检管理、安…

QT 编译Lua 动态库,使用Lua脚本混合编程

一,编译Lua动态库 1,下载lua源码 地址:Lua: downloadhttps://www.lua.org/download.html 2,配置 解压lua源码压缩包,里面有个src文件夹,里面的代码就是lua的源码

Paper Survey——3DGS-SLAM

之前博客对多个3DGS SLAM的工作进行了复现及代码解读 学习笔记之——3DGS-SLAM系列代码解读_gs slam-CSDN博客文章浏览阅读1.9k次,点赞15次,收藏45次。最近对一系列基于3D Gaussian Splatting(3DGS)SLAM的工作的源码进行了测试与…

广东肇庆mes系统服务商 盈致科技

广东肇庆MES系统服务商盈致科技为企业提供专业的MES系统解决方案,帮助企业实现生产过程的数字化管理和优化。盈致科技的服务包括但不限于以下方面:MES系统定制开发:盈致科技可以根据企业的实际需求定制开发MES系统,满足企业特定的…

《猎杀:对决》是适合什么样的人玩 Mac电脑怎么玩《猎杀:对决》

《猎杀:对决》是一款集合了生存、竞技和恐怖元素的多人在线游戏,自推出以来受到了广大玩家的热爱。本文将详细探讨《猎杀:对决》适合什么样的人玩以及Mac电脑怎么玩《猎杀:对决》。本文将一一解析,帮助你了解这款游戏是…

maven中央仓库手动下载到本地仓库

1.maven中央仓库网址 maven中央仓库 2.搜索需要的jar包 3.点击坐标mybatis坐标进入 4.winR输入cmd打开命令窗口 mvn dependency:get -DremoteRepositoriesurl -DgroupIdgroupId -DartifactIdartifactId -Dversionversion5.maven本地仓库

判断JavaScript对象是否为空,最佳方法与性能对比

引言:在日常开发中,你是否经常需要判断一个对象是否为空?你知道有哪些高效的方法可以做到这一点吗?今天,我们不仅要探讨这些方法,还要通过性能对比找出最优解。快来看看,你平常用的方法是最佳选…

Linux安装gpu驱动

安装rpm包 进入官网 ,选择机器的配置和环境。 下载完rpm之后,运行下面的命令。 i) sudo rpm -i nvidia-driver-local-repo-rhel8-550.54.15-1.0-1.x86_64.rpm ii) sudo dnf clean all iii) sudo dnf -y module install nvidia-driver:latest-dkms 安…

2024/5/30

In recent weeks, Target and Aldi have broadcast price cuts on thousands of items, while Walmart unveiled a new private label lineup of quality “chef-inspired food” mostly in the $5-and-under range. The shift comes as U.S. consumers have been signaling th…

煤矿塌陷位移监测站-全天候监测

TH-WY1煤矿塌陷位移监测站,作为矿山安全监测系统的重要组成部分,其设计、构建和功能均针对煤矿塌陷等地质灾害的实时监测与预警。 煤矿塌陷位移监测站,简称位移监测站,是一种利用先进传感器和仪器设备,对煤矿及周边区…

QML信号连接到c++的槽函数(五)

文章目录 前言一、QML Signal and Handler Event System二、QML信号连接到c++的槽函数代码实例1. 创建一个QML 工程2. 用C++ 实现一个QML Types3. 代码实例4. 运行结果总结参考资料前言 本文主要介绍,如何将QML 中的信号连接到C++ 中的槽函数 软硬件环境: 硬件:PC 软件:wi…

以hive metastore报错举例,远程调试hadoop服务

项目场景: CDH集群CM切换hive元数据库报错: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at…

步进电机噪音大?抖动厉害?-TMC4361步进闭环方案轻松解决

步进电机的闭环控制,实现与伺服电机功能媲美及超越的特点。在电机控制过程中如果想要高效、更高精度以及绝对的可靠性,我们为您推荐在无传感器及将体积做到最小的更高性价比的驱动方案。 我们都知道,在步进电机无反馈时,电机的高…

【刷题(16)】子串

一 子串基础 二 和位K的子数组 1 题目 2 解题思路 前缀和哈希(两数之和) 假如存在区间[left,right],使得在[left,right]这个区间的子数组的和为k。换句话说,就是前right项和减去前left-1项和等于k,即前left-1项和等…

【机器学习】——驱动智能制造的青春力量,优化生产、预见故障、提升质量

目录 一.优化生产流程 1.1 数据收集 1.2 数据预处理 1.3 模型训练 1.4 优化建议 1.5 示例代码 二.预测设备故障 2.1 数据收集 2.2 数据预处理 2.3 模型训练 2.4 故障预测 2.5 示例代码 三.提升产品质量 3.1 数据收集 3.2 数据预处理 3.3 模型训练 3.4 质量提升…

07C回调函数

C零碎语法 目录 文章目录 C零碎语法流程1.声明一个函数指针2.定义回调函数3.注册回调函数 应用4.事件回调5.同步回调函数6.异步回调函数 流程 1.声明一个函数指针 uint8_t (*p_CallbackFunc)(void);2.定义回调函数 重要的是要注意回调函数只是一个函数。 由于它的使用方式(…