
21.12.2007, 14:44
|
|
Новичок
Регистрация: 19.12.2007
Сообщений: 29
Провел на форуме: 35267
Репутация:
25
|
|
Кстати возвращаясь к проксям. берем db.php из предидущего архива. Ложим в один каталог с вот этим:
PHP код:
<?php
// тут наши параметры доступа к базам данных
$host = 'Сюда вписываем хост';
$user = 'Тут юзер базы данных'; $password = 'парольчег';
$database = 'Имя базы';
$persistent = false;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Проверщик живости проксей by Master Mushi</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body bgcolor="#eeeeee">
<table width="751" border="0" cellpadding="5" >
<tr>
<td width="741" align="center" bgcolor="#000000"><font style="font-size: 36px; color: #FFFFFF;">Прокси живодерня</font> <font color="#eeeeff">v0.1</font></td>
</tr>
<tr>
<td bgcolor="#EDEFF1" height="400" align="left" valign="top">
<br>Внимание входной формат в файле должен быть XXX.XXX.XXX.XXX:port<br>
<?
error_reporting(E_PARSE); //Каждый охотник желает знать где сидит глюк кроме WARNING MESSAGES
set_time_limit(0); // Вертимся скриптом до бесконечности, пока весь список не выйдет
if (!empty($_GET['infile']))
{
$inf=trim($_GET['infile']); //Если нам прислали файл со списагом то....
echo '<br>Новый список проксей: <b>'.$inf.'</b>';
echo '<br><br>Обновляем базу данных.';
echo '<br>Deleting old records...';
require_once ('db.php'); // Запросим внешний файл с отработчиком БД
$db = new DB($host,$user,$password,$database);
if (!$db->open()) { die ($db->error());};
//Выполняем запрос на очистку старого списка
//-------Если нужно только обновить список то комментим отсюда-----
$sql_qwery="delete from proxies_t"; //убиваем весь список нафиг или по вкусу тут можем просто обновить до новых.
if (!$db->query($sql_qwery))
{ echo '<font color="#770000"><b>Failed</b></font><br>';
die ($db->error());
};
echo '<font color="#007700"><b>OK</b></font><br>' ;
//-------И досюда--------------------------------------------------
echo '<br>Начинаю парсить файл...';
@ $f1=fopen($inf,"r");
$counter=0;
$counteradd=0;
$counterskipp=0;
while (!feof($f1))
{
$counter++;
$s1=fgets($f1); $s1=trim($s1);
$sql_qwery="select * from proxies_t where proxyurl='".$s1."'";
if (!$db->query($sql_qwery))
{
echo '<font color="#770000"><b>Сдохли</b> на записи '.$counter.'</font><br>';
die ($db->error());
};
$matchcounter = $db->numrows();
if(0==$matchcounter)
{
$sql_qwery="insert into proxies_t (proxyurl) values ('".$s1."')";
if (!$db->query($sql_qwery))
{echo '<font color="#770000"><b>Failed</b> at record '.$counter.'</font><br>';
die ($db->error());} else $counteradd++;
} else {$counterskipp++;}
}
echo '<font color="#007700"><b>Сделано</b></font><br> '.$counter.' записей просмотрено<br>';
echo $counteradd.' записей введено в базу<br>';
echo $counterskipp.' лагов пропущено<br>';
fclose($f1);
echo'Закончили упражнение с базой данных.<br>';
}
else echo '<br><b><font color="#770000">Такого файла увы нет</font></b><br>';
echo'<br>Proxycheck started.<br>';
$dbw = new DB($host,$user,$password,$database); //Этот класс у нас будет обновлять рабочие прокся
if (!$dbw->open()) { die ($dbw->error());};
$sql_qwery="select * from proxies_t where note <> 'good'"; //только чистый выбор.
if (!$db->query($sql_qwery)) // А это у нас будет запрос на выборку всех проксей
{echo '<font color="#770000"><b>Failed</b></font><br>'; die ($db->error());};
while($row = $db->fetchassoc())
{
if(0!=strcmp('good', $row['note']))
{ // Мы пропускаем мимо все уже проверенные записи
$proxyarr=explode(":",$row['proxyurl']); //Разделяем проксю на порт и айпи
if ($socket = @fsockopen($proxyarr[0], $proxyarr[1], $errno, $errstr, 30))
{ fclose($socket);
//Если нужен отчет на экран то раскоменчиваем echo строчки по умолчанию система будет работать тихо как партизан
// echo '<font color="007700">Working</font> proxy <b>'.$proxyarr[0].'</b> port <b>'.$proxyarr[1].'</b><br>';
//Если проkся оказался живеньким то дописываем GOOD в ноты к записи его IP
$sql_str = "update proxies_t set note = 'good' where id = {$row['id']}";
if (!$dbw->query($sql_str)){ die ($dbw->error());}
}
//Завершили IF сработал сокет
//else echo '<font color="770000">Dead</font> proxy '.$proxyarr[0].' port '.$proxyarr[1].';
//. Код ошибки <b>'.$errno.'</b>, '.$errstr.'.<br>';
}
} // завершили fetchassoc
$dbw->freeresult(); //Закрываем класс который дописывает номы к записям о хороших проксях
$dbw->close();
echo'Проверка списка завершена.<br>';
/* Если нужно то раскоментируйте вывод в файл.
echo'<br>Выводим в файл (aliveproxies.txt)<br> ';
$ouf='aliveproxies.txt';
@ $tf=fopen($ouf, "w");
$sql_qwery="select * from proxies_t where note = 'good'";
if (!$db->query($sql_qwery)){echo '<font color="#770000"><b>Сдох запрос</b></font><br>'; die ($db->error());}
while($row = $db->fetchassoc())
{ fputs($tf,$row['proxyurl']." \n"); };
fclose($tf);
*/
/* А это закоменчен вывод живых проксей прямо на экран
$sql_qwery="select * from proxies_t where note = 'good'";
if (!$db->query($sql_qwery)){echo '<font color="#770000"><b>Сдох запрос</b></font><br>'; die ($db->error());}
echo '<br>Список рабочих прокси серверов и хостов'ж
while($row = $db->fetchassoc())
{
echo '<br>';
};
*/
$db->freeresult();
$db->close();
echo 'Finished processing.<br><br>';
?>
<br>
<form action="index.php" method="GET">
<table border="0" bgcolor="#E0E8EB" cellpadding="0" cellspacing="1" width="100%">
<tr align="center"><td width="150" bgcolor="#dfdfdf">Proxy list:</td>
<td width="90%" align="left" bgcolor="#dfdfdf"><input name="infile" type="text" size="24" value="" style="width: 200px;"></td>
</tr>
<tr align="center"><td width="150" bgcolor="#dfdfdf"></td>
<td width="90%" align="left" bgcolor="#dfdfdf"><input name="oksubmit" type="submit" maxlength="250" size="24" value=" Start Check " style="width: 200px;"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
Прописываем данные на доступ к базе данных
И получаем сканер живых прокси серверов. Дешево и сердито. И можно тоже гонять кучами потоков с разных удаленных мест.
|
|
|