
zcriptz
1
Ómicron
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
Este tutorial lo hago basado en la clase que hice para utilizar cURL con PHP y el navegador Google Chrome. (Pueden utilizarse otros)
Primero abrimos el navegador, entramos a la web que queremos hacer el login, en el caso de esta demostración lo haré con ForoBeta, y colocamos los datos del login. (Sin loguear)
Una vez ya listo logueamos y registraremos en network nuestra petición. (Probablemente sea la primera)
Le damos Segundo click->Copy->Copy as cURL (cmd)
Si vemos lo copiado es lo siguiente:
Borramos las siguientes cabeceras:
Cookies que no necesitamos ya que tenemos el archivo donde se crean.
Para que no nos devuelva el código codificado, sino van a tener que decodificarlo.
Vamos a setear el navegador en la clase..
Quedando así:
Y si observamos en los datos enviados, hay un token llamado _xfToken, el cual tenemos que buscar en el código de fuente:
Entonces en resumen, para simular el logueo tenemos que entrar a ForoBeta y tomar el token para poder enviarlo en los datos del formulario.
Para tomar el token uso preg_match
Estoy tomando lo que está luego de:
Los paréntesis son para especificar que quiero lo que hay ahí. (Se guardará en el indice 1, en el indice 0 estará todo el "pattern")
[^"]+ Todo menos ", al llegar a las comillas dobles deja de tomar.
"Traduciéndolo" sería:
El código quedaría así:
Si lo testean, devolverá el index de ForoBeta estando logueado en la cuenta que se colocó.
Utilicé el código CMD que me dio el navegador de la siguiente forma:
Y recuerden que el resultado queda guardo en $cURL->result
(cmd tiene un "return $this", así que puede hacerse $cURL->cmd(codigo)->result)
Espero que les sirva, y se entienda, ya que lo hice rápido! jeje
Primero abrimos el navegador, entramos a la web que queremos hacer el login, en el caso de esta demostración lo haré con ForoBeta, y colocamos los datos del login. (Sin loguear)

Una vez ya listo logueamos y registraremos en network nuestra petición. (Probablemente sea la primera)
Le damos Segundo click->Copy->Copy as cURL (cmd)

Si vemos lo copiado es lo siguiente:
Insertar CODE, HTML o PHP:
curl "https://forobeta.com/login/login" -H "authority: forobeta.com" -H "pragma: no-cache" -H "cache-control: no-cache" -H "origin: https://forobeta.com" -H "upgrade-insecure-requests: 1" -H "content-type: application/x-www-form-urlencoded" -H "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3" -H "referer: https://forobeta.com/login/" -H "accept-encoding: gzip, deflate, br" -H "accept-language: es-ES,es;q=0.9" -H "cookie: xf_csrf=QODPP15lZSAY8YLp; _ga=GA1.2.341060090.1564710086; _gid=GA1.2.1187391859.1564710086; _gat_gtag_UA_2125042_35=1" --data "login=zcriptz^&password=ajRBX217iq^%^21^%^23^&remember=1^&_xfRedirect=^%^2F^&_xfToken=1564710088^%^2Cbfc424be0480c3efed41702333e15ca3" --compressed
Borramos las siguientes cabeceras:
Insertar CODE, HTML o PHP:
-H "cookie: DATOS"
-H "accept-encoding: gzip, deflate, br"
-H "user-agent: DATOS"
Para que no nos devuelva el código codificado, sino van a tener que decodificarlo.
Vamos a setear el navegador en la clase..
Quedando así:
Insertar CODE, HTML o PHP:
curl "https://forobeta.com/login/login" -H "authority: forobeta.com" -H "pragma: no-cache" -H "cache-control: no-cache" -H "origin: https://forobeta.com" -H "upgrade-insecure-requests: 1" -H "content-type: application/x-www-form-urlencoded" -H "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3" -H "referer: https://forobeta.com/login/" -H "accept-language: es-ES,es;q=0.9" --data "login=zcriptz^&password=ajRBX217iq^%^21^%^23^&remember=1^&_xfRedirect=^%^2F^&_xfToken=1564710088^%^2Cbfc424be0480c3efed41702333e15ca3" --compressed
Y si observamos en los datos enviados, hay un token llamado _xfToken, el cual tenemos que buscar en el código de fuente:

Entonces en resumen, para simular el logueo tenemos que entrar a ForoBeta y tomar el token para poder enviarlo en los datos del formulario.
Para tomar el token uso preg_match
Insertar CODE, HTML o PHP:
preg_match('/name="_xfToken" value="([^"]+)/i', $cURL->result, $token);
Estoy tomando lo que está luego de:
Insertar CODE, HTML o PHP:
name="_xfToken" value="
Los paréntesis son para especificar que quiero lo que hay ahí. (Se guardará en el indice 1, en el indice 0 estará todo el "pattern")
[^"]+ Todo menos ", al llegar a las comillas dobles deja de tomar.
"Traduciéndolo" sería:
Tomar todo lo que está luego de name="_xfToken" value=" hasta "
El código quedaría así:
PHP:
<?php
require_once('cURL.php');
$cURL = new cURL('cookies.txt', $_SERVER['HTTP_USER_AGENT']);
$cURL->browse('https://forobeta.com/login/', 'https://www.google.com');
preg_match('/name="_xfToken" value="([^"]+)/i', $cURL->result, $token);
echo $cURL->cmd('curl "https://forobeta.com/login/login" -H "authority: forobeta.com" -H "pragma: no-cache" -H "cache-control: no-cache" -H "origin: https://forobeta.com" -H "upgrade-insecure-requests: 1" -H "content-type: application/x-www-form-urlencoded" -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3" -H "referer: https://forobeta.com/login/" -H "accept-language: es-ES,es;q=0.9" --data "login=zcriptz^&password=ajRBX217iq^&remember=1^&_xfRedirect=^%^2F^&_xfToken='.urlencode($token[1]).'" --compressed')->result;
?>
Si lo testean, devolverá el index de ForoBeta estando logueado en la cuenta que se colocó.
Utilicé el código CMD que me dio el navegador de la siguiente forma:
PHP:
$cURL->cmd('aqui el código');
Y recuerden que el resultado queda guardo en $cURL->result
(cmd tiene un "return $this", así que puede hacerse $cURL->cmd(codigo)->result)
Espero que les sirva, y se entienda, ya que lo hice rápido! jeje
Última edición: