2017-02-26 151 views
1

我要让我的代码假冒refferer头在解析系统(如谷歌分析),但它不工作。我添加了'var settings = {... // ...}'并添加'page.onLoadStarted = function(){page.customHeaders = {};'并加入 - “page.open(...,设置...”,但它仍是公认就像在分析直接交通以下是代码:伪造的Referer标头在PhantomJS是行不通

var page = require('webpage').create(); 
var settings = { 
    headers: { 
    "Referer": "http://google.com" 
    } 
}; 
var urls = ['http://china.com/','http://usa.com/','http://emirates.com/']; 
var i = 0; 

function OpenPage(){ 
    setTimeout(function(){ 
     page.onLoadStarted = function() { 
    page.customHeaders = {}; 
}; 
     page.open(urls[i],settings, function(status) { 
      if (status == 'success') { 
        page.render('example' + i + '.png'); 
      } 
      i++; 
      if(i <= urls.length - 1){ 
       OpenPage(); 
      }else{ 
       phantom.exit(); 
      } 
     }); 
    },5000); 
}  
OpenPage(); 

我从这个问题https://stackoverflow.com/a/42468998/4999509得到这个代码。和它的工作像一个编码器魅力,尊重 - 闪光雷

+0

您还可以添加以下内容以输出请求头,实际发送: page.onResourceRequested = function(requestData){ console.log('requestData:'+ JSON.stringify(requestData)); }; –

+0

太糟糕了,我 - 我是新来的JS) –

回答

1

试试这个:

var page = require('webpage').create(); 

page.onLoadStarted = function() { 
    page.customHeaders = {}; 
}; 

var urls = ['http://china.com/','http://usa.com/','http://emirates.com/']; 
var i = 0; 

function OpenPage(){ 
    setTimeout(function(){ 
     page.customHeaders = { 
      "Referer": "https://google.com" 
     }; 
     page.open(urls[i], function(status) { 
      if (status == 'success') { 
        page.render('example' + i + '.png'); 
      } 
      i++; 
      if(i <= urls.length - 1){ 
       OpenPage(); 
      }else{ 
       phantom.exit(); 
      } 
     }); 
    },5000); 
}  
OpenPage(); 
+0

谢谢!你的代码正在工作!但是如果我尝试使用代理运行phantomjs myscript,js - 我没有得到任何分析中的推荐人。你现在有什么关于? –

+1

我认为Google将Phantom视为bot,这就是为什么Google Analytics中没有结果。尝试设置User-Agent。 –

1

这适用于谷歌Analytics(分析),

var settings = { 
    headers: { 
     "Referer": "http://www.google.com/" 
    } 
}; 

page.open(urlToVisit, settings, function (status) { 
    ... 
} 

基本上,您需要使用页面上下文中的page.open()函数的第二个参数使Google Analytics代码能够读取它的自定义引用程序