Como hacer un login a ForoBeta con cURL (PHP)

Hugo7

Ni
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
15 May 2017
Mensajes
3.928
Puede ser para cualquier "archivo" (hasta HTML) y no solo ForoBeta, solo utilizo el foro de ejemplo.

La clase tiene una función llamada "forceDownload" que permite hacer esto, por ejemplo podrías hacer que comience a descargar el HTML de ForoBeta con el nombre forobeta.html

Sería así:
PHP:
<?php
require_once('cURL.php');
$cURL = new cURL('cookies.txt', $_SERVER['HTTP_USER_AGENT']);
$cURL->SETOPT['URL'] = 'https://forobeta.com';
$cURL->forceDownload('forobeta.html');
?>

:)Excelente @zcriptz,

Muchas gracias por tu respuesta...
Además, no me había percatado...
En decirte... ¡Muy bueno el aporte!

En realidad, tengo mucha experiencia con cURL...
Y tecnología similares para rastrear webs...
Pero igual, quería preguntarte sobre el uso...
Que le dabas específicamente en Forobeta.

Por otro lado, leí los comentarios de los chicos...
Y quiero agregar una tecnología más...
Que sirve para loguearse a cualquier web...
Leer el contenido y hasta ejecutar acciones...

Estoy hablando de los "Headless browser"...
O navegadores sin interfaz gráfica...
Como por ejemplo "PhantomJS"...
Que se usa para muchas cosas...

Yo lo usé por ejemplo, para una...
Implementación SEO, en una Gran...
Empresa de Avisos Clasificados.


Pero sirve para entrar a Facebook...
A Forobeta y cualquier otro sitio...
De hecho, ¡No hay sitio que se le resista!

En fin, solo quería dejar ese pequeño aporte...
Para sumar, al que ya mencionó @Andres128

Entonces, contando todas, tenemos...
Al menos tres métodos para loguearse...
Y leer datos de una web:

1. Directamente con PHP (cURL)
2. Con el componente WebBrowser y VB.Net
3. Y con PhantomJS

Y digo al menos, porque hay más...
Pero lo dejo hasta aquí....
:) cambio y fuera!

Saludos,
Hugo
 

zcriptz

1
Ómicron
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
Suscripción a IA
Desde
26 Mar 2013
Mensajes
4.622
:)Excelente @zcriptz,

Muchas gracias por tu respuesta...
Además, no me había percatado...
En decirte... ¡Muy bueno el aporte!

En realidad, tengo mucha experiencia con cURL...
Y tecnología similares para rastrear webs...
Pero igual, quería preguntarte sobre el uso...
Que le dabas específicamente en Forobeta.

Por otro lado, leí los comentarios de los chicos...
Y quiero agregar una tecnología más...
Que sirve para loguearse a cualquier web...
Leer el contenido y hasta ejecutar acciones...

Estoy hablando de los "Headless browser"...
O navegadores sin interfaz gráfica...
Como por ejemplo "PhantomJS"...
Que se usa para muchas cosas...

Yo lo usé por ejemplo, para una...
Implementación SEO, en una Gran...
Empresa de Avisos Clasificados.


Pero sirve para entrar a Facebook...
A Forobeta y cualquier otro sitio...
De hecho, ¡No hay sitio que se le resista!

En fin, solo quería dejar ese pequeño aporte...
Para sumar, al que ya mencionó @Andres128

Entonces, contando todas, tenemos...
Al menos tres métodos para loguearse...
Y leer datos de una web:

1. Directamente con PHP (cURL)
2. Con el componente WebBrowser y VB.Net
3. Y con PhantomJS

Y digo al menos, porque hay más...
Pero lo dejo hasta aquí....
:) cambio y fuera!

Saludos,
Hugo

Actualmente no le doy ningún uso en ForoBeta, lo hice en el momento para el tutorial, o sea solo lo usé de ejemplo.

Muchas gracias por aportar con tu comentario! ;)
 

KAOSNORMAL

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
10 Feb 2011
Mensajes
199
@zcriptz Amigo que tal y dime en este curl por ejemplo para loguear muchos usuarios a X sitio por medio de proxies como puedo cargalos ? o no es posible?
 

zcriptz

