2012 · 期刊论文

通过动态分析用户界面状态变化爬取基于 Ajax 的 Web 应用

Crawling Ajax-Based Web Applications through Dynamic Analysis of User Interface State Changes

Crawljax 在真实浏览器中驱动 Ajax Web 应用,以推断其状态流图。它扫描 DOM 中候选的可点击元素并触发事件,再用可配置的比较方法与相似度阈值将得到的 DOM 与已知状态比对,记录新状态及状态间的事件转换,并通过重新加载与重放路径进行回溯。并发版本将爬取任务划分给多个浏览器实例。该 Java 工具基于 Selenium WebDriver 与插件机制,其中一个插件可为已爬取的状态生成静态镜像。作者评测了六个开源与工业网站,并在 Google AdSense 上测量并发浏览器数量对爬取耗时的影响。

研究范围与局限

Crawljax 恢复的是客户端 UI 状态与导航转换,而非应用源码、服务端逻辑或完整的行为模型。推断出的图只是某一时刻的快照实例:点击顺序、服务端因素以及深度、时间与状态数上限等状态爆炸控制都会影响结果。默认设置下每个元素只点击一次,因而遗漏了需要多次点击才出现的元素:在 Pet Store 中找到 36 个标注元素中的 33 个,在四个外部网站抽样的 40 个可点击元素中找到 38 个。由于缺少黄金标准与可比较的 Ajax 爬虫,准确性通过注入元素、人工参考模型及抽查评估。外部网站会随时间变化,并发实验则在 Google 内部基于 AdSense 进行。所审阅的 2023 年仓库是后来基于 Java 11 与 Selenium 4 的代码,并非 2012 年评测所用版本。

与本合集的关联

补充一种经典的动态分析方法,可恢复运行中 Web 应用的 UI 状态机,与本节基于截图、视频及代码的重建研究互补。

发表与复核详情

发表载体
ACM Transactions on the Web
发表状态
期刊论文
出版/提交日期
2012 年 3 月
日期依据
ACM 提交的 Crossref 元数据将印刷与在线出版日期均记为 2012 年 3 月,与文章页脚的“Publication date: March 2012”一致。ACM 页面存档中的 2012 年 3 月 1 日被视为期号月份,因此保留月精度。
DOI
10.1145/2109205.2109208

Crossref 与 ACM 页面存档给出三位作者,以及 ACM Transactions on the Web 第 6 卷第 1 期第 1–30 页;文章的引用格式标为 Article 3(2012 年 3 月),共 30 页。正文审阅依据 Ali Mesbah 在 UBC 网站上提供的 30 页作者版本;版本记录以 ACM 页面为准。本文是作者 ICWE 2008 论文的修订扩展版。文中称 Crawljax 采用 Apache 许可,可从 crawljax.com 获取。代码链接指向 crawljax/crawljax 仓库,其最大贡献者为第一作者;所审阅的 2023-06-19 提交附有 Apache-2.0 LICENSE,版本为 5.2.4-SNAPSHOT,使用 Java 11 与 Selenium 4.9.0。本次未运行代码或实验。

来源复核于

本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。

报告条目过时 建议修正翻译

一手来源

  1. https://dl.acm.org/doi/10.1145/2109205.2109208
  2. https://web.archive.org/web/20250216232237/https://dl.acm.org/doi/10.1145/2109205.2109208
  3. https://api.crossref.org/works/10.1145/2109205.2109208
  4. https://people.ece.ubc.ca/amesbah/resources/papers/tweb-final.pdf
  5. README.md GitHub · crawljax/crawljax · 修订 5771f61
  6. LICENSE GitHub · crawljax/crawljax · 修订 5771f61
  7. pom.xml GitHub · crawljax/crawljax · 修订 5771f61