javascript - 尝试使用 phantom.js 登录 facebook

标签 javascript phantomjs

我正在尝试创建一个脚本来登录我的 Facebook 帐户,但是当我运行脚本时,我收到一条消息,提示 cookie 未启用。 我的 phantom.js 脚本:

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);
   }
});

我做错了什么?

最佳答案

一切正常,测试一下。您的问题是,您没有从沙箱捕获 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);
   }
});

关于javascript - 尝试使用 phantom.js 登录 facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40681462/

相关文章:

javascript - 如何在 NodeJS 中处理单个 ChildProcess 的多个动态创建的监听器?

javascript - 优化$$函数(prototypejs)

javascript - 如何使用phantomjs截取整个页面

python - PhantomJS 随机不退出(使用 Selenium 和 Python)

javascript - 如何包含多个 CasperJS 脚本共有的变量和函数?

JavaScript: '!0' 是 boolean 值 'true' 的简写吗?

javascript - 谷歌地图将结果地理编码为一个数组

javascript - 如何让程序员在 JavaScript 中实现正确的回调?

ruby-on-rails - 在 capybara /Poltergeist中打开新标签页

javascript - 如何为 requirejs 和 qunit 设置 grunt 任务