1
Ómicron
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
Suscripción a IA
Desde
26 Mar 2013
Mensajes
4.622
@zcriptz Amigo que tal y dime en este curl por ejemplo para loguear muchos usuarios a X sitio por medio de proxies como puedo cargalos ? o no es posible?
Insertar CODE, HTML o PHP:
$cURL->proxy = 'ip:puerto@usuario:contraseña';

Podés setear proxies así con esta clase. ;)
 

seba767

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
26 Ago 2019
Mensajes
38
:)Excelente @zcriptz,

Muchas gracias por tu respuesta...
Además, no me había percatado...
En decirte... ¡Muy bueno el aporte!

En realidad, tengo mucha experiencia con cURL...
Y tecnología similares para rastrear webs...
Pero igual, quería preguntarte sobre el uso...
Que le dabas específicamente en Forobeta.

Por otro lado, leí los comentarios de los chicos...
Y quiero agregar una tecnología más...
Que sirve para loguearse a cualquier web...
Leer el contenido y hasta ejecutar acciones...

Estoy hablando de los "Headless browser"...
O navegadores sin interfaz gráfica...
Como por ejemplo "PhantomJS"...
Que se usa para muchas cosas...

Yo lo usé por ejemplo, para una...
Implementación SEO, en una Gran...
Empresa de Avisos Clasificados.


Pero sirve para entrar a Facebook...
A Forobeta y cualquier otro sitio...
De hecho, ¡No hay sitio que se le resista!

En fin, solo quería dejar ese pequeño aporte...
Para sumar, al que ya mencionó @Andres128

Entonces, contando todas, tenemos...
Al menos tres métodos para loguearse...
Y leer datos de una web:

1. Directamente con PHP (cURL)
2. Con el componente WebBrowser y VB.Net
3. Y con PhantomJS

Y digo al menos, porque hay más...
Pero lo dejo hasta aquí....
:) cambio y fuera!

Saludos,
Hugo
También esta la opción de Selenium o si a alguien le gusta python se puede usar requests
 

Hugo7

Ni
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
15 May 2017
Mensajes
3.928
También esta la opción de Selenium o si a alguien le gusta python se puede usar requests

Sí, buen aporte, si es que sirve para esto...
Yo había escuchado de Selenium, pero nunca lo usé...
Pero escuche a lo chicos de Q.A. (quality assurance)...
Hablar sobre esta herramienta, para probar y asegurarse...
Que el sistema estaba a punto, antes de subir a producción...
De hecho, quería hacer un curso sobre esto, ¡Pero nunca tuve tiempo!

Luego, si tengo tiempo voy a ver algunos videos sobre esto...
Jaja, solo para sacarme la duda (aunque ya no trabajo más para otros)...


Gracias por el aporte,
Saludos,
Hugo
 

seba767

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
26 Ago 2019
Mensajes
38
Sí, buen aporte, si es que sirve para esto...
Yo había escuchado de Selenium, pero nunca lo usé...
Pero escuche a lo chicos de Q.A. (quality assurance)...
Hablar sobre esta herramienta, para probar y asegurarse...
Que el sistema estaba a punto, antes de subir a producción...
De hecho, quería hacer un curso sobre esto, ¡Pero nunca tuve tiempo!

Luego, si tengo tiempo voy a ver algunos videos sobre esto...
Jaja, solo para sacarme la duda (aunque ya no trabajo más para otros)...


Gracias por el aporte,
Saludos,
Hugo
La mecánica si bien es diferente a loguearse usando curl, se puede obtener el mismo resultado, en mi caso uso selenium para un bot que publica en face (me dio miedo lo del contrato para usar la api xD), asi que lo que hago es que se loguea y comparte urls en una pagina que administro.
Y bueno la herramienta como dices originalmente es para eso, automatizar pruebas, pero igual se le pueden sacar otros usos 😈
 

Hugo7

Ni
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
15 May 2017
Mensajes
3.928
La mecánica si bien es diferente a loguearse usando curl, se puede obtener el mismo resultado, en mi caso uso selenium para un bot que publica en face (me dio miedo lo del contrato para usar la api xD), asi que lo que hago es que se loguea y comparte urls en una pagina que administro.
Y bueno la herramienta como dices originalmente es para eso, automatizar pruebas, pero igual se le pueden sacar otros usos 😈

;)Jaja, genial amigo, ¡Tú sí que sabes!
 

