Autor
|
Tema: Pintar respuesta de peticiones simultaneas dinamicamente con curl (Leído 2,807 veces)
|
MetaNoia
|
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:class BruterDirectory extends Bruter { private $directories; private $domain; public function __construct($domain,$list) { parent::__construct($list); $this -> domain = $domain; $this -> directories = array(); } public function doSearch($callback) { $rolling_window = 100; $rolling_window = (count($this -> list) < $rolling_window) ? count($this -> list) : $rolling_window; $std_options = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_MAXREDIRS => 2, CURLOPT_USERAGENT => 'Buenas tardes'); $options = $std_options; for ($i = 0; $i < $rolling_window; $i++) { $options[CURLOPT_URL ] = $this -> list[$i]; } do { while(($execrun = curl_multi_exec($master, $running)) == CURLM_CALL_MULTI_PERFORM ); if($execrun != CURLM_OK) break; { if ($info['http_code'] == 200) { $directorios[] = $info['url']; $i++; } $callback($output, $info); $options[CURLOPT_URL ] = $this -> list[$i++]; } }while ($running); return $directorios; }
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$bruterDir = new BruterDirectory($domains,$urls); $callback = function($data, $info) { print "Hola"; }; echo "<strong style='color:green;'><h1>Seeking dirs </strong></h1><br>"; $dirs = $bruterDir -> doSearch($callback);
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
|
<?php header("Location: TheHackerWay");
|
|
|
engel lex
|
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.phpmi 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
Mensajes: 2.399
Turn off the red ligth
|
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.phpmi 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
|
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
Mensajes: 2.399
Turn off the red ligth
|
en un hosting gratuito... XD No me judges, ya lo hacen ellos XD 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? 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.jspIgual 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
|
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
Mensajes: 2.399
Turn off the red ligth
|
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 Un iframe de chaturbate y un criptominer en el background y a hacer oro blanco.
|
|
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
2 redes simultaneas en un PC
Redes
|
jsuscc
|
5
|
8,329
|
6 Noviembre 2010, 14:58 pm
por jsuscc
|
|
|
rendimiento peticiones/segundo y tiempo de respuesta de...
Desarrollo Web
|
Kase
|
2
|
4,452
|
20 Abril 2011, 08:43 am
por Kase
|
|
|
Hacer cURL en respuesta de cURL para posterior scraping.
PHP
|
goditozor
|
3
|
4,710
|
1 Septiembre 2014, 20:32 pm
por WHK
|
|
|
Curl y diferentes peticiones/conexiones
PHP
|
dimitrix
|
9
|
3,702
|
15 Septiembre 2014, 01:52 am
por dimitrix
|
|
|
Peticiones multiples con cURL
PHP
|
Shell Root
|
1
|
1,669
|
26 Agosto 2015, 22:19 pm
por MinusFour
|
|