2

我想在访问站点时查看通信流程。

到目前为止,我使用的是 page.onResourceRequested 和 page.onResourceReceived。例子:

page.onResourceReceived = function(R) {

    console.log(R.id+' '+R.status+' '+R.contentType+' '+R.redirectURL);
};

这起到了一种魅力。问题:看来我必须有能力下载某些文件(即查看响应正文,是图像还是 javascript 文件)。

原来 1.8.2 版没有这个功能,目前还不清楚 1.9 版是否会有。所以...... CasperJS 有“下载”方法。

但是将 PhantomJS 移植到 casperjs 变得很棘手。例如我可以使用:

casper.on("http.status.301", function(resource) {
    this.echo(resource.url + " is permanently redirected", "PARAMETER");
}); 

来自 casperjs 的示例 events.js

这实际上是一个 phantomjs 响应......但我必须监控所有请求/响应

所以我试着做:

var casper = require("casper").create(
  {
    verbose: true,
    logLevel: "debug",
    exitOnError: error,
    onResourceReceived: resRecv,
    onResourceRequested: resReq,
}


);

有:函数 resRecv(R) {

console.log( R.id+' '+R.status+' '+R.contentType+' '+R.redirectURL);

}

哪个不起作用,因为 R 不是响应?如何获得与 'casper.on("http.status.301" ...' 中的参数相同的参数?

或者也许我错了,PhantomJS 毕竟可以下载文件?

4

3 回答 3

1

您使用的是哪个版本的 CasperJS?1.1 文档表明传递给 onResourceReceived 和 onResourceRequested 的第一个参数是对 casper 对象本身的引用。这对我有用:

 casper.options.onResourceRequested = function(R, req) { ... }

其中 req 具有您正在寻找的对象属性。

于 2013-09-11T01:18:49.230 回答
0

但我认为它只获得类型 3** 重定向,而不考虑具有元标记重定向和通过 javascript 重定向的网页。

于 2013-03-19T16:53:06.340 回答
0

这是一个迟到的答案,也许不是你想要的,但我发现像Charles这样的网络代理在调试 PhantomJS / CasperJS 脚本时是一个非常宝贵的工具。它位于浏览器和远程站点之间,报告所有请求和响应。它精通 SSL,因此它以纯文本形式显示 HTTPS 交换。

唯一需要注意的是,您可能需要在ignore-ssl-errors设置为 true 的情况下运行,如下所示:

casperjs --ignore-ssl-errors=true --proxy=127.0.0.1:8888 ./casper-test.js
于 2015-05-26T02:45:19.117 回答