DoorWay.su
    Вход свободный
DoorWay.su
Главная > Генератор дорвеев — это просто

 

Генератор дорвеев — это просто

11 июня 2006 года


Генератор дорвеев — это просто

Введение

В этой статье (или заметке) повествование будет вестись о скриптах, которые помогают дорвейщику автоматизировать процесс создания дорвеев.

Оговорюсь, что статья не рассчитана на абсолютных ньюбов, т.е. читатель не найдет ответов на вопросы «Что такое дорвей?» и «Что такое редирект?». Статья рассчитана на читателей которые, возможно, уже заработали свою первую минималку пользуясь DPW, Генератором Маузера или попросту делая доры руками. В один прекрасный день приходит понимание того, что в любимом DPW не хватает того то и того-то, а еще было бы неплохо, если бы он делал вот так.

Я попробую описать интересные, на мой взгляд, моменты в генераторе и возможные способы их реализации. Данное писание ни в коем случае не претендует на какой то полный мануал по генератором или описание всех возможных ф-ций доргенов, нет, это всего лишь заметки для новичков.

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

Подразумевается, что читатель должен быть знаком с языком php для понимания практических примеров, хотя теория, описанная в этой статье, может быть реализована практически на любом языке. Если читатель далек от программирования то, возможно, после прочтения этой статьи ему будет легче общаться с программистом на тему доргена.

И еще, описываться будут только генераторы статических дорвеев, то есть тех, которые один раз сделали и залили на сервер. Динамические дорвеи – это совсем отдельная тема.

Основные возможности доргена и предложения по их реализации

О терминологии немного.

Под словом дорвей в данном контексте я понимаю несколько страниц, возможно перелинкованных между собой, находящихся, например, на одном сабдомене или в одной папке. Объясняю, есть у нас 3 кейворда “sex”, “drugs”, “clubs”. Мы сделали 3 страницы дорвея (по странице на каждый кей) и положили все это в сабдомен tonight.doorway.su.

Под словом страница дорвея подразумевается одна страница, заточенная под определенный кейворд, например drugs.html (tonight.doorway.su/drugs.html). Конечно же, дорвей может быть и одностраничным.

Кейворд страницы – ключевое слово, под которое затачивается данная страница.

Не забываем, что основная задача доргена это генерации дорвеев.

Разделим дорвей на составные части, если можно так выразиться.

Страница состоит из заголовка страницы (title), метатегов (кеи, деск), редиректа (в случае с редиректными дорами), текста, ссылок (как на другие страницы дора, так и на внешние ресурсы), опционально может быть блок с опечатками кейворда, картинки и т.д., насколько фантазии хватит.

Дальше я постараюсь выделить наиболее интересные, на мой взгляд, моменты в генерации.

Контент

Итак, дорвеи мы делаем для ботов, следовательно, можно предположить, что люди читать этот контент не будут. А для бота по большому счету нужна уникальность текста и повышенный процент кейворда страницы в тексте. Последний вариант конечно спорный, но будем считать, что это нужно. Вариантов генерации текста не так уж много.

Из простых и легко реализуемых это разбиение исходного текста на какие то единицы с последующим перемешиванием и Марковские цепочки.

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

Надо сказать, что все известные мне генераторы, которые есть на рынке, используют для генерации текста эти же алгоритмы (видоизмененные, доработанные, но суть та же).

Исходный текст можно брать из выдачи поисковиков, из википедии, из RSS лент или просто из файла.

Мы будем брать его из файла, как в Генераторе Маузера.

Повышать плотность кейворда в тексте будем простым способом: добавлением в текст нужного кейворда до тех пор, пока плотность не станет подходящей.

Кстати о плотности кейворда в тексте. Если кому-то не понятно, то плотность кея в тексте считается как отношение общего кол-ва слов в тексте к кол-ву кейворда (если он однословный) в том же тексте, затем умножаем на 100 и получаем в процентном отношении.

Еще очень неплохо ключевые слова в тексте выделять тэгами типа <b>,<strong>,<li>, <h> и т.д. В теории поисковики на это ведутся.

Мы это реализовывать не будем, пускай любопытный читатель займется этим сам.

Также к контенту отнесем картинки и опечатки на странице.

По поводу картинок, тут все просто: можно взять картинке с гугля (images.google.com).

Можно сгенерировать какой-нибудь бред (шарики, линии, кубики), а можно вообще ничего не делать, просто поставить тег <img>. Довольно важный момент здесь – это атрибут alt тега <img>. Не забываем вставлять туда ключевое слово.

Теперь про опечатки. Вопрос нужны они или нет мы опустим, рассмотрим как их генерировать. Я вижу опять же 2 варианта: парсить их с какого-нибудь сервиса, либо генерировать самим. Первый вариант мне не нравится полной зависимостью от этого сервиса.

Один из простейших алго для второго варианта:

  • 1) осматриваем свою клавиатуру и для каждой буковки (циферки) выбираем соседние клавиши, т.е. те куда можно попасть промахнувшись в нужную.
  • 2)записываем все это в хэш, ключами которого являются все буквы, а значениями соседние клавиши этих букв.
  • 3) при генерации опечаток для кейворда проходимся по всем буквам кейворда и меняем их на возможные опечатки.

Конечно, этот вариант простейший и не учитывает вариантов когда юзер нажал на 2 клавиши сразу. На то он и простейший.

И еще чуть всяких вкусностей скорее для украшения, но все же Можно реализовать, например, случайные цвета, случайные размеры шрифтов (в разумных масштабах), случайные заголовки <h>, случайную генерацию CSS, в общем, фантазируйте, если считаете нужным.

Кейворды

Вот ради них мы и делаем дорвеи Ведь все остальное это лишь дополнение к тому, чтобы дорвей вылез по нужному нам кейворду.

Откуда их брать генератору. Классический сервис – Овертюра. Многие генераторы (в том числе DPW) парсят кейворды оттуда. Удобна тем, что выдает довольно большую базу кеев, возможен парсинг иноязычных кеев и еще у нее нету всяких защит и парсить ее легко. Из недостатков – неточные (мягко говоря) данные по кол-ву запросов, но не забываем для чего она нужна нам. Со своей функцией – подбор кейвордов в дорген – она справляется на ура.

Из альтернативных – вордтрекер, да и вообще если поискать, то можно что-нибудь найти

Кажется мне что встраивать в дорген модуль для парсинга кеев (так же как и граббер текста) – не очень правильно, так как основная задача это все-таки генерации доров.

В нашем примере мы будем брать кейворды из файла.

Шаблоны

Одним из самых удобных (а, возможно, единственным) способом представления будущего вида страниц дорвея являются шаблоны. Т.е. мы заранее размечаем страницу, рисуем дизайн если считаем нужным, а на месте будущего содержимого ставим какие-нибудь макросы, которые при генерации будут заменены на сам контент. Макросов можно придумать великое множество, мы же для нашего примера возьмем основные.

Это:

  • {TEXT} – при генерации будет заменен на кусок текста.
  • {MAIN_KEYWORD} – кейворд страницы
  • {RAND_KEYWORD} – случайный кейворд
  • {MAP} – карта дорвея
  • {SCRIPT} – JS-скрипт редиректа.

Этих макросов нам хватит для создания вполне приличных дорвеев.

Редирект

Задача редиректа – отправить серфера с дорвея на фид или еще куда-нибудь.

Вариантов несколько, основные: редирект на JS, редирект на флеше, фрейм (фактически редиректа не происходит, просто нужный сайт открывается во фрейме).

Традиционно более популярен редирект на яваскрипте, его и рассмотрим.

Не забываем, что js выполняется на стороне клиента (т.е. у него в браузере), поэтому сам код либо встраивается в страницу дорвея либо находится в отдельном файле и включается в страницу.

Технически, редирект довольно удобно выполнить с помощью той же шаблонной системы. Т.е. мы имеем заранее подготовленный шаблон редиректа (который может быть насколько угодно хитрым) в котором будет один макрос для замены – кейворд. В нашем генераторе мы так и поступим.

Генератор

В заключение этого маленького очерка, как я и обещал, мы попробуем систематизировать полученные знания путем написания простейшего доргена.

Итак, кейворды будут лежать в файле keys.txt,

текст для генерации в файле text.txt,

шаблон страницы (с описанными выше тегами) в файле page.tpl,

шаблон редиректа в файле redirect.tpl

складывать готовые доры будем в папочку out.

Пример получился довольно весомым из-за того, что кол-во комментариев в нем превышает кол-во самого кода.

Поехали

gen.php

 

Code:

<?php

/*
* simplegen demoscript
* gen.php
* (c) voodoo
*/

//необходимая плотность кея в процентах
define('NEED_DENSITY',20);

// кейворды
$arKeys = file('keys.txt');

//текст
//генерировать будем как простой набор слов аля DPW :)
//загружаем и сразу разбиваем на слова
$arWords = explode(' ',file_get_contents('text.txt'));

//тут можно вставить очистку текста от всякого мусора,
//или вообще сделать генерацию по другому :)

//загружаем шаблоны
@$pageTpl = file_get_contents('page.tpl');
@$redirectTpl = file_get_contents('redirect.tpl');

//сначала создадим карту страниц в  памяти,
//чтобы при генерации страницы нормально обрабатывать макрос {MAP}
$map = array();

//карта в виде строки html кода для вставки в шаблон
$strMap = '';
$i = 0;
foreach($arKeys as $key) {
    //в принципе кейворды надо очищать от нежелательных
    //символов, но мы ограничимся лишь стнадартными возможностями trim()
    $key = trim($key);

    //для имени файла страницы будем использовать кей, предварительно
    //заменив пробелы на, скажем, знаки '-'
    $pageName = str_replace(' ','-',$key);
    $pageName .= '.html';
    $map[$i]['key'] = $key;
    $map[$i]['name'] = $pageName;
    $strMap .= '<a href="'.$pageName.'">'.$key.'</a><br>';
    $i++;
}

//теперь приступим к генерации страниц
foreach($map as $k=>$val) {
    //сначала текст
    //будем брать случайное n-ое кол-во слов из массива $arWords
    $wordCnt = mt_rand(count($arWords)/2,count($arWords)-1);
    $pageText = '';
    for($i=0;$i<$wordCnt;$i++) {
        $pageText .= ' '.$arWords[mt_rand(0,count($arWords)-1)];
    }

    //в текст добавим кейворд до необходимой плотности заданной в NEED_DENSITY
    //считаем сколько кеев надо добавить
    //в текст чтобы получить нужную плотность
    $needDens = NEED_DENSITY;
    $addKeysCnt = ($needDens/100)*(str_word_count($pageText)/str_word_count($val['key']));
   
    //сейчас будем вставлять кеи в текст
    //опять разобьем текст на массив слов
    //вставляем кей в массив на а затем перемешиваем на каждой итерации
    //конечно это не самый быстрый и качественный вариант, однако довольно наглядный и простой
    $arWords2 = explode(' ',$pageText);
   
    for($j=0;$j<$addKeysCnt;$j++) {
        $arWords2[] = $val['key'];
        shuffle($arWords2);
    }
    $pageText = implode(' ',$arWords2);
   
    //все, с текстом для страницы закончили :)
    //теперь можно заполнять шаблоны и сохрянять страницу
    $page = $pageTpl;
    //{TEXT} макрос
    $page = str_replace('{TEXT}',$pageText,$page);
   
    //{MAIN_KEYWORD}
    $page = str_replace('{MAIN_KEYWORD}',$val['key'],$page);
   
    //{RAND_KEYWORD}
    $page = str_replace('{RAND_KEYWORD}',$arKeys[mt_rand(0,count($arKeys)-1)],$page);
   
    //для редиректа необходимо предварительно
    //заменить макрос {KEYWORD} в шаблоне самого редиректа на кейворд страницы
    $redirectBody = $redirectTpl;
    //не забываем выполнить urlencode() с кейвордом
    $redirectBody = str_replace('{KEYWORD}',urlencode($val['key']),$redirectBody);
    $page = str_replace('{SCRIPT}',$redirectBody,$page);   
   
    //{MAP}
    $page = str_replace('{MAP}',$strMap,$page);
   
    //сохряняем страницу
    $fp = fopen('out/'.$val['name'],'w');
    fwrite($fp,$page);
    fclose($fp);
}
?>

Теперь примеры файлов шаблонов

page.tpl

 

Code:
<html>
<head>
<title>Page About {MAIN_KEYWORD}</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
{SCRIPT}
<table width="100%" border="0" cellpadding="10" cellspacing="12" class="b01">
  <tr>
    <td bgcolor="orange"><h1>{MAIN_KEYWORD}</h1></td>
  </tr>
  <tr>
    <td bgcolor="#CCCCCC">{MAP}</td>
  </tr>
  <tr>
    <td><h2>{RAND_KEYWORD}</h2>

<div class="txt">{TEXT}</div></td>
  </tr>

</table>
</body>
</html>

redirect.tpl

 

Code:
<script>
var1=71;
var2=var1;
if(var1==var2) document.location="http://www.google.com/search?hl=en&q={KEYWORD}&btnG=Google+Search";
</script>

Вот мы и получили простейший дорген, который в состоянии генерить доры уровня DPW (разве что кеи не тащит), но при этом обладает огромным плюсом – его можно крутить, переделывать, переписывать и делать что угодно. Надеюсь, что новичкам это будет полезно и интересно Если есть вопросы – спрашиваем, не стесняемся. Дополнения, а также замечания, предложения приветствуются прямо в этом топике.

 

Сайт создан в 2008 г. © DoorWay.su | Создание сайта — Seoded.ru