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

Тема в разделе "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 одна ссылка
    http://phpbb2.altric.com/viewtopic.php?t=33686&sid=30f183873bb24e0e5e02f4ebf05bed3c

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

    http://alternativeenergycom.ning.com/forum/topics/tramadol-medicine-information
    http://carolinescomedy.ning.com/forum/topics/tramadol-ultram-opiate-drug
    http://databaseanswers.ning.com/forum/topics/ranitidine-buy-now-tramadol
    http://www.bizview.net/forum/topics/tramadol-hcl-100-mg-tramadol
    http://www.torreplazabosques.com/bolsaTrabajo/viewtopic.php?p=25438#25438
    http://www.travelmagazine.cc/phpBB3/viewtopic.php?f=2
    http://www.urbanlatinoradio.com/phpbb/viewtopic.php?p=339149#339149
    http://www.vheaven.com/phpBB/viewtopic.php?f=2



    2. Берем этот же форум только ссылка на раздел
    http://phpbb2.altric.com/viewforum.php?f=1
    на выходе 50 ссылок, те же самые что и в первом случае, только не хватает первых 22 ссылок из документа res.txt п.1


    3.Берем ссылку на морду этого форума
    http://phpbb2.altric.com/index.php
    на выходе все те же 50 ссылок.

    4. Если в vt.txt поместить ссылки типа
    http://upperroomassembly.com/PrayerForum/index.php?topic=65670.0
    http://forum.vibesparty.com/index.php?topic=763473.0
    http://hiphopgame.ihiphop.com/forum...rder-Lexapro-no-Prescription-Discount-Lexapro
    http://www.88charmmy.com/forums/index.php/topic,30487.new.html#new

    то 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
    Попробывал вот эту ссылку , ссылки активны

    http://www.boxergirl.net/forum/viewtopic.php?f=2&t=206760


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

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



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