首页> 中国专利> 基于浏览器测试组件的QQ群数据获取方法与系统

基于浏览器测试组件的QQ群数据获取方法与系统

摘要

本发明公开了一种基于浏览器测试组件的QQ群数据获取方法与系统,通过给予浏览器测试组件,实现用户行为模拟,由此方式实现Web端QQ等登陆操作,结合并行化设计,面向QQ群实现即时聊天信息和非即时信息的数据获取。本发明能够避免人工登陆操作,在快速获取数据的同时,兼顾了获取数据的完整性,同时在后期维护上成本投入更小,能够根据版本变化快速修改并投入使用。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-19

    授权

    授权

  • 2015-12-23

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20150626

    实质审查的生效

  • 2015-11-25

    公开

    公开

说明书

技术领域

本发明涉及社交网络数据采集领域,是一种基于浏览器测试组件的QQ群数据获取的 方法,以实现更有针对性、准确性的QQ群数据获取的方法和系统。

背景技术

腾讯QQ是目前国内最具影响力的社交网络,QQ注册用户由1999年的2人(马化腾和张 志东)到现在已经发展到上亿用户,2013年8月QQ活跃用户数已达8.185亿,2014年4月11 日21点11分在线人数突破两亿,QQ用户可以在QQ群中发表文本和图片消息、上传相册图 片、上传文件、组织活动投票等操作,如今已成为腾讯公司的代表之作。IM的发展和普及 同其自身所具备的特征有着必然的联系。IM具有实时性、在线性与文本交互性等特征,满 足了人们在日常生活与办公环境中交流与协作的需要。

当前针对QQ的信息获取的方法主要有两种:

(1)数据库破解,即对即时通信通信软件运行后存取的嵌入式数据库进行破解。此方 法对QQ群信息采集而言技术实现难度较大,因为QQ客户端本地数据库与QQ版本的变动有 较大关系,通常会通过MD5加密数据库文件,或者是数据和数据库文件的双重加密,破解 难度相当大,破解成本无法控制。

(2)模拟web版QQ通信过程,即对那些提供web访问的即时通信软件进行模拟http的 get和post请求,获取数据。QQ虽然有web的访问方式(如SmartQQ),但是此方法对采集 QQ而言工作量大,繁琐。需要对访问QQ的每一条指令进行抓包分析,并获取相应的get 或post地址及内容。另外其通信过程本质上采用了异步加载的技术,Web通信过程往往一 次数据请求存在多个请求依赖,下一次请求往往需要上一次请求的结果作为输入,对此通 信过程分析工作复杂,难以覆盖所有返回的结果。随着WebQQ协议版本的升级,采集系统 也需要随之进行相应的潜在大规模修改,后期工作量很大,维护不容易。

由于QQ客户端协议的私有性,WEB端QQ协议频繁更改以及QQ开放API的局限性,并 不适合对其大规模采集。

浏览器测试组件(browserautomation)是一种基于浏览器内核的测试工具,无需特殊 设置即可使用。它最初主要是面向web应用,通过模拟用户行为进行web应用与浏览器的兼 容性测试、功能测试和压力测试等。基于浏览器测试组件的数据获取方式,由高级程序驱 动浏览器测试接口,实现自动化的网页浏览。待浏览器完成JS解析和网页渲染后,通过对 网页DOM元素定位并解析后可以获取AJAX加载的数据。这种方式能够获取全部的社交网 络数据,避免官方API方式的限制。

综上分析,目前针对数据获取技术和方法由于不同平台特性难以做到通用,同时针对 部分社交网络的数据获取版本依赖性较大,灵活性较低,鲁棒性较差,长期来说,维护升 级的工作量巨大。

发明内容

基于以上分析,为了实现对QQ群信息和消息的采集,本发明提出了一种基于浏览器 测试组件的QQ群数据获取方法与系统。

本发明主要包括两个方面:

