Página 1 de 1

Inicio de sesión automático en sitios web -

Publicado: Mié, 22 Mar 2017, 15:46
por sitekiosk.es
En caso de querer iniciar sesión automáticamente en un sitio web con un usuario específico, no podemos utilizar cookies para esto, dado que es preciso borrarlas de formar regular por razones de seguridad. Puede utilizar el SiteKiosk Object model para automatizar esta tarea. El SiteKiosk Object model le permite editar el Document Object Model (DOM) de la página, para rellenar automáticamente la información requerida para el inicio y sesión (usuario y contraseña).

El ejemplo utilizará el sitio web del servidor SiteRemote http://www.siteremote.es" onclick="window.open(this.href);return false; para explicar el inicio de sesión automatizado.

Imagen

A menos que esté familiarizado con el código de la página que quiere utilizar (por ejemplo si es un sitio web desarrollado por su equipo técnico), podrá utilizar las herramientas de desarrollo de cualquier navegador moderno (ej. Chrome, Firefox o Internet Explorer IE) para ver el código de la página web y encontrar los campos para el usuario, contraseña y la forma en la que se procesa esa información.

En nuestro ejemplo, utilizando las herramientas para el desarrollador en la página de inicio de sesión de SiteRemote(https://www.siteremote.es/pub/login.aspx" onclick="window.open(this.href);return false;) nos muestra que el identificador del campo usuario es UserNameEdt, y el de la contraseña PasswordEdt. Existen distintos métodos mediante los que se puede codificar un inicio de sesión en una página web, en este caso tenemos una etiqueta div con el id LoginBtn2 y una llamada callback, de forma que simplemente utilizaremos el método click de Javascript para simular un clic dentro de la etiqueta div. Si su página web utiliza un elemento de formulario, entonces podrá utilizar normalmente el método submit para el formulario en lugar el método click que utilizamos en este ejemplo.

Ahora que tenemos la información necesaria acerca de los elementos DOM de la página en la que queremos iniciar sesión, podemos crear nuestro script.

//Flag para evitar varios intentos de sesión, puede restaurar el valor utilizando un evento como OnScreenSaverBegin
var loginattempt = false;

//Message event used to detect navigation to login page
SiteKiosk.Logfile.OnMessage = OnMessage;
function OnMessage(seq, time, utcoff, awtype, awlevel, facility, text)
{
//Comprobamos los archivos de anotaciones (log) de SiteKiosk para comprobar que se ha llamado la página de inicio de sesión y entonces llamamos a la función que intenta el inicio de sesión automático
if(text.indexOf("Navigation:") !== -1
&& text.indexOf("www.siteremote.es") !== -1
&& loginattempt === false){
//Delays the automatic login to give the page time to load
evtid = SiteKiosk.Scheduler.AddDelayedEvent(1500, AutomaticLogin);
loginattempt = true;
}
}

function AutomaticLogin()
{
//Revisar las ventanas abiertas para encontrar la ventana de navegador con la página de inicio de sesión
for (var i=1;i<=SiteKiosk.WindowList.Windows.Count;i++)
{
try
{
//Nos aseguramos que la ventana es del navegador de SiteKiosk y que muestra la página de inicio de sesión
if((SiteKiosk.WindowList.Windows(i).WindowType === 1 || SiteKiosk.WindowList.Windows(i).WindowType === 2)
&& SiteKiosk.WindowList.Windows(i).SiteKioskWindow.SiteKioskWebBrowser.WebBrowser.LocationURL.indexOf("https://www.siteremote.es/pub/login.aspx") !== -1)
{
SiteKiosk.WindowList.Windows(i).SiteKioskWindow.SiteKioskWebBrowser.WebBrowser.Document.getElementById('UserNameEdt').value = "username";
SiteKiosk.WindowList.Windows(i).SiteKioskWindow.SiteKioskWebBrowser.WebBrowser.Document.getElementById('PasswordEdt').value = "password";
SiteKiosk.WindowList.Windows(i).SiteKioskWindow.SiteKioskWebBrowser.WebBrowser.Document.getElementById('LoginBtn2').click();
}
}
catch(e)
{
//Debug
SiteKiosk.Logfile.Notification("El inicio de sesión automático no se realizó correctamente en la ventana: " + SiteKiosk.WindowList.Windows(i).ItemText);
}
}
}


El script utiliza una variable (loginattempt) como punto para evitar más de un intento de inicio de sesión. Puede utilizar el event del SiteKiosk Object Model event como OnScreenSaverBegin o OnSessionEnd para reestablecer el puntero y permitir nuevos intentos de inicio de sesión.

El evento OnMessage ayuda a detectar que la página de inicio de sesión se ha visitado desde el navegador de SiteKiosk. Utilizando el método AddDelayedEvent para dar a la página un tiempo determinado para cargar, llamamos a la función AutomaticLogin del script para comenzar el proceso de autenticacion.

Dentro de la función AutomaticLogin utilizamos la propiedad Count de del objeto WindowList de la colección Windows para identificar todas las ventanas abiertas en el navegador de SiteKiosk (mediante la propiedad WindowType 1 o 2) para encontrar la página que muestra el inicio de sesión: https://www.siteremote.es/pub/login.aspx" onclick="window.open(this.href);return false;.
Finalmente utilizamos el DOM de la página y completamos los campos de usuario y contraseña requeridos, tras lo cual simulamos un clic en el botón de inicio de sesión.

Guarde el ejemplo de arriba como un archivo tipo .js en la carpeta ..\SiteKiosk\html. Abra la configuracion, y vaya a Página de Inicio y Navegador, seleccione el motor Internet Explorer y utilice por el ejemplo el skin: Metro IE Skin. En la misma página de configuración haga clic en el botón "Avanzado" y añada el archivo .js que ha creado como un script externo.

Inicie el navegador SiteKiosk y vaya a https://www.siteremote.es" onclick="window.open(this.href);return false;. Se lanzará el intento de inicio de sesión desde el script. Si ha proporcionado las credenciales correctas de usuario y contraseña, iniciará automáticamente sesión en su Grupo de Trabajo de SiteRemote; en caso contrario recibirá un mensaje de error advirtiendo que los datos de inicio de sesión no son correctos.

Lógicamente el código para identificar la URL y el código para editar el DOM de una página determinada variará dependiendo de la URL y código de inicio de sesión que necesite utilizar. Por favor, realice los cambios en estas partes del código de forma conveniente.