нужна помощь по скрипту

Тема в разделе "PHP", создана пользователем barbakan, 5 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. barbakan

    barbakan

    Регистр.:
    18 авг 2007
    Сообщения:
    345
    Симпатии:
    399
    я 2 года обращался уже за помощью по этому скрипту здесь
    http://www.nulled.ws/showthread.php?t=90908
    Тогда мне помогли и скрипт чудесно работал. Сейчас он мне понадобился опять, запустил а он не собирает. Что могло изменится за 2 года ??
    Запускаю на денвере. Curl включил, curl.dll добавил. Единственное два года назад использывался другой денвер с php, а сейчас последний с php 5.3.1.
    Сегодня скрипт запускается и с некоторых топиков даже выдергивает ссылки но очень мало, насколько я помню раньше он очень быстро собирал с заспамленых форумов. Похоже что он перестал ходить на корень форума и по подфорумам.
    Я полный ноль в пхп поэтому и прошу вас мне помочь разобраться..
    Описание что дожен делать скрипт здесь
    1) Открываем файл с топиками и преобразуем ссылки в ссылку на корень форума
    2) Читаем форум и вытягиваем оттуда ссылки на подфорумы.
    3) Читаем подфорум и вытягиваем ссылки на топики
    4) Таким образом в переменной $url_topic мы имеем ссылку на топик. Теперь читаем топик и вытягиваем все ссылки, проверяем ведёт ли эта ссылка на другой топик внешнего форума. Если да, значит 99% это то, что нам нужно. Результат складываем в файл res.txt
    САМ скрипт


    PHP:
    <?php
    set_time_limit
    (0);
    $vts fopen("vt.txt""r");
    while (!
    feof($vts))
    {
    if (
    file_exists("stop.txt"))
    {
    $stop fopen("stop.txt""w");
    fwrite($stop"programm stoping");
    fclose($stop);
    exit;
    }
    $vt trim(fgets($vts));
    $d substr($vt0strrpos($vt"/")+1);
    $ch curl_init($d);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_TIMEOUT10);
    $p curl_exec($ch);
    preg_match_all("/href=[\"\']?([^\s\"\']*forum\.php[^\&\s\"\']*)[\&\s\"\']/iUs"$p$m);
    foreach(
    $m[1] as $k)
    {
    $vf $d.preg_replace("/&amp;/","&",trim($k));
    $ch1 curl_init($vf);
    curl_setopt($ch1CURLOPT_RETURNTRANSFER1);
    curl_setopt($ch1CURLOPT_TIMEOUT10);
    $p1 curl_exec($ch1);
    preg_match_all("/href=[\"\']?([^\s\"\']*topic[^\&\s\"\']*)[\&\s\"\']/iUs"$p1$m1);
    for(
    $i=0$i<count($m1[1]); $i++)
    {
    $vt2 $d.preg_replace("/&amp;/","&",trim($m1[1][$i]));
    $ch2 curl_init($vt2);
    curl_setopt($ch2CURLOPT_RETURNTRANSFER1);
    curl_setopt($ch2CURLOPT_TIMEOUT10);
    $p2 curl_exec($ch2);
    preg_match_all("/href=[\"\']?([^\s\"\']*topic[^\&\s\"\']*)[\&\s\"\']/iUs"$p2$m2);
    $fff fopen("res.txt""a+");
    for(
    $j=0$j<count($m2[1]); $j++)
    if (
    strpos($m2[1][$j], "ttp:") !=0fwrite($fffpreg_replace("/&amp;/","&",$m2[1][$j])."\n");
    fclose($fff);
    }
    }
    }
    fclose($vts);
    ?> 
    Просто очень сильно удивлен , раньше работал а сейчас нет, что могло изменится??
     
  2. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    регулярки кривые. скинь примеры урлов, которые они должны обработать, напишем новые.
     
    barbakan нравится это.
  3. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    скрипт полностью рабочий, но имеет поддержку только форумов phpBB2 - ссылки вида: viewtopic.php?p=100, viewtopic.php?t=10
    сейчас же большинство пробиваемых форумов это phpBB3 - ссылки вида: viewtopic.php?f=10&t=100
    соответсвенно в скрипт добавлена поддержка phpBB3

    PHP:
    set_time_limit(0);
    $vts fopen("vt.txt","r"); # ссылки содержащие viewtopic.php, viewforum.php
    while (!feof($vts)) {
    if(
    file_exists('stop.txt')) { file_put_contents('stop.txt','programm stoping'); exit; }
    $vt trim(fgets($vts)); $d substr($vt,0,strrpos($vt"/")+1);
    $p curl_run($d);
    preg_match_all("/href=[\"\']?([^\s\"\']*forum\.php[^\&\s\"\']*)[\&\s\"\']/iUs"$p$m);

    foreach(
    $m[1] as $k) { $vf $d.str_replace("&amp;","&",trim($k));
    $vf str_replace('/./','/',$vf); $p1 curl_run($vf);

    if(
    strpos($p1,'ucp.php')) {
    preg_match_all('|href=[\"\']\.?/?(viewtopic\.php\?f=\d+&(amp;)?t=\d+)&|i',$p1,$m1);    }
    else { 
    preg_match_all("/href=[\"\']?([^\s\"\']*topic[^\&\s\"\']*)[\&\s\"\']/iUs"$p1$m1);
    $m1[1] = preg_grep("/php\?t=/",$m1[1]); }
    $m1[1] = array_unique($m1[1]); sort($m1[1]);
    for(
    $i=0$i<count($m1[1]); $i++) {
    $vt2 $d.preg_replace("/&amp;/","&",trim($m1[1][$i]));
    $p2 curl_run($vt2);
    preg_match_all("/href=[\"\']?([^\s\"\']*(topic|thread)[^\s\"\']*)[\s\"\']/iUs"$p2$m2);
    $m2[1] = preg_grep("|http://|",$m2[1]); $m2[1] = array_unique($m2[1]); sort($m2[1]);
    $fff fopen("res.txt""a+");
    for(
    $j=0$j<count($m2[1]); $j++)
    if (
    strpos($m2[1][$j], "ttp:") !=0fwrite($fff,str_replace("amp;","",$m2[1][$j])."\n");
    fclose($fff); } } } fclose($vts);

    function 
    curl_run($url) { $ch curl_init($url);
    curl_setopt($chCURLOPT_HEADER0); curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_TIMEOUT10); curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    curl_setopt($chCURLOPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');
    $page curl_exec($ch); return $page; }
     
    barbakan нравится это.
  4. barbakan

    barbakan

    Регистр.:
    18 авг 2007
    Сообщения:
    345
    Симпатии:
    399
    Спасибо большое всем кто откликнулся.

    Попробывал скрипт предложенный pitkina и вот что у меня получилось

    1. В vt.txt одна ссылка
    Перейти по ссылке

    на выходе в res.txt всего 72 ссылки (хотя форум заспамлен по самые небалуй) типа

    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке



    2. Берем этот же форум только ссылка на раздел
    Перейти по ссылке
    на выходе 50 ссылок, те же самые что и в первом случае, только не хватает первых 22 ссылок из документа res.txt п.1


    3.Берем ссылку на морду этого форума
    Перейти по ссылке
    на выходе все те же 50 ссылок.

    4. Если в vt.txt поместить ссылки типа
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке

    то res.txt пустой после работы скрипта.


    Я так понял что нужно в скрипте указывать для каждого вида форумов свои признаки , иначе скрипт просто их не обрабатывает.
    Как это сделать ? Может есть какие то общие признаки , или расскажите в каких строчках и что нужно править, что бы я Вас не мучал по поводу каждого вида форумов.

    Как я понимаю нужно начинать учить пхп.
     
  5. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    там отключены BB коды, a скрипт может парсить только активные ссылки (a href='')

    это другие движки форумов, а для сбора ссылок только phpBB вполне достаточно
    и базу ссылок предварительно следует отфильтровать на viewtopic.php, viewforum.php
     
  6. barbakan

    barbakan

    Регистр.:
    18 авг 2007
    Сообщения:
    345
    Симпатии:
    399
    Попробывал вот эту ссылку , ссылки активны

    Перейти по ссылке


    на выходе в res.txt 250 ссылок ,

    форум заспамлен и я думаю что должно быть гораздо большее количество.



    Спасибо большое за помощь, не знал что нужно с базы повыкидывать форумы с неактивными ссылками, больше времени экономиться.
     
Статус темы:
Закрыта.