emski

Pi
Verificación en dos pasos desactivada
Desde
27 Jul 2012
Mensajes
5.194
Buen aporte, lo malo que si te ponen verificación captcha en el login creo que no hay forma de entrar y si alguien sabe que me diga :).
 

zcriptz

1
Ómicron
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
Suscripción a IA
Desde
26 Mar 2013
Mensajes
4.622
Buen aporte, lo malo que si te ponen verificación captcha en el login creo que no hay forma de entrar y si alguien sabe que me diga :).

Depende que captcha, puedes hacer que alguien más lo llene por ti...

Por ejemplo, si tienes trafico constante en una web, haces que el visitante llene el captcha (que cargaste con cURL) el visitante te envía la respuesta y tu servidor se la envía al servidor del captcha... (Recaptcha se puede)

Digamos que sería algo así como "escritorio remoto" en el momento del captcha, compruebas que esté bien y si es así lo dejas pasar al visitante.
(Sino se lo pides de nuevo, hasta que lo ponga bien)
 

Triztan

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
16 Oct 2019
Mensajes
283
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)

n8GdN3R.png





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)


hVQdABU.png



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"
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í:
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:

f8WdRVm.png



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:



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

quiero que me hagas una web, sabes cuanto me puede costar?
 

Magali Mejia

Programador
No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
Desde
26 Mar 2014
Mensajes
668
Edad
34
excelente, pero una consulta, cual es la finalidad de usar programacion php y una linea de comando ssh que luego lo tienes que pasar por preg_match?

Por qué no hacerlo directamente ? o es parte del curso ?
 

zcriptz

1
Ómicron
Programador
Verificación en dos pasos desactivada
Verificado por Whatsapp
Suscripción a IA
Desde
26 Mar 2013
Mensajes
4.622
excelente, pero una consulta, cual es la finalidad de usar programacion php y una linea de comando ssh que luego lo tienes que pasar por preg_match?

Por qué no hacerlo directamente ? o es parte del curso ?

No es SSH, es solo PHP.

El comando lo "lee" y ejecuta con PHP.

Hazlo normal, sin la clase y seguro veas las ventajas.

Insertar CODE, HTML o PHP:
    function cmd($c){
        preg_match_all('/curl "[^"]+|-H "[^"]+|--[^"]+"[^"]+/', str_replace('^', '', str_replace('\^"', "'", $c)), $cmdInfo);
        $this->SETOPT['POSTFIELDS'] = '';
        foreach($cmdInfo[0] AS $curlInfo)
            !strstr($curlInfo, '--data')
                ?
                    strstr($curlInfo, '-H "')
                        &&
                    ($curlInfo = str_replace('-H "', '', $curlInfo))
                        &&
                    $this->headers[] = $curlInfo
                :
                    $this->SETOPT['POSTFIELDS'] = urldecode(preg_replace('/--[^"]+"/', '', $curlInfo))
        ;

        return $this->browse(str_replace('curl "', '', $cmdInfo[0][0]), '');
    }
 

Magali Mejia

Programador
No recomendado
Verificación en dos pasos desactivada
Verificado por Whatsapp
Desde
26 Mar 2014
Mensajes
668
Edad
34
No es SSH, es solo PHP.

El comando lo "lee" y ejecuta con PHP.

Hazlo normal, sin la clase y seguro veas las ventajas.

Insertar CODE, HTML o PHP:
    function cmd($c){
        preg_match_all('/curl "[^"]+|-H "[^"]+|--[^"]+"[^"]+/', str_replace('^', '', str_replace('\^"', "'", $c)), $cmdInfo);
        $this->SETOPT['POSTFIELDS'] = '';
        foreach($cmdInfo[0] AS $curlInfo)
            !strstr($curlInfo, '--data')
                ?
                    strstr($curlInfo, '-H "')
                        &&
                    ($curlInfo = str_replace('-H "', '', $curlInfo))
                        &&
                    $this->headers[] = $curlInfo
                :
                    $this->SETOPT['POSTFIELDS'] = urldecode(preg_replace('/--[^"]+"/', '', $curlInfo))
        ;

        return $this->browse(str_replace('curl "', '', $cmdInfo[0][0]), '');
    }
ya entendi!! que bonito! me encanto!!
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba