2015-01-12 69 views
0

我有以下RequestURL.js文件。Phantomjs檢查響應標題,然後執行一些操作

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

page.customHeaders = {"pragma": "akamai-x-feo-trace"}; 
page.settings.userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36" 

if (system.args.length === 1) { 
    console.log('Try to pass some args when invoking this script!'); 
} else { 
    page.open(system.args[1], function (status) { 
    var content = page.content; 
    console.log(content); 
    phantom.exit(); 
    }); 
} 

現在我執行此爲phantomjs --ignore-ssl-errors=yes --ssl-protocol=any RequestURL.js #my_url_here > body.html

現在我已經用Python編寫的是需要body.html並執行它的分析器。在此之前,我希望只有響應中包含以下標題才能生成頁面源代碼。

X-Akamai-FEO-State:TRANSFORMING

是否有修改我RequestURL.js到那裏的方式。

回答

3

預計page.onResourceReceivedpage.onLoadFinished回調page.open()之前被觸發。

var transforming = false; 
page.onResourceReceived = function(response){ 
    if (response.url === system.args[1]) { // TODO handle redirects if necessary 
     response.headers.forEach(function(header){ 
      if(header.name === 'X-Akamai-FEO-State') { 
       transforming = header.value === 'TRANSFORMING'; 
      } 
     }); 
    } 
}; 

page.open(system.args[1], function (status) { 
    if (transforming) { 
     console.log(page.content); 
    } 
    phantom.exit(); 
}); 
+0

醜陋但有用。希望它可以做得更合理。 –

+0

我不明白這是多麼醜陋。如果你可以詳細說明什麼是困擾你,也許它可以改進。 –

相關問題