我希望在访问网站时看到通信流程。
到目前为止,我使用的是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可以下载文件?
答案 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