2016-11-18 43 views
1

我想創建一個腳本來登錄到我的Facebook帳戶,但是當我運行我的腳本時,我收到消息,未啓用Cookie。 我phantom.js腳本:試圖使用phantom.js登錄Facebook

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

page.settings.userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1'; 
page.settings.javascriptEnabled = true; 
page.settings.loadImages = false; 
phantom.cookiesEnabled = true; 
phantom.javascriptEnabled = true; 

page.open("http://facebook.com", function(status) { 


    if (status === "success") { 
     page.evaluate(function() { 
       document.querySelector("input[name='email']").value = "x"; 
       document.querySelector("input[name='pass']").value = "y"; 
       document.querySelector("#login_form").submit(); 

       console.log("Login submitted!"); 
     }); 
     window.setTimeout(function() { 
      page.render('colorwheel.png'); 
      phantom.exit(); 
     }, 5000); 
    } 
}); 

我做錯了什麼?

+1

也許不會使用ie6作爲用戶代理? –

+0

@Daniel A. White我嘗試與其他用戶代理,並收到相同的錯誤。 – lolix

+0

@lolix你運行PhantomJS選項來保存cookie嗎? --cookies-file =/path/to/cookies.txt指定存儲持久Cookies的文件名(http://phantomjs.org/api/command-line.html)。 –

回答

0

所有工作正常,測試它。您的問題是,您沒有收到來自沙箱的console.log消息,要做到這一點,您需要使用page.onConsoleMessage回調。

function click(sel){var event=document.createEvent('MouseEvents');event.initMouseEvent('click',1,1,window,1,0,0,0,0,0,0,0,0,0,null);document.querySelector(sel).dispatchEvent(event);} 
var page = require('webpage').create({viewportSize:{width: 1600,height: 900}, 
settings:{userAgent:'Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0', 
javascriptEnabled:'true', 
loadImages:'false' 
}}); 
// https://github.com/dillbyrne/random-agent-spoofer/blob/master/data/json/useragents.json 
page.onConsoleMessage = function (msg, line, source) { 
    console.log('console> ' + msg); 
}; 

page.open("http://facebook.com", function(status) { 
    if (status === "success") { 
     page.evaluate(function(click) { 
       document.querySelector("input[name='email']").value = "<login>"; 
       document.querySelector("input[name='pass']").value = "<pass>"; 
       document.querySelector("#login_form").submit(); 
       console.log("Login submitted!"); 
//   setTimeout(function(){ scrollTo(0,document.body.scrollHeight) },2500);//Scrolling to bottom. 
//click("a[someAttr=someVal]") 
     },click); 
     setTimeout(function() { 
      page.render('test.png'); 
      phantom.exit(); 
     }, 5000); 
    } 
});