SpookyJs显示所有HTTP标头

时间:2015-11-29 20:27:37

标签: http-headers phantomjs casperjs spookyjs

当我在传统浏览器中与其进行交互时,我有一个表现不同的网站,而不是怪异/ casper /幻像。我想通过打印整个http头请求和对控制台或文件的响应进行调试,以查看我的浏览器和幻像浏览器之间有什么不同(类似于我在浏览器上使用开发人员工具的方式)。如何在一个怪异的事件处理程序中获取所有http请求/响应,包括标头?

2 个答案:

答案 0 :(得分:2)

我通过SpookyJS从节点模块控制CasperJS - 所以使用Artjom B的建议。我能够确定我只需要在构建时将CasoneJS选项JSON传递给SpookyJS时添加一个事件监听器宾语。对于使用SpookyJS的任何人来说,该代码看起来大致如下:

var Spooky = require( 'spooky' );

var spooky = new Spooky(
      {
        child: {
            'transport'         : 'http'
        },
        casper: {
            logLevel: 'debug'
          , verbose: true
          , onResourceRequested : function( C, requestData, request ){ this.emit('console', JSON.stringify( requestData ) ) }
          , onResourceReceived  : function( C, response ){ this.emit('console', JSON.stringify( response ) ) }
        }
      }, function ( err ) {
        if ( err ) {
            var e = new Error( 'Failed to initialize SpookyJS' );
            e.details = err;
            throw e;
        }

        spooky.start( "www.something.com" );

        spooky.run();
     }
);

spooky.on('console', function (line) {
   console.log(line);
});

答案 1 :(得分:1)

在CasperJS中,您可以收听几个events来提供更多信息。

casper.on('resource.requested', function(requestData, request) {
    this.echo('Request (#' + requestData.id + '): Headers' + JSON.stringify(requestData.headers, undefined, 4));
});

有关详细信息,请参阅page.onResourceRequested

此外,您应该使用casper.capture()捕获尽可能多的屏幕截图,以便了解正在发生的事情。

还有一些事件可以帮助您查看更多错误:

// http://docs.casperjs.org/en/latest/events-filters.html#remote-message
casper.on("remote.message", function(msg) {
    this.echo("Console: " + msg);
});

// http://docs.casperjs.org/en/latest/events-filters.html#page-error
casper.on("page.error", function(msg, trace) {
    this.echo("Error: " + msg);
    // maybe make it a little fancier with the code from the PhantomJS equivalent
});

// http://docs.casperjs.org/en/latest/events-filters.html#resource-error
casper.on("resource.error", function(resourceError) {
    this.echo("ResourceError: " + JSON.stringify(resourceError, undefined, 4));
});

// http://docs.casperjs.org/en/latest/events-filters.html#page-initialized
casper.on("page.initialized", function(page) {
    // CasperJS doesn't provide `onResourceTimeout`, so it must be set through 
    // the PhantomJS means. This is only possible when the page is initialized
    page.onResourceTimeout = function(request) {
        console.log('Response Timeout (#' + request.id + '): ' + JSON.stringify(request));
    };
});