我试图(没有成功)通过事件将自定义标头添加到请求中:

 casper.on("page.resource.requested",function(requestData,request){...}


像这样的东西:

casper.on("page.resource.requested",function(requestData,request){

     request.setHeader("X-myHeader", "123");
}


我认为我可以这样做,因为在PhantomJS中您可以编写:

 page.onResourceRequested = function(requestData, networkRequest) {
      networkRequest.setHeader("X-myHeader", "123");
 }


在该事件(casper对象的事件)中添加请求标头有什么选择?

最佳答案

在最新版本1.9.7中,存在错误request in onResourceRequested has no setHeader function #12264。您需要使用早期版本的phantomjs。

之所以会出现差异,是因为您在命令行和casperjs中使用了不同版本的phantomjs。在Windows中,您可以在以下文件夹中找到casper的幻影:

C:\ Users \ someuser \ AppData \ Roaming \ npm \ node_modules \ casperjs \ node_modules \ phantomjs


您可以执行的两个最简单的操作是


将可以使用的有效phantomjs添加到PATH(casper会使用它)

要么
使用有效的phantomjs版本覆盖casperjs\node_modules\phantomjs\lib\phantom中的可执行文件

要么
只是让npm为您下载版本


最后一点的步骤是:


通过从命令行调用phantomjs --version来查找适用于phantomjs的版本
在命令行中转到以下文件夹

C:\ Users \ someuser \ AppData \ Roaming \ npm \ node_modules \ casperjs

安装您的工作版本(我实际上不知道哪个版本有效,因此我在这里使用1.9.0)

npm安装[email protected]


您可以通过调用npm show phantomjs检查可用的版本。

关于javascript - 通过事件添加请求 header :CasperJS中的page.resource.requested,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24285126/

10-13 08:41