使用phantomjs登录Facebook - 302问题?

时间:2015-04-30 21:27:42

标签: redirect phantomjs http-status-code-302

我试图编写一个phantomjs脚本登录我的Facebook帐户并截取屏幕截图。

这是我的代码:

var page = require('webpage').create();
var system = require('system');
var stepIndex = 0;
var loadInProgress = false;

email = system.args[1];
password = system.args[2];

page.onLoadStarted = function() {
  loadInProgress = true;
  console.log("load started");
};

page.onLoadFinished = function() {
  loadInProgress = false;
  console.log("load finished");
};

var steps = [
  function() {
    page.open("http://www.facebook.com/login.php", function(status) {
      page.evaluate(function(email, password) {
            document.querySelector("input[name='email']").value = email;
            document.querySelector("input[name='pass']").value = password;

            document.querySelector("#login_form").submit();

            console.log("Login submitted!");
      }, email, password);
      page.render('output.png');
    });
  },
  function() {
    console.log(document.documentElement.innerHTML);
  },
  function() {
    phantom.exit();
  }
]

setInterval(function() {
  if (!loadInProgress && typeof steps[stepIndex] == "function") {
    console.log("step " + (stepIndex + 1));
    steps[stepIndex]();
    stepIndex++;
  }
  if (typeof steps[stepIndex] != "function") {
    console.log("test complete!");
    phantom.exit();
  }
}, 10000);

(灵感来自this answer,但请注意我已将间隔提升至10秒)

这样称呼:

./phantomjs test.js <email> <password>

使用输出(过滤掉Facebook的selfxss警告):

step 1
load started
load finished
Login submitted!
load started
load finished
step 2
<head></head><body></body>
step 3
test
complete!

(请注意,第二步中的html输出为空)

This answer表明幻影有问题&#39; SSL选项,但使用--ssl-protocol=any运行无效。

This似乎是一个类似的问题,但对于caspar,而不是phantomjs(以及Windows,而不是Mac) - 我尝试使用--ignore-ssl-errors=yes,但这也没有效果。

我猜这可能是一个重定向问题(事实上,当我在Chrome上复制此问题时,点击&#34;提交&#34;的回复是位于302 Found的{​​{1}} ),但根据this文档,我可以设置一个https://www.facebook.com/checkpoint/?next处理程序 - 当我在我的脚本中这样做时,它不会被调用。

认为 this问题是相关的,但看起来好像没有解决问题。

0 个答案:

没有答案