rusa ppt importancia historia guerra electronica chile javascript authentication login https phantomjs

javascript - ppt - Solucione problemas con el código PhantomJS para iniciar sesión en Instagram



historia de la guerra electronica (1)

Creo que el problema con el inicio de sesión de Instagram es ReactJs. Cuando establece el valor del campo de texto, Reaccionar no cambia de estado. Significa que el inicio de sesión y el envío de contraseñas están vacíos cuando envía el formulario.

No lo intenté, pero creo que debes completar las entradas de texto con el evento de pulsación de tecla, porque el componente interno (Reaccionar) indica que solo cambia cuando las entradas cambian de texto. Establecer el valor en su camino no activará el evento de change .

Escribí este script PhantomJS para automatizar el inicio de sesión en Instagram. Puede completar con éxito los campos del formulario y presionar el botón Enviar, pero siempre se redirige a la pantalla de inicio de sesión con el siguiente mensaje:

Su usuario o contraseña fueron incorrectos.

Estoy 100% seguro de que las credenciales son correctas, y lo intenté con varias cuentas de Instagram.

Estoy ejecutando el script en una Mac desde la terminal:

$ phantomjs --ssl-protocol=any --cookies-file=cookies.txt script.js username password

Tenga en cuenta el --ssl-protocol=any opción. Sin él, PhantomJS ni siquiera puede abrir la página de inicio de sesión debido a HTTPS. Ver esta pregunta

Aquí está el código. Lo basé en este tutorial y actualicé el código para dar cuenta de los cambios recientes en el código fuente de la página de inicio de sesión de Instagram.

var system = require(''system''); var username = system.args[1]; var password = system.args[2]; var page = require(''webpage'').create(); page.open(''https://instagram.com/accounts/login/'', function (status) { if (status === "success") { page.evaluate(function (uid, pwd) { var username_field = document.getElementById(''lfFieldInputUsername''); username_field.value = uid; var password_field = document.getElementById(''lfFieldInputPassword''); password_field.value = pwd; }, username, password); var point = page.evaluate(function () { var element = document.getElementsByTagName(''button'')[0]; var rect = element.getBoundingClientRect(); return { x: rect.left + Math.floor(rect.width / 2), y: rect.top + Math.floor(rect.height / 2) }; }); page.render(''before-submit.png''); page.sendEvent(''click'', point.x, point.y); } setTimeout(function () { var error = page.evaluate(function () { var element = document.getElementById(''errorAlert''); var error_message = false; if (element !== null) { error_message = element.innerText.trim(); } return error_message; }); page.render(''after-submit.png''); if (!error) { console.log(''Login Successful: '' + page.url); } else { console.log(''Login Failed: '' + error); } phantom.exit(0); }, 5000); } );

Y esto es lo que he intentado hasta ahora:

  1. Estableciendo cookies. Además de agregar la opción de línea de comandos --cookies-file=cookies.txt , también probé phantom.addCookie en el código. No pareció hacer ninguna diferencia.
  2. Enviando explícitamente encabezados de autenticación. Ver esta pregunta
  3. Cambiar la zona horaria No estoy seguro si esto tiene sentido. Ver esta pregunta

Aparentemente PhantomJS tiene algunos problemas con SSL. ¿Debo dejar de usarlo para este propósito?