Войти в Facebook с phantomjs - 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);

(Вдохновлен этим ответом, но учтите, что я увеличил интервал до 10 с)

Называется так:

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

С выводом (отфильтровывая предупреждения selfxss из Facebook):

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

(Обратите внимание, что вывод html на втором шаге пуст)

Этот ответ предполагает, что существуют проблемы с опциями SSL phantomjs, но они работают с --ssl-protocol=any не имеет никакого эффекта

Это похоже на аналогичную проблему, но для Каспара, а не фантомов (и на Windows, а не Mac) - я пытался использовать --ignore-ssl-errors=yes, но это также не имело никакого эффекта.

Я догадался, что это может быть проблемой перенаправления (и, действительно, когда я повторял это в Chrome, ответ на нажатие кнопки "Отправить" был 302 Found с местоположением https://www.facebook.com/checkpoint/?next), но согласно этой документации я могу установить page.onNavigationRequested обработчик - когда я делаю это в моем скрипте, он не вызывается.

Я думаю, что эта проблема связана, но похоже, что там нет решения.

0 ответов

Другие вопросы по тегам