之前的做法是使用PhantomJS以及一个html+嵌套iframe包含目标网站URL+跨域dom操作的简单性能优化。
PhantomJS实现下面的核心需求:
(1)无头模式,然而PhantomJS内核基于老版本的QtWebKit,与最新版本的Chromium代码相比,版本太老了,很多特性用不了(虽然目前国内网站应该也还没开始用上这些?比如ServiceWorker、CSS Custom Properties、Web Components等等)
(2)可以等待PhantomJS将页面load完成之后,注入JS执行,这之间需要支持下列核心特性:
2.1 可以通过注入JS代码的方法导入外部JS资源,一般就是动态插入一个<script>元素,并设置src属性;
2.2 可以用注入的JS代码来自动化地控制页面的scroll,或者根据特定网站的代码直接调用相关的JS Event Handler函数
2.3 当然,PhantomJS应该允许从外部直接触发用户输入事件,比如根据某个CSS Selector Path定位到某个Element,然后触发其click事件,浏览器本身通常不支持这么做,但是浏览器的扩展,比如WebDriver这样的原本设计用于自动化Web测试的工具支持这么做