(1)通过浏览器测试组件获取QQ群的资料信息和即时聊天消息。

(2)基于浏览器测试组件的并行化QQ群消息获取。

具体地,本发明包含以下内容:

一种基于浏览器测试组件的QQ群数据获取方法,包括以下步骤:

1)在客户端通过浏览器测试组件的端口,启动浏览器,跳转进入Web端QQ页面;

2)模拟用户行为,登陆欲获取QQ群数据的QQ采集账号;

3)通过对QQ采集账号登陆的页面DOM树的监听,不断获取即时信息和非即时信息, 并存储到MySQL数据库。

进一步地,所述浏览器测试组件是在启动浏览器之前进行初始化,并向浏览器注入 JavaScript库,用于执行客户端发送的命令请求的核心组件。

在本发明中,我们引入了无界面浏览器(headlessbrowser)的应用,无界面浏览器的 优势在于包含了浏览器内核但是没有UI界面,这样通过避免图形渲染和加载可以减少计 算机资源占用。然而,本发明同时支持有界面浏览器(如Chrome、Fierefox等),对于当 前普遍使用的异步加载技术,基于有界面浏览器也可以获取较好的性能。

进一步地,步骤1)包括:通过浏览器测试组件中的Hub组件不同端口实现多个浏览 器启动,客户端针对每个浏览器启动一个线程(可根据实际需要,编写用于调用浏览器测 试组件和数据处理等功能的程序来实现),即通过多线程实现对多个浏览器的控制,每个 线程对各自启动的浏览器分别发送命令请求。通过该过程可以实现基于浏览器测试组件的 并行化QQ群消息获取。

进一步地,步骤2)中所述用户行为包括点击、输入、拖拽等行为操作。

进一步地,步骤2)包括:登陆时输入QQ采集账号的账号和密码,通过定位页面验 证码元素节点,判断是否需要人工输入验证码,若需要,则提示操作人员进行人工输入, 等以上流程完毕,点击登陆按钮进行登陆。

进一步地,步骤3)中客户端通过调用浏览器测试组件提供的不同接口发送浏览器测 试组件规定的相应参数,浏览器测试组件接收参数,对客户端请求进行解析,然后通过 HttpProxy发送JS命令通知JavaScript库执行响应操作对浏览器页面DOM树进行监听。

进一步地,步骤3)中,获取即时信息包括以下步骤:

1‐1)登陆跳转成功以后,等待页面元素加载完毕,模拟用户行为点击进入QQ群组 界面。

1‐2)通过任务调度策略(可根据实际需要自行设定策略)分配单个群的时间片,按 策略进行轮询,监听并获取新消息。

1‐3)直到所有群轮询完毕,重复步骤1-2)。

进一步地,步骤3)中,获取非即时信息包括以下步骤:

2‐1)登陆跳转成功以后,等待页面元素加载完毕,获取页面中当前账号已经加入的 群列表,通过模拟用户点击,完整加载所有群。

2‐2)根据群列表进行轮询,首先进入群成员列表页面。在此页面,通过页面元素定 位可获取群公告和群成员列表。判断群公告是否有更新,如有,则写入数据库,若没有, 则不做写入数据库操作。判断群成员列表变动,如有新成员加入,则写入数据库,若有成 员已退出该群,则修改数据库中该成员状态。

2‐3)跳转进入群共享文件页面,通过页面元素定位获取共享文件信息,判断是否有 更新,有则写入数据库,没有则跳过。

2‐4)跳转进入群相册页面,通过页面元素定位获取群相册信息,判断是否有更新, 有则写入数据库,没有则跳过。

2‐5)若群列表未轮询完毕,则跳转至步骤2-2)。若群列表轮询完毕,则关闭浏览器。

进一步地,步骤2-2)、2-3)和2-4)中所述页面元素定位的方式包括XPath方式或 CSS选择器方式。由于XPath是一种用来确定XML文中元素的语言,而DOM树是XML的一 种树形结构,其可以定位节点的功能更加全面,优选采用XPath进行页面元素定位。

