Научите правильно писать грабберы! Скоко непытался, неробаит! Пишу код Code: <?php $file = file ("http://site.ru?$QUERY_STRING"); $file = implode ("",$file); $file = str_replace('То, что требуется заменить','То, на что надо заменить',$file); //вырезаю разную рекламу echo $f; ?> Страница открывается, но дальше никуда немогу перейти! (url was not found) Как вы пишете грабы?
http://www.google.ru/search?q=%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5+%D0%B3%D1%80%D0%B0%D0%B1%D0%B1%D0%B5%D1%80%D0%BE%D0%B2+%D0%BD%D0%B0+php&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:rufficial&client=firefox-a
PHP: <?php $accept = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif,image/x-bitmap, */*;q=0.1\r\n"; $accept_language = "Accept-Language: ru, en;q=0.9\r\n"; $accept_charset = "Accept-Charset: utf-8;q=0.6 windows-1251;q=0.1 *;q=0.1\r\n"; $referer = "Referer: http://хост/страница.php\r\n"; //подумай что писать дабы не палить себя $conection = "Connection: Close\r\n"; $host= "хост"; //в виде site.ru $path="/страница.php?".$_SERVER['QUERY_STRING']; $fp=fsockopen($host,80,$errno, $errstr,10); if(!$fp) { echo "$errstr ($errno)<br/>\n"; } else { $data = "";$post=0; foreach($_POST as $key=>$value){$post=1; $data.="&$key=$value";} if($data)$data=substr($data,1); if($post) $headers = "POST $path HTTP/1.0\r\n";else $headers = "GET $path HTTP/1.0\r\n"; $headers .= "Host: $host\r\n"; $headers .= "Accept: *\r\n"; $headers .= "Accept-Charset: UTF-8\r\n"; $headers .= "Accept-Charset: *\r\n"; $headers .= "Accept-Encoding: deflate\r\n"; $headers .= "Accept-Language: ru\r\n"; $headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.50\r\n"; if($post){ $headers .= "Content-type: application/x-www-form-urlencoded\r\n"; $headers .= "Content-Length: ".strlen ($data)."\r\n"; $headers .= "\r\n"; $headers .= $data;}else $headers.="\r\n"; @fwrite($fp, $headers); while($file != "\r\n") $file = @fgets($fp, 128); $file = ''; while(!feof($fp)) $file .= @fgets($fp, 4096); @fclose($fp); } $file=str_replace('что','на что',$file); //замена echo $file; ?> все описывать не буду, т.к. просто лень.... с PHP: @fclose($fp); } до PHP: echo $file; каждый извращается как хочет.....
PHP: $accept = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif,image/x-bitmap, */*;q=0.1\r\n"; $accept_language = "Accept-Language: ru, en;q=0.9\r\n"; $accept_charset = "Accept-Charset: utf-8;q=0.6 windows-1251;q=0.1 *;q=0.1\r\n"; $referer = "Referer: http://хост/страница.php\r\n"; //подумай что писать дабы не палить себя $conection = "Connection: Close\r\n"; забыл, это в голову инклудь.. либо убери... на твое усмотрение...
Читай про строковые функции и регулярки....вот и весь мега секрет) и главное правило имхо...не пихай везде сокеты и особенно курл....многие страницы легче получать через fopen() или file_get_conyents(), а не изображать из себя крутого чувака который пихает курл везде...
Вот пример http://fankk.ru/serv/sport.php Код Code: <?php error_reporting(0); $accept = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif,image/x-bitmap, */*;q=0.1\r\n"; $accept_language = "Accept-Language: ru, en;q=0.9\r\n"; $accept_charset = "Accept-Charset: utf-8;q=0.6 windows-1251;q=0.1 *;q=0.1\r\n"; $referer = "Referer: http://fank.ru/index.php\r\n"; //подумай что писать дабы не палить себя $conection = "Connection: Close\r\n"; $host= "m.sports.ru"; //в виде site.ru $path="/index.php?".$_SERVER['QUERY_STRING']; $fp=fsockopen($host,80,$errno, $errstr,10); if(!$fp) { echo "$errstr ($errno)<br/>\n"; } else { $data = "";$post=0; foreach($_POST as $key=>$value){$post=1; $data.="&$key=$value";} if($data)$data=substr($data,1); if($post) $headers = "POST $path HTTP/1.0\r\n";else $headers = "GET $path HTTP/1.0\r\n"; $headers .= "Host: $host\r\n"; $headers .= "Accept: *\r\n"; $headers .= "Accept-Charset: UTF-8\r\n"; $headers .= "Accept-Charset: *\r\n"; $headers .= "Accept-Encoding: deflate\r\n"; $headers .= "Accept-Language: ru\r\n"; $headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.50\r\n"; if($post){ $headers .= "Content-type: application/x-www-form-urlencoded\r\n"; $headers .= "Content-Length: ".strlen ($data)."\r\n"; $headers .= "\r\n"; $headers .= $data;}else $headers.="\r\n"; @fwrite($fp, $headers); while($file != "\r\n") $file = @fgets($fp, 128); $file = ''; while(!feof($fp)) $file .= @fgets($fp, 4096); @fclose($fp); } $file=str_replace('Реклама','',$file); $file=str_replace('<img src="/logo.gif" width="115" height="36" alt=""/>','',$file); $file=str_replace('<a href="http://waplog.net/ru/c.shtml?38290"><img src="http://c.waplog.net/ru/38290.cnt?trafsports=1" alt="waplog" border="0" /></a>','',$file); $file=str_replace('http://m.sports.ru/index.php','http://fankk.ru/serv/sport.php',$file); echo $file; ?> Страницу открывает, Но нечиго неробит! Где я допустил ошибки?
PHP: <?php error_reporting(0); $accept = "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif,image/x-bitmap, */*;q=0.1\r\n"; $accept_language = "Accept-Language: ru, en;q=0.9\r\n"; $accept_charset = "Accept-Charset: utf-8;q=0.6 windows-1251;q=0.1 *;q=0.1\r\n"; $referer = "Referer: http://m.sports.ru/index.php\r\n"; //подумай что писать дабы не палить себя $conection = "Connection: Close\r\n"; $host= "m.sports.ru"; //в виде site.ru $path="/index.php?".$_SERVER['QUERY_STRING']; $fp=fsockopen($host,80,$errno, $errstr,10); if(!$fp) { echo "$errstr ($errno)<br/>\n"; } else { $data = "";$post=0; foreach($_POST as $key=>$value){$post=1; $data.="&$key=$value";} if($data)$data=substr($data,1); if($post) $headers = "POST $path HTTP/1.0\r\n";else $headers = "GET $path HTTP/1.0\r\n"; $headers .= "Host: $host\r\n"; $headers .= "Accept: *\r\n"; $headers .= "Accept-Charset: UTF-8\r\n"; $headers .= "Accept-Charset: *\r\n"; $headers .= "Accept-Encoding: deflate\r\n"; $headers .= "Accept-Language: ru\r\n"; $headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.50\r\n"; if($post){ $headers .= "Content-type: application/x-www-form-urlencoded\r\n"; $headers .= "Content-Length: ".strlen ($data)."\r\n"; $headers .= "\r\n"; $headers .= $data;}else $headers.="\r\n"; @fwrite($fp, $headers); while($file != "\r\n") $file = @fgets($fp, 128); $file = ''; while(!feof($fp)) $file .= @fgets($fp, 4096); @fclose($fp); } $file=str_replace('Реклама','',$file); $file=str_replace('<img src="/logo.gif" width="115" height="36" alt=""/>','',$file); $file=str_replace('<a href="http://waplog.net/ru/c.shtml?38290"><img src="http://c.waplog.net/ru/38290.cnt?trafsports=1" alt="waplog" border="0" /></a>','',$file); $file=str_replace('http://m.sports.ru/index.php','http://kysaka.org/test/?',$file); $file=str_replace('/?f','/test/?f',$file); echo $file; ?> Все работает. http://kysaka.org/test/ Действуй по примеру... Ток исходный код смотри.. там полно шлака... Вырезать тебе придется все.... лучше используй explode(); реж от и до...
PHP: <?php $file = file_get_contents("http://m.sports.ru/?$QUERY_STRING"); $file = implode ("",$file); $file=str_replace('Реклама','',$file); $file=str_replace('<img src="/logo.gif" width="115" height="36" alt=""/>','',$file); $file=str_replace('<a href="http://waplog.net/ru/c.shtml?38290"><img src="http://c.waplog.net/ru/38290.cnt?trafsports=1" alt="waplog" border="0" /></a>','',$file); $file=str_replace('http://m.sports.ru/index.php','http://kysaka.org/test/?',$file); $file=str_replace('/?f','/test/?f',$file); echo $file; ?> Но все же... Я извращенец...
вместо $file = file ("http://m.sports.ru/?$QUERY_STRING"); лучше написать $file = file_get_contents ("http://m.sports.ru/?$QUERY_STRING");