這https://www.npmjs.com/package/phantom#functionality-details頁說:我如何在phantomjs
您也可以通過命令行指定額外的參數,以phantom.create(切換到phantomjs過程),例如:
phantom.create '--load-images=no', '--local-to-remote-url-access=yes', (page) ->
或在選項指定它們*對象:
phantom.create {parameters: {'load-images': 'no', 'local-to-remote-url-access': 'yes'}}, (page) ->
這些例子只是在咖啡劇本,他們也認爲影射在創建函數可以接受
create('string',function)
或
create([object object],function)
但真正期待的第一個參數是功能!
我真的很想嘗試http://phantomjs.org/api/command-line.html我可能有錯誤的想法,但對我來說,它看起來像他們可以用在創建功能(就在你做createPage之前),我錯了嗎?
我已經試過幾件事情,最合乎邏輯的一個是這樣的:
var phantom = require('phantom');
phantom.create(function(browser){
browser.createPage(function(page){
page.open('http://example.com/req.php', function() {
});},{parameters:{'proxy':'98.239.198.83:21320'}});});
所以頁面被打開。我知道這一點,因爲我正在使req.php保存$ _SERVER對象到一個txt墊,但是,REMOTE_ADDR和REMOTE_PORT頭不是我設置的代理中的頭。他們沒有效果。我也曾嘗試:
{options:{'proxy':'98.239.198.83:21320'}}
由於文檔調用該對象的選項*對象*見上^
和
'--proxy=98.239.198.83:21320'
我也通過幻影模塊有一個挖找到創建功能。它不是用js寫的,我至少看不到它。它必須在C++中。它看起來像這個模塊已經更新,但模塊內部的例子看起來像舊代碼。
我該怎麼做?
編輯:
var phantom = require('phantom');
phantom.create(function(browser){
browser.createPage(function(page){
browser.setProxy('98.239.198.83','21320','http', null, null, function(){
page.open(
'http://example.com/req.php', function() {
});});});});
這會產生錯誤並且頁面被刮掉,但代理將被忽略。
代理設置在創建流程期間設置,而不是在頁面打開期間設置。你真的試圖將字符串或對象作爲第一個參數傳遞給'phantom.create'嗎?你如何驗證代理設置不起作用? – 2015-02-17 21:48:19
傳遞字符串作爲page.create的第一個參數給出了錯誤(期望的函數),我試着按照你的推理將它放在phantom.create上(在函數前後嘗試),沒有錯誤,但它沒有效果。我沒有被視爲代理 – 2015-02-17 21:59:05