一种基于浏览器测试组件的QQ群数据获取系统,包括:

浏览器测试组件,用于通过端口启动浏览器,并模拟用户登陆Web端QQ;

数据采集模块,用于通过监听已登陆QQ的页面元素,获取即时信息和非即时信息;

数据存储模块,用于存储获取的QQ群数据。

本发明的积极效果如下:

本发明基于浏览器测试组件,结合并行化设计,面向QQ群实现即时聊天信息和非即 时信息的数据获取。本发明能够避免人工登陆操作,避免相当部分的人工操作行为。

传统的基于浏览器测试组件的采集需要打开浏览器UI,系统资源消耗较大,减缓了加 载进程从而影响了采集效率,同时由于巨大的资源开销影响了并行化采集的规模。通过操 作无界面浏览器(headlessbrowser)的基于浏览器测试组件的社交网络数据获取,减少 系统资源消耗,提高一定硬件资源条件下并行化采集点的数量,并缩减不必要的时间开支, 减少系统资源开销,加快数据采集的速度和规模。然后设定监听机制监听DOM元素变化进 行数据的定位和解析等操作获取数据。配合并行化分布式技术和消息总线任务调度,实现 大规模不同平台的社交平台数据获取。

基于浏览器测试组件实现用户行为模拟,包括点击、输入、拖拽等行为操作。由此方 式实现Web端QQ等登陆操作,此方法相比QQ客户端破解,避免了破解周期长、破解成本 大的问题,实现难度低,不需要逆向分析和大量的调试。相比基于AJAX技术等的通信过 程模拟,它不但避免了复杂的底层请求过程分析,减少了抓包分析过程,因为通常情况下, 通信过程中一次数据求情可能包含多个前后依赖,且部分请求格式参数由服务器随机产 生,难以确定产生的算法,在模拟请求过程中存在被服务器检测出异常并冻结的可能性; 而且避免了协议版本的更新所带来的后续系统代码的大规模修改,能够根据版本变化仅需 要修改用户操作逻辑即可适应新版本,快速有效投入实际数据获取应用。

此系统不依赖于WebQQ的底层通信协议,它能跨版本运行。

本发明不依赖于较底层的协议,伴随版本升级能够快速实现升级,调整获取方式,适 应新版本进行数据获取。

本发明针对WebQQ的特性,能够较快获得QQ相关信息,同时本发明支持跨平台下 数据获取,能够适应不同的系统环境。

通过浏览器测试组件不同接口可实现多个浏览器启动,客户端针对每个浏览器启动一 个线程,分别发送指令,由于浏览器间是相互独立的,所以浏览器间数据获取并不会干扰。 由于采用浏览器测试组件模拟用户行为在进行网页操作上拥有一定的通用行为以及在数 据获取上存在一定的通用功能,通过对这些通用行为和功能进行封装,使得在针对社交网 络进行数据获取的时候便于复用,减少工程时间开销。目前能够并发获取多个群信息。

此方法突出了“所见即所得”的特点,只要网页上能看见的,系统就能获取到,而且 此方法只依赖与网页元素的结构,只要结构不变,后续就无需作大规模修改,维护方便。

综上所述,本发明在快速获取数据的同时,兼顾了获取数据的完整性,同时在后期维 护上成本投入更小,能够根据版本变化快速修改并投入使用。

附图说明

图1本发明实施例中QQ群数据采集流程图。

图2本发明实施例基于浏览器测试组件的QQ群数据获取系统框架图。

图3本发明实施例web端SmartQQ页面示意图。

图4本发明实施例登陆web端SmartQQ页面的示意图。

图5本发明实施例群组界面示意图。

图6本发明实施例某群的群消息示意图。

图7本发明实施例控制台中输出获取图6所示信息的示意图。

图8是本发明实施例网页中的群列表示意图。

图9是本发明实施例群成员列表示意图。

图10是本发明实施例群共享文件示意图。

图11是本发明实施例群相册示意图。

图12是本发明实施例中QQ群数据采集并行化设计图。

具体实施方式

本发明中QQ群数据采集的流程如图1所示,系统框架图如图2所示,其中QQ群数据 的获取包括包括即时信息获取和非即时信息获取。具体如下:

1)基于浏览器测试组件的即时信息获取,具体可分为以下几个步骤:

a)通过浏览器测试组件的接口,启动浏览器,跳转进入Web端QQ页面。如图3所 示,打开SmartQQ(此为web端qq的一个版本)。

b)模拟用户行为,输入采集账号和密码,判断是否需要人工输入验证码,若需要, 则提示操作人员进行人工输入(Web端QQ采用的验证码经过处理,目前难以通 过图像对比获取正确的验证码),等以上完毕,点击登陆。如图4所示,自动 输入采集账号和密码,进行登陆。

c)登陆跳转成功以后,等待页面元素加载完毕,模拟用户行为点击进入群组界面。 如图5所示,跳转成功以后,自动点击相应标签(分别为“联系人”->“群”) 进入组群页面,可以获取群列表等。

d)通过一定的任务调度策略分配单个群的时间片,按策略进行轮询,监听并获取 新消息。如图6中的箭头所示,随机一个群中有用户发出聊天信息“233333”, 而在控制台输出了获取的到的信息,包括发言者和发言内容以及所属的群,如 图7中的箭头所示。

e)直到所有群轮询完毕,重复步骤d)。

f)值得一提的是,步骤d)中的任务调度策略可自行选择,一般情况下基于时间片 轮询的方式,为降低数据获取的延迟,可根据群信息产生量按一定的策略或比 例进行时间片分配。

2)基于浏览器测试组件的非即时信息获取,具体可分为以下几个步骤:

a)通过浏览器测试组件组件端口,启动浏览器,跳转进入Web端QQ群主页。

b)模拟用户行为,输入采集账号和密码,判断是否需要人工输入验证码,若需要, 则提示操作人员进行人工输入(Web端QQ采用的验证码经过处理,目前难以通 过图像对比获取正确的验证码),等以上完毕,点击登陆。

c)登陆跳转成功以后,等待页面元素加载完毕,获取页面中当前采集账号已经加 入的群列表,查看页面是否存在“更多群”等标签,通过模拟用户点击,完整 加载所有群,如图8所示。

d)根据群列表进行轮询,首先进入群成员列表页面,如图9所示。在此页面,通 过XPath元素定位,可获取群公告和群成员列表。判断群公告是否有更新,如 有,则写入数据库,若没有,则不做写入数据库操作。判断群成员列表变动, 如有新成员加入,则写入数据库,若有成员已退出该群,则修改数据库中该成 员状态。

e)跳转进入群共享文件页面,如图10所示,通过XPath进行页面元素定位,获 取共享文件信息,判断是否有更新,有则写入数据库,没有则跳过。

f)跳转进入群相册页面,如图11所示,通过XPath进行页面元素定位,获取群 相册信息,判断是否有更新,有则写入数据库,没有则跳过。

g)若群列表未轮询完毕,则跳转至步骤d)。若群列表轮询完毕,则关闭浏览器, 切换采集账号,跳转至步骤a)。

此外,本发明中QQ群数据采集采用并行化设计,如图12所示。浏览器测试组件提供一 个称为Hub的组件,通过Hub组件接受客户端代码请求,可分别启动彼此隔离的浏览器进 程,接着此后的客户端代码请求均由Hub组件通过启动独立进程时候配置的sessionID进 行命令分发,分别和不同浏览器页面DOM树进行交互。以此实现并行化数据获取。而消息 总线主要由按需编写的客户端程序实现,包括采集账号的获取和分配,通过把采集账号分 配到不同线程进行数据采集。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号