Задать вопрос
@BestJS

Phantom JS. Как авторизоваться в ВК?

В общем хочу спарсить некоторую инфу с вк.
Не могу пройти авторизацию :)
Пароль ввожу правильный, логин тоже.
Но вк что то не нравится и выбивает ошибку: Скрин
А если проходить авторизацию с главной страницы вк то после отправки формы перенаправляет на пустую страницу браузера about:blank
Помогите пожалуйста
let phantomPrebuilt = require('phantomjs-prebuilt');
let driver = require('promise-phantom');

driver.create({
	path: phantomPrebuilt.path
})
.then(phantom =>
	phantom.createPage()
	.then(page => page)
)
.then(page => {
	let url = "https://vk.com/login";
	page.settings = {
		loadImages: true,
		javascriptEnabled: true,
		userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
	};
	return page.open(url)
		.then(() => page.render("1.png"))
		.then(() => page.evaluate(function(a) {
			d = document;
			d.getElementById("email").value = "+telefon";
			d.getElementById("pass").value = "password";
			d.getElementById("login_button").click();
		}))
		.then(() => page.render("2.png"))
		.then(() => setTimeout(() => page.render("3.png"), 5000))
})
.catch((error) => console.log(error));
  • Вопрос задан
  • 434 просмотра
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@qq1
Настройки для страницы должны передаваться через .set метод:
let phantomPrebuilt = require('phantomjs-prebuilt')
let driver = require('promise-phantom')

driver.create({
  path: phantomPrebuilt.path
})
.then(phantom =>
  phantom.createPage()
  .then(page => page)
)
.then(page => {
  let url = 'https://vk.com/login'
  // создаем объект настроек
  let settings = {
    loadImages: true,
    javascriptEnabled: true,
    userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
  }
  // передаем через .set
  return page.set('settings', settings)
    .then(() => page.open(url))
    .then(() => page.render('1.png'))
    .then(() => page.evaluate(function (a) {
      d = document
      d.getElementById('email').value = ''
      d.getElementById('pass').value = ''
      d.getElementById('login_button').click()
    }))
    .then(() => page.render('2.png'))
    .then(() => setTimeout(() => page.render('3.png'), 5000))
})
.catch((error) => console.log(error))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы