Почнемо відразу з коду основного скрипту:
#!/usr/bin/perl
# which-forum.pl script
# (c) 2010 Alexandr A Alexeev, http://сайт/
use strict;
# Закоментовані рядки - для суворості
# Якщо завдання - зібрати статистику двигунів, залишити як є
# якщо скласти список форумів - розкоментувати
my $data;
$data .= $_ while (<>
)
;
# перевірити, скільки Powered by phpBB без посилання в підвалі Цей та інші скрипти, згадані в пості, ви знайдете у цьому архіві. Скрипт which-forum.plвивчає код html-сторінки щодо наявності у ньому сигнатур форумного движка. Аналогічний прийом ми використовували при визначенні WordPress та Joomla, але є кілька відмінностей. По-перше, сам скрипт не завантажує код сторінки, а читає його зі stdin або файлу, переданого як аргумент. Це дозволяє завантажити сторінку один раз, наприклад, за допомогою wget, а потім прогнати її через кілька аналізаторів, якщо їх не один. По-друге, у цьому скрипті наявність сигнатури є 100% ознакою движка. Минулого разу наявність сигнатури лише надавала ваги відповідного двигуна і «вигравав» двигун з максимальною вагою. Я вирішив, що в цьому випадку такий підхід лише дарма ускладнить код. Щоб протестувати роботу скрипта, я провів невелике дослідження. Я склав список з декількох тисяч форумів і прогнав кожен із них через свій скрипт, визначивши тим самим відсоток спрацьовувань програми та популярність різних движків. Для отримання списку форумів я скористався своїм парсером Google. Пошуковій системі надсилалися запити типу site:forum.*.ru і так далі. Повний код генератора запитів ви знайдете у файлі gen-forumsearch-urls.pl. Крім зони.ru також використовувалися.su.ua.kz и.by. Минулого разу провести таке дослідження було важко, оскільки сайти WordPress і Joomla не мають подібних сигнатур в URL. Каталоги типу cmsmagazine.ru/catalogue/ не забезпечують достатнього обсягу вибірки. Що таке 600 сайтів на Drupal? Треба визнати, що результати експерименту мене засмутили. З 12590 досліджуваних сайтів тільки на 7083 двигун був визначений успішно, тобто лише в 56% випадків. Може, я не врахував якогось двигуна? Невже на половині форумів стояв Bitrix? Чи мені більше часу приділити пошуку сигнатур? Загалом, тут потрібні додаткові дослідження. Серед 56% успішно впізнаних движків найпопулярнішими, як і слід очікувати, виявилися IPB (31%), phpBB (26,6%) та vBulletin (26,5%) За ними з великим відставанням слідують SMF (5,8%) та DLEForum (5,3%). Мій улюблений punBB виявився лише на 6-му місці (1,64%). Я не радив би сильно довіряти цим цифрам (мовляв, кожен третій форум у рунеті працює на IPB), але певні висновки зробити, звісно, можна. Наприклад, якщо ви маєте намір робити сайт на форумі і плануєте модифікувати форум, скажімо, платити користувачам по 0.01 $ за кожне повідомлення з автоматичним виведенням коштів раз на тиждень, то вам слід вибрати один з трьох найбільш популярних движків. Чим популярніший форум, тим більше шансів знайти програміста, який добре в ньому розуміється. Якщо ж істотних змін у движку не передбачається, то можливо сенс вибрати не найпопулярніший движок, наприклад SMF або punBB. Цим ви зменшите кількість хакерських атак на свій форум і кількість спаму, що автоматично розсилається на ньому. Скриптам для пошуку/визначення форумів також можна знайти не одне практичне застосування. Перше, що спало мені на думку — це відсортувати по ТІЦ упізнані форуми і розмістити на першій сотні пости з посиланнями на один зі своїх сайтів. Однак сотня форумних dofolllow-посилань ніяк не вплинула на ТІЦ (пройшло 2 апдейти), так що краще не витрачати тут час, якщо вас не цікавлять переходи. Зрозуміло, що застосування скриптів далеко не єдине. Думаю, ви легко придумаєте, як їх можна використовувати. Організований Ботмайстер Лабс, не планував. Часу немає, відео потрібно для конкурсу, як новомодний віяння, хоч легше все хорошими скріншами можна пояснити (моє ІМХО), та й палити особливо не хочеться нічого. Тим дуже мало залишилося прибуткових, тупий спам вже зовсім не рулить, тут треба думати і теми ніхто палити не буде, якщо тільки віджили спробувати в гарну обвірку засунути і припудрити трохи. :) Але це не про нас. Втім, ці три "не", думаю, в основному і стали бар'єрами для участі в конкурсі для більшості потенційних учасників. Тут як із ремонтом машини з трьох: дешево, якісно, швидко – у сервісі можуть лише 2 умови одночасно виконати. сиди та вибирай, що тобі ближче. :) З конкурсом теж саме: є час, вмію робити відео, але немає теми, або вмію робити відео, є тема, але немає зовсім часу, або ж і час вільний з'явився і невелика темка є, але відео лякає. Але це добре, якщо одночасно 2 умови виконуються. Ну, гаразд, відкинемо лірику. Я про себе продовжу. Не планував, значить, я в конкурсі братиму участь, навіть вибрав за яку статтю голосуватиму. Що не кажи, а Доз добре софт знає і дуже розумно його використовувати вміє. Але сьогодні дізнався, що у конкурсі інтрига з'явилася. Виявляється, я голосувати не зможу, а зможуть це робити лише новачки, хто придбав софт у 2011 році і конкурс розрахований на них. Здивувався трохи, але господар – пан. Конкурс – це рекламна компанія та Олександру видніше, як її проводити. Втім, вирішив тоді викласти статтю, дещо легше писати, коли ясно для когось, для всього колгоспу насправді це зробити неможливо. Powered by php-Fusion У версії Хрумер 7,07 програма навчена декільком новим двигунам: forumi.biz, forumb.biz, 1forum.biz, 7forum.biz і т.п. phpBB-fr.com, Solaris phpBB theme І процес навчання новому триває безперервно. "Powered by SMF 1.1.2" "Powered by SMF 1.1.3" "Powered by SMF 1.1 RC2" "Powered by SMF 1.1.4" "Powered by SMF 1.1.8" "Powered by SMF 1.1.7" "2006-2008, Simple Machines LLC" Причому це ще не все. Збираючи версії движків ми на деяких форумах СМФ у футері виявляємо навис "2001-2006, Lewis Media". Перевіряємо цей запит, він також нас повністю задовольняє. Знаходимо схожий запит: "2001-2005, Lewis Media". Пробігаючи футери, далі знаходимо наступний запит: "SMFone design by A.M.A, ported to SMF 1.1". Перевіряємо – відмінно. І так далі. Півгодини роботи і у вас чудова база запитів по движку, причому за дані запити Google буде банити значно рідше, ніж якщо ви будете використовувати в них оператори. І в той же час база у вас буде значно чистіша, ніж, якщо ви будете використовувати запити, типу "index.php?topic=", тому що тут Google буде віддавати не тільки необхідні нам форуми, але і багато лівих ресурсів, де вдалося залишити посилання на топік форуму. Ви можете заперечити, мовляв, а що в цьому поганого? Інші ж залишили заслання, отже й ми можемо. Але! Посилання може залишати не лише Хрумер, а й інші програми. причому вони можуть бути спеціально заточені для залишення коментарів у певний ресурс, так званий вузькоспеціальний софт плюс такі посилання могли бути залишені руками. Знову повторюся, нам не кількість сміття важлива, а якість, базу правильними запитами ми і так зберемо. Плюс цього методу ще й у тому, що вам практично не потрібно буде в Хрефері налаштовувати sieve-filter
伟哥 - віагра 吉他 - гітара 其他 - відпочинок 保险公司 - страховка Покласти у файл вордс ось ці коди, що їх заміщають: %E4%BC%9F%E5%93%A5 %E5%90%89%E4%BB%96 %E5%85%B6%E4%BB%96 %E4%BF%9D%E9%99%A9%E5%85%AC%E5%8F%B8 Якщо ви просуваєте сайт за страховками, то розмістивши посилання у профілі на тематичному (!) навіть китайському форумі знайденому на запит " форум СМФ" 保险公司буде дуже непогано.
print "phpbb \n "
if ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?phpbb\.com\/?"[^>]*>phpBB/i or
# $data =~ /viewforum\.php\?[^""]*f=\d+/i or
$data =~ /phpBB\-SEO/i or
$data =~ /)
;
print "ipb \n "
if ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?invision(?:board|power)\.com\/?[^"]*"[^>]*> [^<]*IP\.Board/i
or
$data =~ /]+href="[^"]*http:\/\/(?:www\.)?invisionboard\.com\/?"[^>]*>Invision Power Board/i or
$data =~ /
$data =~ /index\.php\?[^""]*showforum=\d+/i)
;
print "vbulletin \n "
if ($data =~ /Powered by:?[^<]+vBulletin[^<]+(?:Version)?/i
or
$data =~ /)
;
print "smf \n "
if ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?simplemachines\.org\/?"[^>]*>Powered by SMF/i or
$data =~ /index\.php\?[^""]*board=\d+\.0/i)
;
print "punbb \n "
if ($data =~ /]+href="[^"]*http:\/\/(?:(?:www\.)?punbb\.org|punbb\.informer\.com)\/?"[^>]*> PunBB/i); #or
# $data =~ /viewforum\.php\?[^""]*id=\d+/i);
print "fluxbb \n "
# if($data =~ /viewtopic\.php\?id=\d+/i or
if ( $data =~ /]+href="http:\/\/(?:www\.)fluxbb\.org\/?"[^>]*>FluxBB/i)
;
print "exbb \n "
if ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?exbb\.org\/?"[^>]*>ExBB/i); # or
# $data =~ /forums\.php\?[^""]*forum=\d+/i);
print "yabb \n "
if ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?yabbforum\.com\/?"[^>]*>YaBB/i or
$data =~ /YaBB\.pl\?[^""]*num=\d+/i ) ;
print "dleforum \n "
if ($data =~ /\(Powered By DLE Forum\)<\/title>/i or
$data =~ /]+href="[^"]+(?:http:\/\/(?:www\.)?dle\-files\.ru|act=copyright)[^"]*">DLE Forum<\/a>/i)
;
print "ikonboard \n "
if ($data =~ /]+href="[^"]*http:\/\/(?:www\.)?ikonboard\.com\/?[^"]*"[^>]*>Ikonboard/i or
$data =~ /\n "
if ($data =~ /\n "
# if($data =~ /forums\.php\?fid=\d+/i or
# $data =~ /topic\.php\?fid=\d+/i or
if ($data =~ /]+href="http:\/\/(?:www\.)?flashbb\.net\/?"[^>]*>FlashBB/i)
;
print "stokesit \n "
# if($data =~ /forum\.php\?f=\d+/i or
if ($data =~ /]+href="http:\/\/(?:www\.)?stokesit\.com\.au\/?"[^>]*>[^\/]*Stokes IT/i)
;
print "podium \n "
# if($data =~ /topic\.php\?t=\d+/i or
if ($data =~ /]+href=[""]?http:\/\/(?:www\.)?sopebox\.com\/?[""]?[^>]*>Podium/i)
;
print "usebb \n "
# if($data =~ /forum\.php\?id=\d+/i or
if ($data =~ /]+href="http:\/\/(?:www\.)?usebb\.net\/?"[^>]*>UseBB/i)
;
print "wrforum \n "
# if($data =~ /index\.php\?fid=\d+/i or
if ($data =~ /]+href="http:\/\/(?:www\.)?wr\-script\.ru\/?"[^>]*>WR\-Forum/i)
;
print "yetanotherforumnet \n "
if ($data =~ /Yet Another Forum\.net/i or
$data =~ /default\.aspx\?g=posts&t=\d+/i)
;
site:talk.*.ru
site:board.*.ru
site:smf.*.ru
site:phpbb.*.ru
....
Довгий вступ закінчився, тепер до суті.
Що потрібно новачкові, коли він придбав такий супер-комбайн, яким є комплекс Xrumer+Hrefer? Правильно, навчитися на ньому працювати та відкинути ілюзії, що, почавши спамити простирадлами, можна заробити гроші. Якщо ви так думаєте, краще одразу пожертвуйте ваші гроші на благодійність. Вам потрібно навчитися використовувати інструменти комплексу, бажано загострювати його під себе. Час "бери більше - кидай далі" минув. Кількість поступається місцем якості. Значить збиратимемо базу під себе, не навчитеся це робити - відстане від поїзда. У цьому нам допоможе, звичайно, Хрефер. Якщо ви плануєте просувати свої ресурси в Гуглі, то і шукати сайти-донори нам потрібно також через Google. Думаю, це зрозуміло та логічно. Але Гугл, як господарка мідної гори, всім підряд своїх багатств не віддає. До нього підхід потрібний. Відразу хотів би сказати, що не сподівайтеся, що за ознаками, які ви знайдете в паблиці, ви щось зможете зібрати. Вони тому і доступні в паблиці, що гріш їм ціна. Далі тему розвивати не буду. Краще розповім, як правильно збирати, щоб ви побачили результат, інше самі доопрацюєте, головне зрозуміти принцип. Збирати по правильному потрібно за ознаками конкретних, необхідних нам двигунів, а не ознаками форумів взагалі. Це головна помилка новачків – не сконцентруватися на конкретному, а намагатися охопити все. І ще, якщо хочете напарсити більш-менш нормальну базу, відмовтеся від використання у запитах операторів. Жодних "inurl:", "site:", "title" і т.д. Гугл таких як ви шукачів забанить моментально. Тому ретельно вивчаємо двигуни, з якими зараз працює Хрумер:
Втім, нам необхідно готувати правильні запити для парсингу Хрефер. Візьмемо для прикладу форумний діжок SMF Forums. І почнемо розбирати його на запчастини для парсингу. У цьому нам допоможе наш улюблений Google. Вводимо в Google запит SMF Forums- багато сміття у видачі, відмотуємо на якусь 13 сторінку і вибираємо будь-яке посилання. Мені попалася на очі така: http://www.volcanohost.com/forum/index.php?topic=11.0 . Відкриваємо її та вивчимо. Нам потрібно знайти на сторінці щось характерне, що можна застосувати до пошуку інших сторінок на цьому движку. У футері помічаємо наступний напис Powered by SMF 1.1.14, хитаємо її і вводимо в Google, він нам показує, що за цим запитом він знає близько 59 млн варіантів. Побіжно переглядаємо посилання, додаємо до цього ключовика ще пару-іншу варіантів, наприклад, "Powered by SMF 1.1.14" тополяабо "Powered by SMF 1.1.14" viagra. Переконуємося, що запит шикарний, у видачі лише форуми та майже ніякого тобі сміття.
Нам же, крім того, не кількість цікава, а якість, як я говорив вище. Йдемо далі. З того ж форуму беремо ще одну фразу з футера: , також її лапимо і згодовуємо Гуглу. У відповідь він показує, що йому відомо понад 13 млн. результатів. Знову швидко переглядаємо видачу, додаємо допслова і перевіряємо видачу з ними. Переконуємося, що запит відмінний і майже немає сміття. Втім, вже є два металеві запити. Я пропоную перший форум поки дати спокій і продовжити збирати запити вже по інших форумах. Благо Гугл у нас відкритий на запит 2006-2008, Simple Machines LLC. Беремо з видачі, наприклад, ці форуми: http://www.snowlinks.ru/forum/index.php?topic=1062.0 та http://litputnik.ru/forum/index.php?action=printpage;topic=380.0 у футерах у них беремо наступні запити: "Powered by SMF 1.1.7" та "Powered by SMF 1.1.10" (вбивати для Хрефера запити завжди раджу загартованими, адже нам якість потрібна в першу чергу). Думаю, відомо, що ми робимо, нарешті у нас збереться деяка база запитів для пошуку форумів на движку СМФ (він обраний для прикладу, з іншими двигунами аналогічно).
Виглядатиме це приблизно так:
Вважаю, що навчитися на початковому етапі грамотно користуватися Хрефер дуже важливо, адже навчившись цьому можна завжди знайти застосування Хрумеру, як би не змінювалася ситуація. Захисту ускладнюються, і якщо на якихось типах двигунів посилили захист і з нею не справляється зараз Хрумер, то немає сенсу витрачати ресурси на збір даних лінків, а потім на роботу за ними Хрумером, краще зосередити сили на тому, що дає результат . І в той же час, якщо команда Ботмайстер Лабс навчила Хрумер чогось нового, можна оперативно препарувати нового пацієнта та підготувати базу Хрумеру, поки пацієнт ще тепленький. Час - гроші, ресурс може бути не актуальний, коли ви купите базу. зібрану кимось. Крім того, правильне збирання баз під себе значно розширює "біле" застосування Хрумера. А це саме те, куди все і рухається, хочемо ми того чи ні, а процес вибілювання чи серіння йде. Чорні простирадла чому тільки можна йдуть у минуле.
Всі інші, вже технічні моменти роботи з Хрефер можна подивитися в хелпі і зупинятися на них не має сенсу, всі голи-окуляри-секунди виставляються досвідченим шляхом для кожної машини індивідуально.
Як бонус викладу тут шаблон для парсингу китайського пошуковика Baidu, днями у мене про нього питали, ось зробив поміж справою, вибачте за каламбур. :)
Hostname=http://www.baidu.com
Query=s?wd=
LinksMask=
TotalPages=100
NextPage=
NextPage2=
CaptchaURL=
CaptchaImage=
CaptchaField=
Пробував їм тестово попарсити, бана не було, ресурси Хрефер збирав швидко, всі запити для парсингу аналогічні Гугловським, але ресурсів китайських - море, причому з високим ПР, а крім того, багато куди там не ступала нога європейця. Пасити краще китайськими запитами. У цьому допоможе Google транслейт, набираєте список ключовиків російською і перекладаєте це китайською. Правда в " вордсХрефера слова не можна складати китайською, потрібно перекодувати.
Замість китайських:
На закінчення хотів би сказати, що ніколи не розумів людей, які скаржилися на те, що Хрефери погано або парсят, на це завжди хотілося сказати, ви просто не вмієте їх готувати. Краще за хрефера жоден парсер не вміє збирати видачу, просто запити мають бути правильними. Хрефер - машина: хороша, добротна, зроблена німецькою, але керує їй людина і все залежить від того, наскільки розумно їй керують, не можна одночасно змушувати їхати машину і праворуч і ліворуч.
Окрема тема – чищення баз, я колись 3 роки тому для попереднього конкурсу. З більшого там, як і раніше, все актуально, але від перевірки на 200 ОК тепер можна відмовитися, мені правда цей процес не особливо й подобався, дуже похибки були великі, багато зайвого відфільтровувалося. Тепер це можна робити практично на автоматі в процесі роботи Хрумера, хоч цей процес не є повним аналогом перевірки на "200 ОК". Втім, до справи: нещодавно в Хрумері з'явилася чудова можливість - грабувати інформацію з ресурсів в момент прогону проекту. Виглядає так. Ви вбиваєте шаблон, який буде оброблятися в процесі роботи, і зібрана за шаблоном інформація буде заноситись у файл xgrabbed.txt у папці Logs. Застосовувати цю функцію можна навіщо, політ фантазії величезний. Я раз на тиждень використовую цю функцію для видалення з робочої бази "експіред" посилань. Не секрет, що форуми відмирають щодня, щоб почистити від таких ресурсів базу нам та допоможе в даному випадку інструмент "Автограбінг".
Адже погодьтеся, частенько набираючи, наприклад, http://www.laptopace.com/index.php ми бачимо, що цим доменом вже, наприклад, гоудядя барижит, а форуму там немає. Так ось щоб викинути з бази цей шлак, грабуватимемо. :) Відкриваємо вихідний код сторінки і бачимо там цей запис:
Тепер усі "мерці" від гоудадді нам будуть відомі поіменно.
Ось невелика добірка для інструменту "Автограбінг", якщо ви захочете почистити базу від різних "експіред" доменів: