Научите правильно писать грабберы

Discussion in 'PHP' started by Fighter, 30 Dec 2008.

  1. Fighter

    Fighter Banned

    Joined:
    25 Dec 2008
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Научите правильно писать грабберы! Скоко непытался, неробаит! Пишу код
    Code:
    <?php
    
    $file = file ("http://site.ru?$QUERY_STRING");
    $file = implode ("",$file);
    $file = str_replace('То, что требуется заменить','То, на что надо заменить',$file);
    //вырезаю разную рекламу
    echo $f;
    ?>
    Страница открывается, но дальше никуда немогу перейти! (url was not found)
    Как вы пишете грабы?
     
  2. P3L3NG

    P3L3NG Banned

    Joined:
    4 Jun 2008
    Messages:
    175
    Likes Received:
    204
    Reputations:
    11
    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:ru:eek:fficial&client=firefox-a
     
    1 person likes this.
  3. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    echo $file[1];
     
  4. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    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($fp128);
    $file '';
    while(!
    feof($fp)) $file .= @fgets($fp4096);
    @
    fclose($fp); }

    $file=str_replace('что','на что',$file); //замена

    echo $file;
    ?>
    все описывать не буду, т.к. просто лень....

    с
    PHP:
    @fclose($fp); }
    до
    PHP:
    echo $file;
    каждый извращается как хочет.....
     
  5. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    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";
    забыл, это в голову инклудь.. либо убери... на твое усмотрение...
     
  6. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Читай про строковые функции и регулярки....вот и весь мега секрет)
    и главное правило имхо...не пихай везде сокеты и особенно курл....многие страницы легче получать через fopen() или file_get_conyents(), а не изображать из себя крутого чувака который пихает курл везде...
     
    2 people like this.
  7. Fighter

    Fighter Banned

    Joined:
    25 Dec 2008
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    BARS спасибо! Седня попробую!
     
  8. Fighter

    Fighter Banned

    Joined:
    25 Dec 2008
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Вот пример 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;
    ?>
    Страницу открывает, Но нечиго неробит! Где я допустил ошибки?
     
  9. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    А шо он должен робить? Песни петь?
     
    2 people like this.
  10. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Песни петь и на ложках играть)
    Асепты кстати ни к чему..
     
  11. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    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($fp128);
    $file '';
    while(!
    feof($fp)) $file .= @fgets($fp4096);
    @
    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(); реж от и до...
     
  12. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    а нахрена, собственно, эти все навороты? file_get_contents уже отменили?
     
  13. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    PHP:
    error_reporting(0);
    - не прячь ошибки, лучше исправляй их...
     
  14. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    Собственно нет!
     
  15. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    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
    ?>
    Но все же... Я извращенец...
     
  16. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    вместо $file = file ("http://m.sports.ru/?$QUERY_STRING");
    лучше написать $file = file_get_contents ("http://m.sports.ru/?$QUERY_STRING");
     
    1 person likes this.
  17. Fighter

    Fighter Banned

    Joined:
    25 Dec 2008
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    INLANGER ДАЛЬШЕ ПО ССЫЛКАМ ПЕРЕХОДИТЬ, А НЕ ВЫКИДЫВАТЬ НА ГЛАВНУЮ!
     
  18. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    А типа не переходит?
     
  19. Fighter

    Fighter Banned

    Joined:
    25 Dec 2008
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Ехоууу... Все робит! Спасибо Барс! Спасибо всем!
    вот пример http://fankk.ru/test/index.php
     
    #19 Fighter, 1 Jan 2009
    Last edited: 1 Jan 2009
  20. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10

    ошибочка

    это посреди страницы.. ты не все вырезал...