Реклама на сайте Advertise with us

Скрипт чекер прокси

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 30.10.04
Сообщения: 19
Рейтинг: 3

Ссылка на сообщениеДобавлено: 04/08/06 в 06:50       Ответить с цитатойцитата 

Есть скрипт проверки проксей, но он как то некорректно работает.
Код:

<?php

        class DaemonProxy extends Daemon
        {

                   var $spider = null;
                 
                   var $sources = array(
                        array('http://www.proxy4you.com/page(#).html', 1, 5, 1),
                        array('http://www.publicproxy.com/page(#).html', 1, 5, 1)
                );
                var $cache_file = "tmp/proxy_alive.txt";

                   function DaemonProxy()
                   {
                              parent::Daemon('daemon_proxy', ROOT_DIR);
                   }

                   function do_task()
                   {

                    while(true)
                    {
                        if (filemtime($this->cache_file) < time() - 60*60*3)
                        {
                                $proxyarray1 = array();
                                $proxyarray2 = file($this->cache_file);
                                foreach ($this->sources as $key => $row)
                                {
                                        $contents = $this->getPage($row[0], $row[1], $row[2], $row[3]);
                                        $pattern = '/<td[^>]*>([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})<\/td>\s*<td[^>]*>([0-9]*)<\/td>\s*<td>(anonymous|high anonymity)<\/td>/i';
                                        preg_match_all ($pattern, $contents, $proxyarray1, PREG_SET_ORDER);

                                        foreach ($proxyarray1 as $row)
                                        {
                                                $proxyarray2[] = $row[1].":".$row[2];
                                        }
                                }
                                $proxyarray2 = array_unique($proxyarray2);

                                $this->write_log("vsego naideno ".count($proxyarray2)." neproverennix proxei");

                                $proxyarray1 = array();
                                foreach ($proxyarray2 as $proxy)
                                {
                                        $proxy = trim($proxy);
                                        if ($this->check_proxy($proxy))
                                        {
                                                echo "$proxy - alive<br>";
                                                $proxyarray1[] = $proxy;
                                                $this->check_command();
                                        }
                                        else echo "$proxy - dead<br>";
                                        flush();
                                }

                                $this->write_log("za seans naideno ".count($proxyarray1)." zhivih anonimnih proxei");
                                fwrite(fopen($this->cache_file, 'w'), implode("\n", $proxyarray));

                        }
                        else echo "see cache";

                        $this->mysleep(600);
                    }
                }

                function getPage($url, $start=0, $end=0, $step=1)
                {
                        for ($i = $start; $i <= $end; $i += $step)
                        {
                                $contents .= file_get_contents(str_replace('(#)', $i, $url));
                        }
                        return $contents;
                }

                function check_proxy($proxy)
                {
                        $real_ip = $_SERVER["SERVER_ADDR"];
                        $post_url= conf('home_dir')."/post.php";

                        $spider = new Spider();
                        $spider->timeout = 5;
                        $spider->proxy = $proxy;

                        if ($spider->fetch($post_url, "ip=$real_ip", "POST"))
                        {
                                if (stristr($spider->result, "ANONYMOUS"))
                                {
                                        return true;
                                }
                        }
                        return false;
                }

        }//class

?>

этот скрипт содержит в себе вызов другого скрипта, который определяет анонимная ли прокся, вот этот второй скрипт:
Код:

<?php

        if (isset($_POST["ip"]))
        {
                $real_ip = $_POST["ip"];
                $remote_ip = $_SERVER["REMOTE_ADDR"];
                $remote_forward = $_SERVER["HTTP_X_FORWARDED_FOR"];

                if($remote_ip == $real_ip or $remote_forward == $real_ip)
                {
                        echo "TRANSPARENT";
                }
                else
                {
                        echo "ANONYMOUS";
                }
        }
        else
        {
                echo "DIED";
        }

?>


Огромная просьба, если видите какой то косяк из за чего это может быть, скажите мне. icon_smile.gif

0
 

programmer

С нами с 08.12.02
Сообщения: 7615
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 04/08/06 в 12:04       Ответить с цитатойцитата 

а где класс
оно на класс ругается

крипта на ByBit

3
 



С нами с 01.10.03
Сообщения: 751
Рейтинг: 318

Ссылка на сообщениеДобавлено: 04/08/06 в 22:35       Ответить с цитатойцитата 

ага
Код:
class DaemonProxy extends Daemon

класс является расширением класса Daemon (а его то и нету)

Лучший Хостинг для CJ сайтов!

3
 



С нами с 30.10.04
Сообщения: 19
Рейтинг: 3

