使用node.js中的zombie.js跟踪网络请求

时间:2015-11-08 18:12:53

标签: node.js zombie.js

我目前正在寻找一种方法来跟踪zombie.js中网站发出的所有请求。我们的想法是获取有关加载内容的所有信息(例如,跟踪广告的像素,分析标签,图像,CSS ......)。基本上是无头浏览器中dev Tools的网络监视器。

我目前陷入困境:

var Browser = require("zombie");
var url = "http://stackoverflow.com/";
var browser = new Browser();

browser.visit(url, function(err) {
    for (var i = browser.resources.length - 1; i >= 0; i--) {
        console.log(browser.resources[i].request.url)
    }
})

这可能是最基本的设置,除了某些.js请求之外不会跟踪任何内容。此外,我无法跟踪由某些外部脚本加载的加载文件。最好的例子是Google Tagmanager,它将隐藏"标记管理器加载的所有文件。

如果有人知道如何解决这个问题会很棒。

提前致谢

丹尼尔

1 个答案:

答案 0 :(得分:1)

您想要找到的内容称为资源,您可以通过browser.resources访问它们,例如

browser.visit(url).then(function(){
    console.log(browser.resources); // array with downloaded resources
});

您还可以创建管道来实时监控正在下载的资源:

browser.pipeline.addHandler(function(browser, request, response){
    console.log(request, response);
    return response;
});
browser.visit(url).then(function(){
    console.log('successful visit');
});
相关问题