PhantomJS主机文件更改或主机头

时间:2016-01-11 18:58:00

标签: javascript localhost phantomjs virtualhost ab-testing

我想编写PhantomJS脚本,允许在localhost版本和网站的生产版本上进行测试(localhost需要解析主机名,不能在ip地址上工作)。该脚本基本上只是在两个版本之间进行比较:加载本地版本,渲染到图像,加载生产版本,渲染到图像并比较这两个版本。我现在正在做的是使用主机文件,它需要大量的修改和保存主机文件(不是很好的解决方案,因为它影响其他人,有时它被缓存)

还有另一种方法是使用主机头,例如:

prod:http://example.com

local:http://127.0.01/与host:example.com

与hostfile具有相同的结果,更安全。问题是只有主要的html加载了本地版本,资源,css,图像静态加载使用127.0.0.1无法解决....

我的问题是:如何告诉PhantomJS对所有请求使用主机头?

1 个答案:

答案 0 :(得分:4)

我找到答案:D,通过拦截resourceRequest事件,我们可以更改资源的url或标题。

var targetHost=  'example.com'; 
var targetIP = '127.0.0.1'; 
var page = require('webpage').create(); 
page.onResourceRequested = function(request, network){   //Intercept request here, change url,header.   
  var newUrl = request.url.replace(targetHost, targetIP);  
  console.log('Intercepted change url to ', newUrl, targetHost);  
  network.setHeader('Host', targetHost); 
  network.changeUrl(newUrl); 
};
page.open(url, function() {});