Auto.js抓取移动端数据实战

事情是这样的,最近做闲鱼,就是在闲鱼上面卖拼多多的商品。把拼多多的商品上架到闲鱼,顾客下单后,就去拼多多用顾客的地址给下单购买。

我以前也在想一个问题,同一个商品,拼多多的价格比闲鱼低得多,为啥还是有人在闲鱼上面买东西。

首先大家都知道闲鱼是一个二手商品交易平台,上面的东西便宜,性价比又不错,自然深受很多人喜欢,比如我,也在闲鱼上面淘了一些使用的宝贝。

当用户习惯使用某个app去购物的时候,他很少会与其它平台比价,信息差就这样诞生了。这就促生了"无货源一件代发"的模式。

一、现实的需求

呃,(⊙o⊙)…,跑题了,因为我闲鱼上面出售的商品,拼多多商家很多都是发的极兔速递,而极兔速递的运单号无法录入拼多多平台,用户不能自主查看物流信息。单少还好,单多起来,查一个物流信息要把拼多多整个"待收货"列表都看一遍…眼花缭乱。

所以,现实的需求就来了,如何把拼多多"待收货"的数据拉取下来,存入数据库,在数据库中检索?

我想过用抓包的方式,想了10秒钟,我就放弃了这个方案。

我的预想是这样的,就是能模拟我手动查件的操作(因为后期会开发在闲鱼上自动回复用户物流信息的功能),然后把数据获取下来,存入数据库中。

那么,Auto.js就闪亮登场了。

Auto.js出自一位1996年的大神,在Android上支持Node.js的JavaScript自动化和编程软件。可以模拟点击、滚动屏幕的操作以及获取页面节点信息等等,强大得不要不要的。

二、实现过程

要运行auto.js的脚本,首先你需要一台Android手机,Android版本不要太低,其次需要运行auto.js的app(新版的需要付费,老版的不需要,获取见文末)。

安装好的auto.js软件这这样的:
在这里插入图片描述

右侧是它的悬浮窗,点击悬浮窗可以进行一些操作。比如运行手机上的脚本,录屏,查看屏幕布局元素信息等。

2.1 开发环境准备

auto.js的脚本可以使用VSCode进行编写和调试。

在VSCode插件中搜索hyb1996进行插件的安装。安裝后,快捷键"ctrl+shift+p"可以调出脚本的基本操作:Run On DeviceSave On DeviceStart Serve等操作。

要想调试我们的脚本,需要手机和电脑在同一局域网,先运行Start Serve后再在手机上点击连接电脑,输入电脑的IP就可以连接成功,执行Run On Device就可以把编写的脚本运行在手机上。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上在这里插入图片描述

还有,因为我们需要获取手机上面某个点击点的坐标,需要把手机上的坐标尺打开哦!

打开VSCode的调试控制台"Help"——>“Toggle Develop Tools”,用于查看控制台输出。

2.2 如何编写脚本

auto.js的脚本使用JS来编写的,了解JS语法就可以了。他的接口文档有很多强大的功能(自行查阅),比如获取屏幕某个文字对应的元素,滚动屏幕,延时,点击等等。

toast("开始搬砖..."); // 提示

click(500, 200); // 点击坐标(500, 200)

let 联系商家 = text("联系商家").findOne(); // 获取屏幕中"联系商家"的元素并点击
联系商家.click();

// 模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。
// 只有滑动操作执行完成时脚本才会继续执行。
swipe(100, 1500, 100, 1262, 500)

sleep(1000); // 通常在执行滚动后,都需要休息一下

使用上述方法,就可以实现模拟手动点击的功能了:点击某一个订单,进入详情,点击返回按钮,滚动到下一个订单位置,再次进入详情,以此循环。

2.3 获取屏幕数据

只要能获取屏幕上面所有的文本,就可以通过截取等操作获取我们想要的数据,毕竟页面数据格式都是一样的,我们的需求差不多就实现了80%了。

通过获取屏幕上类名为TextViewandroid.view.View所有的元素节点,通过元素的属性方法text()就可以获取元素节点的文本了。核心代码如下:

function getScreenallTextArr() {
  let fas = "";
  let fsfan = className("TextView").find();
  for (let i = 0; i < fsfan.length; i++) {
    let ftxt = fsfan[i].text();
    if (ftxt != "") {
      if (fas == "") {
        fas = ftxt;
      } else {
        fas = fas + "_$_" + ftxt;
      }
    }
  }
  fsfan = className("android.view.View").find();
  for (i = 0; i < fsfan.length; i++) {
    ftxt = fsfan[i].text();
    if (ftxt != "") {
      if (fas == "") {
        fas = ftxt;
      } else {
        fas = fas + "_$_" + ftxt;
      }
    }
  }
  return fas.split("_$_");
}

2.3 需求梳理

到这里,我们的需求就已经实现了。你可以打开拼多多"待收货"列表,我们再来梳理一下流程。

  • 1、进入"待收货"列表,我们向上滚动一段空白区域——"去抢购"那个区块后,第一个订单就在最上面了。
    swipe(100, 1500, 100, 1262, 500);
  • 2、我们每次进入订单详情,都是点击页面上同一个点,这个点需要根据手机屏幕来确定,只要能进入详情就可以了。
    click(368, 600);
  • 3、进入详情页面后,调用getScreenallTextArr方法获取页面上所有文本组成的集合,物流状态,收款人,电话等信息都是在特定位置显示的,可以通过切割数组获取到我们想要的数据。通过Auto.js的HTTP模块就可以把数据输送到后台。
  • 4、点击左上角的返回按钮,进入订单列表页面,把下一个订单滚动到顶部,再次点击,依次循环。
    swipe(100, 1500, 100, 645, 1000);

三、效果展示

我们进入订单详情,执行getScreenallTextArr就可以获取页面的数据了。
在这里插入图片描述

在这里插入图片描述

结果就粗来啦~~~
在这里插入图片描述
在这里插入图片描述

四、后期扩展

在闲鱼app上自动推送用户的物流信息。与获取拼多多订单信息类似,通过滚动屏幕,点击按钮等操作就可以实现了。

五、申明

此篇文章仅做技术交流,切勿用于非法操作!

欢迎关注公众号【前端技术驿站】
回复12345获取闲鱼运营视频
回复23456获取老版auto.js