Ссылка на сообщениеДобавлено: 06/08/06 в 10:32       Ответить с цитатойцитата 

а вот и класс этот:
Код:

<?php
        class Daemon
        {
                   var $name = 'daemon';
                 var $home = '.';
                   var $log_file = '';
                   var $run_file = '';
                   var $time_start = 0;

                var $handle = null;

                   function Daemon($name='daemon', $home='.')
                   {
                        $this->name = $name;
                        $this->home = $home;
                        $this->log_file = $home ."/tmp/$name.log";
                        $this->run_file = $home ."/tmp/$name.run";

                        set_time_limit(0);
                              ignore_user_abort(true);
                              ob_implicit_flush();
                   }

                   //zapusk demona
                   function start()
                   {
                              if (!$this->is_running())
                        {
                                register_shutdown_function(array(&$this, 'shutdown_function'));

                                //lo4im file
                                $this->handle = fopen($this->log_file, "a+");
                                flock($this->handle, LOCK_EX|LOCK_NB);

                                $this->write_log('Zapusk Demona');
                                $this->write_status('running');

                                $this->do_task();
                        }
                        else
                        {
                                //logging("Process ".$this->name." uzhe zapus4en");
                        }

                              return true;
                   }

                //demon stop
                   function stop()
                   {
                              $this->write_log('Demon Stop');
                              $this->write_status('stopping');
                              die();
                   }

                //Restart Demona
                function restart()
                   {
                              $this->shutdown_function();
                   }

                   //Osnovnaia zada4a
                   function do_task()
                   {
                          // override this method
                   }

                //zaver6enie raboti
                function finish_task()
                {
                        // override this method
                }

                   function shutdown_function()
                   {
                              $this->finish_task();
                              fclose($this->handle);

                              $status = $this->read_status();
                        if ($status == 'running')
                              {
                                sleep(3);
                                logging("Perezagruzka processa ".$this->name);
                                      run_daemon($this->name);
                              }
                   }

                //demon zapus4en?
                function is_running()
                   {
                              if (file_exists($this->log_file))
                              {
                                      $fp = fopen($this->log_file, "r+");

                                if (!flock($fp, LOCK_EX|LOCK_NB))
                                {
                                            return true;
                                }
                              }

                              return false;
                   }

                   //proverka nali4ia komandi
                   function check_command()
                   {
                           $status = $this->read_status();

                        switch ($status)
                        {
                                case "stop":
                                           $this->write_log('Polu4en signal ostanovki');
                                         $this->stop();
                                           break;

                                case "restart":
                                           $this->write_log('Polu4en signal restarta');
                                         $this->restart();
                                           break;

                                case "change":
                                           $this->write_log('Polu4en signal izmenenia nastroek');
                                         $this->restart();
                                           break;
                        }

                              echo "don`t kill me<br>";
                              return true;
                   }

                   //4tenie statusa
                   function read_status()
                   {
                           //blokiruem fail i 4itaem
                              if (file_exists($this->run_file))
                              {
                                      $f = fopen($this->run_file, "r");
                                flock($f, 2);
                                $content = file_get_contents($this->run_file);
                                fclose($f);
                        }

                        return trim($content);
                   }

                   //zapis statusa
                   function write_status($content)
                   {
                           //blokiruem fail i pishem
                           $f = fopen($this->run_file, "w");
                           flock($f, 2);
                           fputs($f, $content);
                           fflush($f);
                           fclose($f);
                   }

                   //zapis loga
                   function write_log($msg)
                   {
                           if (filesize($this->log_file) > 1000000) ftruncate($this->handle, 0);
                         fwrite($this->handle, "[".date("Y/m/d H:i:s")."] $msg\n");
                   }

                   function mysleep($seconds)
                   {
                           $i=0;
                        while ($i < $seconds)
                        {
                                sleep(5);
                                $this->check_command();
                                $i = $i+5;
                        }
                   }

        } //class Daemon
?>

где то в самой организации чека косячок можт?

0
 

programmer

С нами с 08.12.02
Сообщения: 7615
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 06/08/06 в 12:47       Ответить с цитатойцитата 

зайди на урлы что в самом верху кода - для чекинга - они умерли имхо

крипта на ByBit

3
 



С нами с 30.10.04
Сообщения: 19
Рейтинг: 3

Ссылка на сообщениеДобавлено: 06/08/06 в 16:13       Ответить с цитатойцитата 

да нет же, дело не в урлах, если урлы рабочие, то и сбор прокси происходит нормально, вот чекает их непонятно как

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »