1. PHP / Говнокод #9446

    +147

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    <?php
    
    class Bot {
        public $brouser = 'Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14912/812; U; ru) Presto/2.4.15';
        public $wait_ot = 1;
        public $wait_do = 3;
        public $log_url = "";
        public $sir_e;
        private $ch;
        private $php_sesid;
        private $domen = 'http://rugame.mobi/';
        
        public function __construct($user_agent, $wait_ot, $wait_do, $log_url, $sir_e = 1) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_COOKIESESSION, 0);
            curl_setopt($ch, CURLOPT_VERBOSE, 1);
            curl_setopt($ch, CURLOPT_USERAGENT, $this->brouser);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $this->ch = $ch;
            if(($sir_e != 1) AND ($sir_e != 0)){
                $this->sir_e = $sir_e;
            }
            if($user_agent != ""){
                $this->brouser = $user_agent;
            }
            if(($wait_ot AND $wait_do) != 0){
                $this->wait_ot = $wait_ot;
                $this->wait_do = $wait_do;
            }
            if($log_url != ""){
                $this->login($log_url);
            }else{
                die("Ошибка: в настройках не прописаны ссылка для логина \n");
            }
        }
    
        private function __go($url){
            if($this->php_sesid == 0){
                $url = $this->domen.$url;
                }
                elseif(preg_match_all('#\?(.*)#ismU', $url, $matches) == 0){
                     $url = $this->domen.$url.'?PHPSESSID='.$this->php_sesid;
                } else {
                    $url = $this->domen.$url.'&PHPSESSID='.$this->php_sesid;
                }
            sleep(rand($this->wait_ot, $this->wait_do));
            curl_setopt($this->ch, CURLOPT_URL, $url);
            echo '__go(\' '.$url.' \')<br />';
            return curl_exec($this->ch);
        }
    
        public function login($log_url) {
            do{
                preg_match_all('#PHPSESSID=(.*)"#ismU', $this->__go($log_url), $matches);
            }while($matches[1][0] == 0);
            $this->php_sesid = $matches[1][0];
            $this->__go('mgame/');
            $this->__go('mx/');
        }
        
        public function find_and_execute(){
    
            $actions = array(
                ///////////////////////////////////
                /// Действия в разделе "рудники"///
                ///////////////////////////////////
                'mx/?w_fd=',        // Накормить шахтера
                'mx/?t_md=',        // Заправить технику
                'mx/?s_rs=',        // Добывать сырьё
                'mx/?s_en=',        // Взорвать породу
                'mx/?s_ip=',        // Разведать породу
                'mx/?s_in=',        // Забрать породу
            );
            $data = $this->__go('mx/?gt=1');
            foreach($actions as $act){
                $pattern = str_replace("?", "\?",'#'.$act.'(.*)&PHPSESSID#');
                preg_match_all($pattern, $data, $matches);            
                if($matches[1] != 0){
                    foreach ($matches[1] as $id_rudnik){
                       if($act == 'mx/?s_rs='){                    
                            list($rudnik, $sir_e) = explode("_", $id_rudnik);
                            $this->__go($act.$rudnik."_".$this->sir_e);
                        }else{
                            $this->__go($act.$id_rudnik);
                        }
                    }
                }
            }
        }
    }
    require ('/config/config.php');
    $bot = new Bot($user_agent, $wait_ot, $wait_do, $log_url, $sir_e);
    $bot->find_and_execute();
    unset($bot);//освободим память (спец. для govnokod.ru)
    exit("Я что смог сделал, пока");//пока пока

    Моя первая попытка написать класс бота для он-лайн игрушки... Процедура find_and_execute() убивает самого на повал, так как в ней есть что-то запутанное после объявления массива . Но всё работает так как надо, так что я справился с задачей, и результат этому - ГОВНОКОД =D

    Запостил: __construct, 16 Февраля 2012

    Комментарии (8) RSS

    Добавить комментарий