PhantomJS,CasperJS - 请求,响应和文件下载

时间:2013-03-19 09:08:10

标签: phantomjs casperjs

我希望在访问网站时看到通信流程。

到目前为止,我使用的是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可以下载文件?

3 个答案:

答案 0 :(得分:1)

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

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

其中req具有您要查找的对象属性。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这是一个迟到的答案,也许不是你所追求的,但我发现一个像Charles这样的Web代理是调试PhantomJS / CasperJS脚本时非常有用的工具。它位于浏览器和远程站点之间,并报告所有请求和响应。它是SSL的精明所以它以纯文本显示HTTPS交换。

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

casperjs --ignore-ssl-errors=true --proxy=127.0.0.1:8888 ./casper-test.js