Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

PHP - Пишем сканер директорий с cURL

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> PHP - Пишем сканер директорий с cURL
Имя
Сообщение << Старые топики   Новые топики >>
PHP - Пишем сканер директорий с cURL - 2009-04-26 10:44:48.656666   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
Сейчас я покажу как можно написать бысрый сканер директорий с использование cURL (http://ru.wikipedia.org/wiki/CURL)
Эта технология позволяет делать много чего хорошого и в том числе получать ответ от сервера

Итак, ключевой в коде будет сама функция отплавляющая cURL запрос

function server_request($link) //$link -адресс хоста
{
$main = array();
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $link);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Opera/9.64 (Windows NT 5.1; U; ru) Presto/2.1.1');
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_NObоdу, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_NETRC, 1);
curl_setopt ($ch, CURLOPT_TIMEOUT, 10);
ob_start();
curl_exec ($ch);
$stuff = ob_get_contents();
ob_end_clean();
curl_close ($ch);
$parts = split("\n",$stuff,2); // в переменной $stuff нам приходят данные которые мы разбиваем в массив используя регулярное в-ие
$main = split(" ",$parts[0],3); //делаем это еще раз
return $main; // итог $main - массив вида [0] =&gt; HTTP/1.1 [1] =&gt; 301 [2] =&gt; Moved Permanently
}

Теперь переходим к коду который будет нам выдавать в цикле ответ от сервера для разных директорий

$link='localhost'; //хост для скана
$f = file("dir.txt"); // функция file() создает массив где каждый элемент - это строка в файле
$i = count($f); // считаем кол-во элементов/строк
$n=0;
echo("<table>");
while($n < $i) //начинаем цикл
{
$url = "http://".$link."/".$f[$n].""; // $f[$n] - это массив где $n увеличиваеться с каждым проходом цикла на 1, те след строка из файла


$s = server_request($url); //используем вышеопесанную функцию
if ( $s[1] !== '404') //страницы 404 нам не нужны
{
echo
("<tr><td>".$url."</td> <td>".$s[1]."</td><td>".$s[2]."</td></tr>"); // вывод ответа в таблице
}
$n++;
}
echo("</table>");
Post #: 1
RE: PHP - Пишем сканер директорий с cURL - 2009-04-26 11:01:51.663333   
horiz

Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
quote:

$parts = split("\n",$stuff,2); // в переменной $stuff нам приходят данные которые мы разбиваем в массив используя регулярное в-ие

Это же не регулярное выражение, а простой разделитель.


Можно заменить while на for($n=0; $n&lt;count($f); $n++){}. Код будет прозрачней.;)
А еще лучше заменить на foreach($f as $value)


И еще, у тебя есть строчка echo("&lt;/table&gt;");. А где ты открываешь тег </table>?;)
Post #: 2
RE: PHP - Пишем сканер директорий с cURL - 2009-04-26 11:05:03.773333   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
quote:

ob_start();
curl_exec ($ch);
$stuff = ob_get_contents();
ob_end_clean();

есть опция RETURNTRANSFER, заставляет exec не выводить напрямую.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $stuff = curl_exec($ch);
Post #: 3
RE: PHP - Пишем сканер директорий с cURL - 2009-04-26 11:56:02.330000   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
quote:

И еще, у тебя есть строчка echo("&lt;/table&gt;");. А где ты открываешь тег &lt;/table&gt;?

в прикрепл файле все норм
Post #: 4
RE: PHP - Пишем сканер директорий с cURL - 2009-04-26 14:13:03.170000   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
я кажется уже писал тут нечто подобное :) только с поиском по файлам и рекурсией :)
но скрипт интересный..
думаю заюзать у себя :))))
Post #: 5
Страниц:  [1]
Все форумы >> [Веб-программинг] >> PHP - Пишем сканер директорий с cURL







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.