Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Парсер и чекалка проксей! (https://forum.antichat.xyz/showthread.php?t=39371)

DIAgen 02.05.2007 11:12

Парсер и чекалка проксей!
 
Пишу скрипт по парсеру и чекалке проксей, накатал быстро скрипт, только он гад такой работает сильно долго... Если кто-нибудь сможет переделать его и увеличить буду очень блогодарен. Срочно нужно....
PHP код:

<?php

set_time_limit
(0);

$fp fsockopen("proxy.shternov.ru"80$errno$errstr30);
if (
$fp)
{
    
$out "GET / HTTP/1.1\r\n";
    
$out .= "Host: proxy.shternov.ru\r\n";
    
$out .= "Connection: Close\r\n\r\n";

    
fwrite($fp$out);

    
$fgets         =    '';
    
$content     =    '';


    while(!
feof($fp))
    {
        
$content .=    fread($fp,8192);
    }

    
fclose($fp);


    
preg_match_all ("#(bgcolor=\#FFFFFF><td>)(.*?)(<\/td><td>)(.*?)(<\/td><td title=)#si"$content$matche1);

    
$count_proxy count($matche1[2]);

    for (
$i 0$i <= $count_proxy$i++)
    {

        
$fp fsockopen($matche1[2][$i], $matche1[4][$i], $errno$errstr30);

        if (
$fp)
        {

            
$out "GET http://www.ya.ru/ HTTP/1.1\r\n";
            
$out .= "Host: ya.ru\r\n";
            
$out .= "Connection: Close\r\n\r\n";

            
fwrite($fp$out);

            
$fgets         =    '';
            
$content     =    '';


            while(!
feof($fp))
            {
                
$content .=    fread($fp,8192);
            }

            
fclose($fp);
            
preg_match_all ("#(<title>)(.*?)(<\/title>)#si"$content$matche1);

            if(
$matche1['2']['0'] == 'Яndex')
            {
            
            
//    echo "$matche1[2][$i]:$matche1[4][$i]<br>".flush();

                
$file fopen ("proxy/proxy.txt","a+");
                
$str "$matche1[2][$i]:$matche1[4][$i]\n";
                if ( 
$file )
                {
                    
fputs $file$str);
                }
                
fclose ($file);
            }
        }
    }
}
?>


Slon 02.05.2007 11:51

http://forum.aoh.name//index.php?act=ST&f=22&t=121&st=0

Многопоточная чекалка проксей от AOH

Работает как по списку проксей так и по диапозону
Тестировпалась в nix осях. В винде работает немного дольше

KSURi 02.05.2007 12:10

2Slon
Он вообще-то на Perl написан, а там интерфейс для создания потоков есть, в отличие от PHP. Про "переделку в cgi": сотри и подумай, что написал.

2DIAgen
Погугли на тему "пул неблокирующих сокетов"

+toxa+ 02.05.2007 13:12

http://helllabs.net/

DIAgen 02.05.2007 13:25

Цитата:

Сообщение от +toxa+
http://helllabs.net/

Тоха мне надо что бы скрипт лежал на серваке и все сам делал через крон...

blackybr 02.05.2007 15:52

Не советоал бы чекер делать на пхп) скорость не ахти )

DIAgen 03.05.2007 10:26

Цитата:

Сообщение от blackybr
Не советоал бы чекер делать на пхп) скорость не ахти )

По идеи мне скорость не нужна, просто мне нужны живые прокся, и проверка будет идти раз в сутки и все, сейчас буду разбераться, может что-нибудь смого придумать....

nc.STRIEM 03.05.2007 12:41

PHP код:

 $fp fsockopen($matche1[2][$i], $matche1[4][$i], $errno$errstr30); 

Лимит времени поставь меньше, есле прокся мертвая незачем 30 секунд ждать. достаточно 3

PHP код:

while(!feof($fp))
            {
                
$content .=    fread($fp,8192);
            }

 
preg_match_all ("#(<title>)(.*?)(<\/title>)#si"$content$matche1);

            if(
$matche1['2']['0'] == 'Яndex'

а не проще ли проверять номер статуса страницы? 200 OK

и тогда не обязательно всю страницу грузить! достаточно загрузить первую строку.

PHP код:

if(strstr(fgets($fp),'200 OK'))
 ..... 



Время: 19:52