Muy buenas, he conseguido mediante la librería de curl en php pintar los directorios encontrados dado un dominio de forma dinámica mediante el buffer de php, ya que sino lo haces así tienes que esperar a que se procesen todas las peticiones para que te pinte los resultados.
El código que muestro a continuación funciona a la perfección pero lo he estado intentando pasar a programación POO y no los pinta de forma dinámica, ¿alguien sabe a que se debe?
Buffer php => https://www.php.net/manual/en/function.ob-start.php (https://www.php.net/manual/en/function.ob-start.php)
Código en programacion estructurada como prueba de concepto<?php
$directorios = explode("\n" , $lista);
foreach($directorios as $dir)
$list[] = trim("http://www.google.com/".$dir);
echo "<pre>";
echo "Loading ...";
$rolling_window = 100;
$rolling_window = (count($list) < $rolling_window) ?
count($list) : $rolling_window; (
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_USERAGENT => 'DHunter');
$options = $std_options;
for ($i = 0; $i < $rolling_window; $i++)
{
$options[CURLOPT_URL] = $list[$i];
}
$i = 0;
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++;
echo $info['url']."<br>";
}
$options[CURLOPT_URL] = $list[$i++];
}
}while ($running);
echo "<br>Done";
function progress()
{
}
Esta es la version de POO que no pinta los resultados de forma dinamica:
Clase BruterDirectory<?php
class BruterDirectory extends Bruter
{
private $directories;
private $domain;
public $handle;
public function __construct($domain,$list)
{
parent::__construct($list);
$this -> domain = $domain;
$this -> directories = array(); }
public function doSearch()
{
echo "<pre>";
echo "Loading ...";
$rolling_window = 100;
$rolling_window = (count($this -> list) < $rolling_window) ?
count($this -> list) : $rolling_window; (
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
//CURLOPT_MAXREDIRS => 2,
CURLOPT_USERAGENT => 'Mozilla/5.0 (X11; Windows; Windows10_64bits; rv:72.0) Gecko/20100101 Firefox/72.0');
$options = $std_options;
for ($i = 0; $i < $rolling_window; $i++)
{
$options[CURLOPT_URL
] = $this -> list[$i]; }
$i = 0;
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++;
echo $info['http_code']."<br>";
}
$options[CURLOPT_URL
] = $this -> list[$i++]; }
}while ($running);
echo "<br>Done";
return $directorios;
}
public function progress()
{
}
Y la llamada al metodo "doSearch" en el fichero
main.php$domain="http://www.google.com";
$directorios = explode("\n" , $list); foreach($directorios as $dir)
$urls[] = trim($domain.$dir); $bruterDir = new BruterDirectory($domain,$urls);
dirs = $bruterDir -> doSearch();
Cualquier sugerencia es bienvenida.