浏览器接收响应数据过大_博特智能|基于通信过程模拟的数据获取技术

基于通信过程模拟的数据获取技术,一般是通过分析 Web 客户端和服务器间的底层通信过程,从而得到数据请求的格式,通过对数据请求格式进行模拟模拟,不断向服务器发送请求,能够快速获取目标数据。其典型代表为AJAX 技术模拟方式。基于模拟 AJAX 的方式,采集速度快,内容全面,但是开发难度大,维护成本高。

AJAX(Asynchronous JavaScript and XML,异步的 JavaScript 与 XML) 是一种浏览器端的技术,用于在客户端和服务器之间进行数据的局部交换。最早使用这种技术的商业化产品是微软的 Outlook Web Access,随后 Google suggest、Gmail、 Google Map 等都使用了该技术,极大地提升了用户的体验,从而使 AJAX 得到迅速推广。当前,AJAX 已经成为 web 应用中的一个核心技术。

传统的 web 服务交互过程,客户端处于“请求-等待”模式,服务器端则处于“等待-响应”模式。在发出一个请求后,客户端便进入等待状态。服务器端接收到请求后,根据需求查询数据库,完成结果页面的生成,并将数据发回给客户端。客户端浏览器加载页面,根据 CSS 文件进行渲染。至此,一个完整的请求过程结束。这个过程存在如下的问题:一、如果不考虑前端加载渲染的消耗,则响应时间完全取决于服务器的处理速度和网络状况,客户端在这段时间内不能做其它事,用户体验差。二、服务器端对每个请求都必须生成完整的页面,即使每次生成的页面只有一小部分发生改变,因此,大量的带宽被占用。

传统页面请求过程如图所示。

754540a62feffb3e6392e1cf7f061b5f.png

随着网络发展,互联网信息呈现爆炸式增长,用户对于应用的响应时间要求越来越高,服务提供商也希望能够降低每一次数据请求的带宽占用和服务器压力,于是异步加载技术应运而生。异步加载是指通过异步传输和局部刷新,动态地改变当前页面内容,无需重新载入整个网页,能更快地响应用户,实现更好的用户体验,同时服务器只需要返回目标数据,无需生成完整页面,降低了服务器处理请求的压力和带宽占用率,是 Web2.0应用中通常采用的技术。当前社交网络,大多采用了 AJAX 异步加载的方式实现页面局部刷新。

基于 AJAX 页面请求的时序过程如图所示。

da2af3e9162963cef5eb40bd7e80bb28.png

实际上,AJAX 并不是一种技术。从本质上来说,它是几种技术的集合,每种技术都各有特色,这些技术以全新强大方式融合在一起。Ajax 包含:

1) 使用 XHTML 和 CSS 基于标准的呈现

2) 使用 DOM(文档对象模型)的动态显示和交互

3) 使用 XML 和 XSLT 的数据交换和操作

4) 使用 XMLHttpRequest 的异步数据检索

5) 将以上内容绑定到一起的 JavaScript

AJAX 实际上是一系列技术的集合,包括:HTML、CSS、JavaScript、 XML 和 XSLT 以及 XMLHttpRequest。其中,HTML 用于数据的表示,异步请求得到的数据最终还是要在网页中展示,因此需要 HTML 来标记数据,告诉浏览器这是什么元素;CSS 用于数据结构的展示,即数据要怎么在页面上布局呈现;

JavaScript 用于行为交互,通过对 DOM(Document Object model)树的操作,可以动态地改变页面;XML 和 XSLT 则是数据在网络传输中的数据格式,现在主流的是更轻量级的Json;XMLHttpRequest作为代理与服务器进行数据交换,客户端的异步请求的发出和数据的接收都由 XMLHttpRequest 完成,因此XMLHttpRequest 也是 AJAX 的核心。

以 google suggest 为例。首先,搜索框上绑定了一个用户输入事件对应的触发函数。可以理解为当有用户输入时,便会执行一段设定好的 JavaScript 脚本。当探测到用户在 google 搜索框中输入查询串的第一个字时,JavaScript 脚本便会生成一个 XMLHttpRequest 对象,并由 XMLHttpRequest 对象发出一个以查询串第一个字为参数的 Http 请求,并接收服务器的响应数据。响应数据通常为一个 json 字符串。在获取数据之后,从中抽取出十个推荐的查询串,然后为查询串生成对应类型 DOM 节点,并插入到 DOM 树中指定的位置,具体的展示效果根据 CSS 进行调整。最终便实现了查询串推荐和补全的功能。上述便是一个 AJAX 技术应用的典型例子。

可以看出,使用 AJAX 方式可以实现异步传输和局部更新。在请求过程中,可以进行其它操作,而不必等待,很大程度上提高了用户体验。AJAX 通讯过程中传输的数据十分精简,冗余数据少,可读性强,可扩展性高,减少了带宽占用以及服务器的压力。当前,社交网络大量使用 AJAX 技术,这是模拟 AJAX 进行数据采集的前提。

基于 AJAX 技术模拟的数据获取方式主要是通过对用户和服务器每一次AJAX 请求进行分析,解析得到其中的请求数据的过程格式和前后依赖,再利用分析结果进行 AJAX 请求的模拟,从而获取目标数据。

由于 AJAX 请求返回的内容主要是数据信息,掺杂的无关内容比较少,而且跟基于浏览器的采集方式相比,不再需要进行渲染等其它工作,因此采集速度快,消耗的资源少。跟基于官方 API 的方式相比,模拟 AJAX 请求的过程跟社交网络用户的访问行为较为相似,不容易被识别。因此其采集频率和采集范围受限较小,一般情况下 AJAX 模拟请求无频率限制,从而可以达到及时获取目标数据更新快速的目的,实现长期的大规模的数据采集。

Ajax 技术是浏览器通过异步 http 请求获取信息的办法。Ajax 行为模拟就是分析浏览器 AJAX 行为,找到链接规律,由模拟浏览器链接访问,获取与 Ajax 请求相同的返回结果,从而达到 Ajax 行为模拟的目的。

在模拟Ajax方面已经有一些工作成果,Duda提出基于状态转换的Ajax采集方式,但没有并行化;ALI MESBAH、Zhaomeng等提出了基于状态转换的 Ajax 模拟方式,但是缺乏通用性;Z Xiao等人提出通过模拟 Ajax 技术采集 Facebook 网站数据的方法,能够实现采集,但是存在采集速度较慢,且只有单点采集没有进行分布式扩展。Gjoka等人采用 HTML 抽取的方式获取了 Facebook 上用户信息,并估计了 Facebook 的用户规模,但只能获取少量的用户基本信息,没有对用户的消息进行获取。

中科院信工所单既喜的研究以社交网络大规模数据获取为基础,拓展了基于模拟 Ajax 等技术的社交网络采集方法,并实现了一个分布式社交网络抓取系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值