error = $lang['falta_url']; return false; } else { $parse = parse_url($url_tmp); if ($parse['scheme']) { if (strtolower($parse['scheme']) != 'http') { $this->error = sprintf($lang['scheme_no'], $parse['scheme']); return; } else { $this->uri_real = $url_tmp; } } else if (!$parse['scheme']) { $this->uri_real = 'http://'.$url_tmp; } if (strtolower($parse['host']) == 'localhost') { $this->error = 'Sólo se admiten páginas remotas'; return false; } } } // Fin constructor clase /*============================================ Function: fetch the contents of a page ============================================*/ function fetch($URI, $BASE, $OPT){ if (!$this->_connect($URI)) { return false; } if ($BASE == 'base') { // Definir URI y obtener la URI de base define ('URL', $URI); $this->Parse_URI(URL); } if ($OPT == 'arry') { $this->File_array(); } return true; } /*===================================== Function: make a connection =====================================*/ function _connect($uri) { $cookie = '../monitor/admin/control/cookie.txt'; $header = array ( 0 => 'Accept: text/html, text/css, application/xml;q=0.9, application/xhtml+xml, */*;q=0.1', 1 => 'Cache-Control: max-age=0', 2 => 'Connection: keep-alive', 3 => 'Keep-Alive: 300', 4 => 'Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7', 5 => 'Accept-Language: en,es;q=0.9,pt;q=0.8', 6 => 'Pragma: '); $s = curl_init(); curl_setopt($s,CURLOPT_CONNECTTIMEOUT,30); curl_setopt($s,CURLOPT_COOKIEJAR,$cookie); curl_setopt($s,CURLOPT_COOKIEFILE,$cookie); curl_setopt($s,CURLOPT_ENCODING,'gzip,deflate'); curl_setopt($s,CURLOPT_FAILONERROR,true); curl_setopt($s,CURLOPT_FOLLOWLOCATION,true); curl_setopt($s,CURLOPT_HEADER,$optheader); curl_setopt($s,CURLOPT_HTTPHEADER,$header); curl_setopt($s,CURLOPT_MAXREDIRS,5); curl_setopt($s,CURLOPT_NOBODY,false); curl_setopt($s,CURLOPT_REFERER,'http://www.google.com'); curl_setopt($s,CURLOPT_RETURNTRANSFER,true); curl_setopt($s,CURLOPT_TIMEOUT,20); curl_setopt($s,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($s,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1'); $info = array(); $uri = str_replace(array('%2F','%3A','&','%3F','%3D'), array('/',':','&','?','='), $uri); curl_setopt($s,CURLOPT_URL,$uri); $this->results = @curl_exec($s); $info = curl_getinfo($s); $error = curl_error($s); if ($info['http_code'] != 200) { $error = 'HTTP Code '.$info['http_code']; } curl_close($s); if ($error != '') { $this->error = $error; return false; } return true; } /*======================================= Función: Analiza una URI y devuelve $url y $url_base =======================================*/ function Parse_URI($uri) { $parse = parse_url($uri); $url_b = strtolower($parse['scheme'])."://"; $url_b .= $parse['host'] ? $parse['host'] : ''; $url_b .= $parse['port'] ? ':'.$parse['port'] : ''; if (isset($parse['path'])) { if((ereg("\.",$parse['path'])) || ($parse['query']) || ($parse['fragment']) || (substr($uri,-1) != "/")) { $separa = explode("/",$parse['path']); $sacar = array_pop($separa); $parse['path'] = rtrim($parse['path'],$sacar); $url_b .= $parse['path']; } else { $url_b .= $parse['path']; } } if(substr($url_b,-1) != "/") { $url_b .= "/"; } define ('URL_BASE', $url_b); } // Fin función Parse_URI function File_array() { global $tags, $contents; $search = array ( "@(]*>)(.*)()@ismUe", "@(]*>)(.*)()@ismUe", "@@mU" ); $replace = array ( "stripslashes('\\1').stripslashes(htmlspecialchars('\\2')).'\\3'", "stripslashes('\\1').stripslashes(htmlspecialchars('\\2')).'\\3'", "" ); $fp = preg_replace($search,$replace,$this->results); preg_match_all("@(<[^>]+>)([^<]*)@m", $fp, $out, PREG_PATTERN_ORDER); $s_tag = array ("@\n+@", "@\s\s+@", "@\s*=\s*@"); $r_tag = array (" ", " ", "="); for ($i=0; $i < count($out[0]); $i++) { $tag_tmp = preg_replace($s_tag, $r_tag, $out[1][$i]); $tags[$i] = $tag_tmp; $cont_tmp = trim($out[2][$i]); if (!preg_match("@<(style|script)@", $tag_tmp)) { $cont_tmp = preg_replace("@\n+@", "\n", $cont_tmp); } $contents[$i] = trim($cont_tmp); } } } ?>