更多文章

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很不错的抓包工具 捕包选项 1、选择好捕包网卡,左连还有一些其它捕包条件供选择,如果当所选网卡不支持“杂项接收”功能,系统会提示相应信息,出现该情况时您将无法获取与本网卡无关的数据包,换言之,您无法获取其他电脑之间的通讯包,所以, 建议您更换网卡。 不支持“杂项接收”的网卡,多数为一部分无线网卡及少数专用服务器/笔记本网卡。 2、协议过滤 通常情况下,可不选,除非您对协议类型较为熟悉。 3、设置捕包缓冲 确省的捕包缓冲区大小为 1M,如果您的要追踪的网络规模较大,可适当调大该值;另外,如果追踪主机 CPU 处理能力不够,也需加大缓冲;否则,可能出现丢包的情况。 4、IP过滤 IP过滤里可以设置想要捕包的IP地址或是设置要排除的IP地址等信息。 5、端口过滤 端口过滤过滤里可以设置想要捕包的端口或是设置要排除过滤的端口等信息。 捕包分析 1、设置捕包过滤项 这里的过滤和“追踪任务”过滤设置是独立分开的,请不要混淆,其可选内容项更多。 上述选项中,最为复杂的是“数据块匹配”部分,详细的介绍将在下面的章节部分出现,这里只需要配置好正确的网卡即可,其他选项可以不做任何设置。 IP包回放 1、有助于了解原始包通讯的地理分布情况。 2、通过将IP包回放到网卡上,模拟原始IP包在网络上传输情况,也可供同类捕包软件捕获分析。 通讯协议分析 捕包准备 捕包分析工具条: 开始捕包前,用户需先进行过滤设置,选项内容包括: 选网卡 如果您有多块网卡,需要选中能捕包到预想中的数据的网卡。 协议过滤 针对Internet通讯部分,常见的IP包类型为:TCP/UDP/ICMP。绝大部分是TCP连接的,比如HTTP(s)/SMTP/POP3/FTP/TELNET等等;一部分聊天软件中除了采用TCP通讯方式外,也采用了UDP的传输方式,如QQ/SKYPE等;而常见的ICMP包是由客户的Ping产生的。 IP过滤 “IP过滤”在捕包过滤使用最为常见,IP匹配主要分两类:一是不带通讯方向,单纯的是范围的匹配,如上图中的“From:to”类型;另外一类是带通讯方向的一对一匹配,如上图“”类型,不仅匹配IP地址,也匹配通讯的源IP和目标IP的方向。 端口过滤 “端口过滤”只针对两种类型的DoD-IP包:TCP/UDP。 数据区大小 “数据区大小” 的匹配针对所有DoD-IP类型包,不过需要说明的是,TCP/UDP的IP数据区是以实际数据区位置开始计算的,而其他类型的则把紧随IP包头后面的部分当作数据区。 数据块匹配 “数据块匹配”较为复杂,但却非常有用. 在这里,用户可以输入文本,也可以输入二进制,可以选择特定位置的匹配,也可以选择任意位置的匹配,总之,该设置非常灵活好用。 结束条件 缺省条件下,当捕获的包占用空间多余10M时,自动停止。 结束于某个时间点,是指捕包的截止时间。 分析捕获包 用户按下“开始”按钮启动捕包功能后,列表框中会自动显示出符合条件的数据包,并附带简单的解析。选中“分析”左边和右下部分是分析结果,右上部是原始二进制代码,选中左边某一条目时,在右边二进制区域的色块和其一一对应。 如果用户以前少有接触协议分析部分,Tracknet可以很好地协助您深入了解TCP/IP协议。我们将在网站定期提供一些捕获样例包,协助用户学习分析各种类型的IP包。
Python数据抓取技术与实战 PDF是一本介绍利用Python进行数据抓取的技术和实践的书籍。数据抓取是指通过编程手段从互联网上获取数据的过程。而Python作为一种简单易学的编程语言,具备强大的数据处理和网络操作能力,因此被广泛应用于数据抓取领域。 这本书主要分为两个部分,第一部分是Python数据抓取技术的基础知识介绍。包括如何使用Python进行网页解析、网络请求、Cookies管理、代理设置等内容,以及常用的数据抓取库和工具的使用方法。通过这些基础知识的学习,读者可以掌握Python进行数据抓取的基本能力。 第二部分是数据抓取技术在实践中的应用。书中涵盖了各种实际场景中常见的数据抓取案例,例如爬取电商网站商品信息、抓取新闻网站的新闻数据抓取社交媒体的用户信息等。每个案例都会详细介绍实现的思路和具体步骤,并配有代码示例和实际运行结果。通过这些实战案例的学习,读者可以将抽象的数据抓取技术应用到具体的数据获取任务中。 本书的特点是结合理论与实践,既讲解了数据抓取的原理和技术,又通过实际案例进行实战演练。同时,书中的内容浅显易懂,适合初学者入门学习。此外,书中还提供了丰富的参考资料和学习资源,方便读者进一步深入学习和实践。 总之,Python数据抓取技术与实战 PDF是一本帮助读者掌握使用Python进行数据抓取的实用指南,旨在帮助读者通过编程获取所需数据,并应用到实际工作中。是学习Python数据抓取的必备参考书籍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值