当前位置:嗨网首页>书籍在线阅读

05-渲染动态网页

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

[toc]

5.3 渲染动态网页

对于搜索网页这个例子,我们能够快速地对API的方法进行逆向工程来了解它如何工作,以及如何使用它在一个请求中获取结果。但是,一些网站非常复杂,即使使用高级的浏览器工具也很难理解。比如,一个网站使用 Google Web Toolkit(GWT) 开发,那么它产生的JavaScript代码是机器生成的压缩版。生成的JavaScript代码虽然可以使用类似 JS beautifier 的工具进行还原,但是其产生的结果过于冗长,而且原始的变量名也已经丢失,这就使其难以理解,难以实施逆向工程。

此外,更高级的框架(比如 React.js 以及其他基于Node.js的工具)可以进一步抽象已经很复杂的JavaScript逻辑,混淆数据和变量名称,并添加更多的API请求安全层(使用cookie、浏览器会话以及时间戳,或使用其他防爬技术)。

尽管经过足够的努力,任何网站都可以被逆向工程,不过我们可以使用浏览器渲染引擎避免这些工作,这种渲染引擎是浏览器在显示网页时解析HTML、应用CSS样式并执行JavaScript语句的部分。在本节中,我们将使用WebKit渲染引擎,通过Qt框架可以获得该引擎的一个便捷Python接口。

  **什么是WebKit?** WebKit的代码源于1998年的KHTML项目,当时它是Konqueror浏览器的渲染引擎。2001年,苹果公司将该代码衍生为WebKit,并应用于Safari浏览器。Google在Chrome 27之前的版本也使用了WebKit内核,直到2013年转向利用WebKit开发的Blink内核。Opera在2003年到2012年间使用的是其内部的Presto渲染引擎,之后切换到WebKit,但是不久又跟随Chrome转向Blink。其他主流渲染引擎还包括IE使用的Trident和Firefox的Gecko。