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 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?
$cURL->proxy = 'ip:puerto@usuario:contraseña';
También esta la opción de Selenium o si a alguien le gusta python se puede usar requests🙂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
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.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 😈
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 🙂.
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:
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:
Cookies que no necesitamos ya que tenemos el archivo donde se crean.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:
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
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 ?
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!!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]), ''); }