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 引用原作者。
一手来源
- https://dl.acm.org/doi/10.1145/2109205.2109208
- https://web.archive.org/web/20250216232237/https://dl.acm.org/doi/10.1145/2109205.2109208
- https://api.crossref.org/works/10.1145/2109205.2109208
- https://people.ece.ubc.ca/amesbah/resources/papers/tweb-final.pdf
- README.md GitHub · crawljax/crawljax · 修订 5771f61
- LICENSE GitHub · crawljax/crawljax · 修订 5771f61
- pom.xml GitHub · crawljax/crawljax · 修订 5771f61