elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Pintar respuesta de peticiones simultaneas dinamicamente con curl
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pintar respuesta de peticiones simultaneas dinamicamente con curl  (Leído 2,832 veces)
MetaNoia

Desconectado Desconectado

Mensajes: 33



Ver Perfil WWW
Pintar respuesta de peticiones simultaneas dinamicamente con curl
« en: 15 Enero 2020, 23:36 pm »

Buenas, tengo un metodo en el que uso curl para comprobar si existen unos directorios dados para un dominio.
Esto funciona bien pero la duda viene al intentar implementar que el programa haga varias peticiones simultaneas y el resultado de estas se vayan mostrando de forma dinámica. Es decir, que si el programa ha encontrado un directorio lo pinte y siga buscando los directorios restantes para que no tenga que acabar para pintarlos todos.
Os dejo el codigo para ilustrarlo mejor.

Clase BruterDirectory:
Código
  1. class BruterDirectory extends Bruter
  2. {
  3.        private $directories;
  4.        private $domain;
  5.  
  6.        public function __construct($domain,$list)
  7.        {
  8.            parent::__construct($list);
  9.            $this -> domain = $domain;
  10.            $this -> directories = array();
  11.        }
  12.  
  13.        public function doSearch($callback)
  14.       {
  15.  
  16.             $directorios = array();
  17.             $rolling_window = 100;
  18.             $rolling_window = (count($this -> list) < $rolling_window) ? count($this -> list) : $rolling_window;
  19.             $master = curl_multi_init();
  20.             $curl_arr = array();
  21.             $std_options = array(CURLOPT_RETURNTRANSFER => true,
  22.             CURLOPT_FOLLOWLOCATION => true,
  23.             CURLOPT_MAXREDIRS => 2,
  24.             CURLOPT_USERAGENT => 'Buenas tardes');
  25.             $options = $std_options;
  26.             for ($i = 0; $i < $rolling_window; $i++)
  27.             {
  28.               $ch = curl_init();
  29.               $options[CURLOPT_URL] = $this -> list[$i];
  30.               curl_setopt_array($ch,$options);
  31.               curl_multi_add_handle($master, $ch);
  32.             }
  33.             do
  34.             {
  35.               while(($execrun = curl_multi_exec($master, $running)) == CURLM_CALL_MULTI_PERFORM);
  36.               if($execrun != CURLM_OK)
  37.                   break;
  38.               while($done = curl_multi_info_read($master))
  39.               {
  40.                   $info = curl_getinfo($done['handle']);
  41.                   if ($info['http_code'] == 200)
  42.                   {
  43.                       $directorios[] = $info['url'];
  44.                       $i++;
  45.                   }
  46.                   $output = curl_multi_getcontent($done['handle']);
  47.                   $callback($output, $info);
  48.                   $ch = curl_init();
  49.                   curl_setopt_array($ch,$options);
  50.                   curl_multi_add_handle($master, $ch);
  51.                   curl_multi_remove_handle($master, $done['handle']);
  52.                   $options[CURLOPT_URL] = $this -> list[$i++];
  53.               }
  54.           }while ($running);
  55.         curl_multi_close($master);
  56.         return $directorios;
  57. }
  58.  
Lo que hace el metodo doSearch es lo comentado antes, dada una lista generada en otro fichero php va comprobando si existe ese directorio o no, si el status code es 200 lo guarda en un array y cuando acaba lo muestra. Hasta ahi funciona pero si os fijais meto una funcion callback para que cuando una de esas peticiones simultaneas finalice me pinte un "Hola" como prueba de concepto pero solo lo ejecuta cuando la funcion doSearch ha finalizado

En este fichero php es donde llamo a ese metodo:
main.php
Código
  1. $bruterDir = new BruterDirectory($domains,$urls);
  2. $callback = function($data, $info)
  3. {
  4.        print "Hola";
  5. };
  6. echo "<strong style='color:green;'><h1>Seeking dirs </strong></h1><br>";
  7. $dirs = $bruterDir -> doSearch($callback);
  8.  

Otra cosa curiosa es que en el main.php el echo de "Seeking dirs" tambien lo pinta despues de la llamada a doSearch y no entiendo muy bien a que se debe.

Cualquier sugerencia es bienvenida o si sabéis de otra forma para hacerlo tambien, saludos.


« Última modificación: 16 Enero 2020, 00:02 am por engel lex » En línea

Código:
<?php
       header("Location: TheHackerWay");
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Pintar respuesta de peticiones simultaneas dinamicamente con curl
« Respuesta #1 en: 16 Enero 2020, 00:07 am »

modifique tus codigos con la etiqueta correcta e codigo de php para que fueran mas facil leer

sinceramente php ni por cerca es el lenguaje mas util para esto, recomendaria, c++, python, .net, incluso jscript u otros...

pero mi recomendacion es que uses threads, que es la librería de procesamiento multi hilo... con el curl multi se puede ser pero para mi percepcion tiende a dar muchos errores y ser dificil de manejar

https://www.php.net/manual/es/class.thread.php

mi recomendacion absoluta es que lo hicieras en js si quieres mantenerte fiel al navegador... aunque te puede dar errores de csrf, si es un codigo para ti, puedes iniciar chrome en modo inseguro o tabien puedes intentar usar jsonp como tipo de retorno, tiene sus dificultades pero sirve...


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: Pintar respuesta de peticiones simultaneas dinamicamente con curl
« Respuesta #2 en: 16 Enero 2020, 00:43 am »

modifique tus codigos con la etiqueta correcta e codigo de php para que fueran mas facil leer

sinceramente php ni por cerca es el lenguaje mas util para esto, recomendaria, c++, python, .net, incluso jscript u otros...

pero mi recomendacion es que uses threads, que es la librería de procesamiento multi hilo... con el curl multi se puede ser pero para mi percepcion tiende a dar muchos errores y ser dificil de manejar

https://www.php.net/manual/es/class.thread.php

mi recomendacion absoluta es que lo hicieras en js si quieres mantenerte fiel al navegador... aunque te puede dar errores de csrf, si es un codigo para ti, puedes iniciar chrome en modo inseguro o tabien puedes intentar usar jsonp como tipo de retorno, tiene sus dificultades pero sirve...
Cómo lo harías en js navegador con cabeceras sin extensiones? Webworkers con xhr? Se puede comparar el rendimiento con curlmultihilo si es orientado a público en general? Teníamos pensado distribuir el proyecto en .ova, exportable a equipos con php, y estar disponible para hostear utilizando cuentas de hosting gratuito UwU. Por eso no está hecho en C++.

En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Pintar respuesta de peticiones simultaneas dinamicamente con curl
« Respuesta #3 en: 16 Enero 2020, 01:05 am »

Citar
Se puede comparar el rendimiento con curlmultihilo si es orientado a público en general?

en un hosting gratuito... XD

si probablemente a demas no usas tu banda, usa la banda del cliente... por lo menos si 10 clientes hacen busquedas al mismo tiempo, cuidado y no te hacen un DDoS XD

cual es la auto limitacion con el hosting gratuito? con 5$ al mes montas un vps que puedes colocar tus scripts de busqueda y usas el hosting gratuito solo como "cara" para el sistema...

con js, ya el jsonp no salta cors, pero tienes sitios como este...
http://cors-anywhere.herokuapp.com/

la velocidad obviamente depende de la red del cliente, pero con una barra de progreso bajas el ansias
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: Pintar respuesta de peticiones simultaneas dinamicamente con curl
« Respuesta #4 en: 16 Enero 2020, 01:53 am »

en un hosting gratuito... XD
No me judges, ya lo hacen ellos XD
Citar
Your site hit 412956 before the system had to suspend your account as it was impacting other free users shared hosting loading.
Es lo que tiene debuggear en producción, que piensas que el script no tira bien... xD

si probablemente a demas no usas tu banda, usa la banda del cliente... por lo menos si 10 clientes hacen busquedas al mismo tiempo, cuidado y no te hacen un DDoS XD
Es un poco show por el tema de cors y no poder editar las peticiones a gusto :S.
O el mismo con 10 instancias jajajaja

cual es la auto limitacion con el hosting gratuito? con 5$ al mes montas un vps que puedes colocar tus scripts de busqueda y usas el hosting gratuito solo como "cara" para el sistema...
Soy español. Lo gratis es irresistible. Si me ofreces una bofetada gratis me cuesta decir que no. Podría pillar un vps, pero soy vago xD Igual para la semana. O para la siguiente. Me recomiendas alguno?

con js, ya el jsonp no salta cors, pero tienes sitios como este... http://cors-anywhere.herokuapp.com/
Probara hace ya algo de tiempo algunos de estos servicios para saltarme cors y obtener un imagen con estego y no lo conseguí. En caso de que funcionen, igual me baja mucho el rendimiento por el tema de tener un proxy para hacer cada request. Igual tienen límites de peticiones. A parte de estar banneados en muchos sitios.

la velocidad obviamente depende de la red del cliente, pero con una barra de progreso bajas el ansias
Si no, le meto un iframe a algún adware de casadas en tu zona y listo. Jajaja

Me flipan los fuente de este tipo de páginas. Están muy bien hechas. A parte siempre tienen algun easter egg!
http://orgasmatron.mobi/warning.jsp

Igual algún día me pongo a hacer páginas por el estilo jajaja
« Última modificación: 16 Enero 2020, 01:56 am por @?0!,5^34 » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Pintar respuesta de peticiones simultaneas dinamicamente con curl
« Respuesta #5 en: 16 Enero 2020, 02:19 am »

Citar
Soy español. Lo gratis es irresistible. Si me ofreces una bofetada gratis me cuesta decir que no. Podría pillar un vps, pero soy vago xD Igual para la semana. O para la siguiente. Me recomiendas alguno?

ovh por excelencia... realmente por precio y calidad es dificil comparar con otros...

si tienes tu propio vps tiras un tinyproxy, le pides que altere las cabeceras y listo, si necesitas mas potencia, un nginx como reverse proxy... con ovh tienes suficiente ancho de banda para soportar X clientes...

tienes iframes de chaturbate XD para que se entretenga XD

En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: Pintar respuesta de peticiones simultaneas dinamicamente con curl
« Respuesta #6 en: 16 Enero 2020, 03:39 am »

ovh por excelencia... realmente por precio y calidad es dificil comparar con otros...

si tienes tu propio vps tiras un tinyproxy, le pides que altere las cabeceras y listo, si necesitas mas potencia, un nginx como reverse proxy... con ovh tienes suficiente ancho de banda para soportar X clientes...

tienes iframes de chaturbate XD para que se entretenga XD
Tienen servicios de todo tipo.
Anda caro el smishing  :laugh:

Un iframe de chaturbate y un criptominer en el background y a hacer oro blanco.  :P
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
2 redes simultaneas en un PC
Redes
jsuscc 5 8,356 Último mensaje 6 Noviembre 2010, 14:58 pm
por jsuscc
rendimiento peticiones/segundo y tiempo de respuesta de...
Desarrollo Web
Kase 2 4,478 Último mensaje 20 Abril 2011, 08:43 am
por Kase
Hacer cURL en respuesta de cURL para posterior scraping.
PHP
goditozor 3 4,723 Último mensaje 1 Septiembre 2014, 20:32 pm
por WHK
Curl y diferentes peticiones/conexiones
PHP
dimitrix 9 3,716 Último mensaje 15 Septiembre 2014, 01:52 am
por dimitrix
Peticiones multiples con cURL
PHP
Shell Root 1 1,677 Último mensaje 26 Agosto 2015, 22:19 pm
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines