lena berkova
Местный житель
- Регистрация
- 14 Янв 2009
- Сообщения
- 437
- Реакции
- 21
- Автор темы
- #1
есть ли тулза, чтобы взять явно 1 текст и кеи и перемешать их как делают доргены, но чтобы без шаблонов и кучи страниц? желательно онлайн
Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Тогда уж не батон брать, а что-нибудь более интересное проде того же ДМИ для буржуя.+ 1 за Ред Баттон, относительно текста с ним можно это проделать, берете текст + 1 кей можете указать на выходе файл с расширением .txt вот и все... Зачем еще онлайн такие заморочки, был тут на форуме еще
*** скрытое содержание ***
вот в нем тоже были фишки для перемешки текста с кеями, правдо я этим не пользовался сказать относительно работоспособности ничего не могу...
Тогда уж не батон брать, а что-нибудь более интересное проде того же ДМИ для буржуя.
почему сразу дми?) если уж для буржуя (и то смотря под какую пс), джон22 генерит тексты поудачнее дми по крайней мере для гугля.
Имею и jonn22 и DMI, так вот, при прочих равных условиях доры, сгенеренные DMI гораздо лучше вылазят в Гугле. Суть в алгоритме генерации контента. У DMI текст грамматически точен, поскольку построен на грамматически верных шаблонах.
тоже интересуют версии скриптов? Лицензии или нули?Имею и jonn22 и DMI, так вот, при прочих равных условиях доры, сгенеренные DMI гораздо лучше вылазят в Гугле. Суть в алгоритме генерации контента. У DMI текст грамматически точен, поскольку построен на грамматически верных шаблонах.
<?php
class keywordInjector
{
/*
Instantiate the class with the word salad, or install the salad later as a property.
Density and Weight are passed as integers and I decimalize them at injection time.
Density is the percentage of words that will be inserted
Weight is where the insertions are placed - 10% = front 10% of the text,
100 would be the whole document, -99 would be the bottom 99%. 0 (zero) is invalid.
Delim is the character used to explode the word salad.
insertMarker is a string that I use for identifying insert positions. You should not
have to worry about this one unless you use '#!#' in your input buffers.
The injector will correctly avoid HTML tags, style and JS blocks.
The injector will not insert keyword phrases into inerted keyword phrases,
however, based on how many HTML tags there are to avoid you may still get some
doubling up ie., phrase phrase phrase based on the weight and density of the injection.
It will also notice if there is a <body> tag and only insert past there.
The style created has a random name to help reduce footprinting.
Note that you could use a keyword list like 'online casino,online gambling' by simply
changing the delimiter of the salad to ',' rather than the default ' '.
There is a potential problem of finding script and style blocks if the HTML was coded
like this: < script or < /style - the spaces before the node name will give me trouble.
Example:
$injector = new keywordInjector();
$injector->salad = file_get_contents('/wordSalad.txt');
$output = $injector->inject($inputBuff);
*/
var $density;
var $weight;
var $salad;
var $delim;
var $insertMarker;
function keywordInjector($theSalad = '')
{
$this->density = 10;
$this->weight = 100;
$this->salad = $theSalad;
$this->delim = ' ';
$this->insertMarker = '#!#';
}
function inject($inBuff)
{
if (($this->density <= 0) || ($this->density > 100)) {
die('Class keywordInjector requires a density of 1..100.'); }
if (($this->weight == 0) || ($this->weight > 100) || ($this->weight < -99)) {
die('Class keywordInjector requires a weight of -99 to +100 but NOT zero.'); }
if ((strlen($this->salad) == 0) || (strpos($this->salad, $this->delim) === false)) {
die('Class keywordInjector requires a salad string with at least 2 words.'); }
if ((strlen($inBuff) == 0) || (strpos($inBuff, ' ') === false)) {
die('Class keywordInjector->inject requires an input string with at least 2 words.'); }
$saladArr = explode($this->delim, $this->salad);
$saladLen = count($saladArr);
$workBuff = $inBuff;
$styleName = $this->_randomStyleName();
$styleDecl = "<style>.$styleName { display: none; }</style>\n";
// Deal with the potential of a <body> tag...
$headBuff = '';
$ptr = strpos($checkBuff, '<body');
if (!$ptr === false)
{
// There is a body tag - hold on to the portion of the buffer BEFORE
// the body for later, but deal with the buffer from here forward with out.
$headBuff = substr($inBuff, 0, $ptr);
$workBuff = substr($inBuff, $ptr, strlen($inBuff));
// Need to reset the checkBuff...
$checkBuff = strtolower($workBuff);
}
// Calculate the weight and density parameters...
$actualDensity = $this->density / 100;
$tempBuff = explode(' ', strip_tags($workBuff));
$insertCount = count($tempBuff) * $actualDensity;
$actualWeight = abs($this->weight / 100);
if ($this->weight > 0)
{
// Weighted towards the front
$rangeTop = 0;
$rangeBottom = strlen($inBuff) * $actualWeight;
} else {
// Weighted towards the end
$rangeTop = strlen($inBuff) - (strlen($inBuff) * $actualWeight);
$rangeBottom = strlen($inBuff);
}
// First pass - find valid spaces in the content that I can insert
// a phrase, and replace it with an insert marker...
for ($i=0; $i<$insertCount; $i++)
{
$checkBuff = strtolower($workBuff);
$maxLen = strlen($workBuff);
$ptr = rand($rangeTop, $rangeBottom);
// Loop until I am at a space that is NOT inside something bad...
$keepGoing = true;
$failSafe = 0;
while($keepGoing)
{
if ($failSafe++ >= 50)
{
// OK: I have looped around 50 times trying to insert the current keyword -
// I think it is clear that the caller is trying to put too much density of injection
// into the article and I have run out of space to insert.
$i = $insertCount + 1;
$keepGoing = false;
continue;
}
// Go forward to the next space character...
$ptr = strpos($workBuff, ' ', $ptr);
if ($ptr === false)
{
// I have randomed too far out... rerandom and start again.
$ptr = rand($rangeTop, $rangeBottom);
continue;
}
// First - make sure that I am not in a script block.
// All I do is see that the next <script> is [left in the block] of </script>
$lPtr = strpos($checkBuff, '</script', $ptr);
$rPtr = strpos($checkBuff, '<script', $ptr);
if ($lPtr < $rPtr)
{
// I landed in a script... find the end of it and position myself there.
$ptr = strpos($workBuff, '>', $lPtr) + 1;
continue;
}
// Same drill for styles...
$lPtr = strpos($checkBuff, '</style', $ptr);
$rPtr = strpos($checkBuff, '<style', $ptr);
if ($lPtr < $rPtr)
{
// I landed in a style...
$ptr = strpos($workBuff, '>', $lPtr) + 1;
continue;
}
// Now make sure that I am not inside of a tag...
$lPtr = strpos($workBuff, '>', $ptr);
$rPtr = strpos($workBuff, '<', $ptr);
if ($lPtr < $rPtr)
{
// I'm inside a tag...
$ptr = strpos($workBuff, '>', $lPtr) + 1;
continue;
}
$keepGoing = false;
}
// Good to go! drop the marker and move on...
// (Note that space is actually removed)
if ($failSafe < 50)
{
$left = substr($workBuff, 0, $ptr);
$right = substr($workBuff, $ptr + 1, $maxLen);
$workBuff = $left . $this->insertMarker . $right;
}
}
// OK: I now have <n> insert markers in the text. Replace them with
// words/phrases from the salad...
$ptr = strpos($workBuff, $this->insertMarker);
$imLen = strlen($this->insertMarker);
while (!$ptr === false)
{
$maxLen = strlen($workBuff);
$left = substr($workBuff, 0, $ptr);
$right = substr($workBuff, $ptr + $imLen, strlen($workBuff));
$saladPtr = rand(0, $saladLen);
$saladWord = $saladArr[$saladPtr];
$workBuff = "$left <span class=\"$styleName\">$saladWord</span> $right";
$ptr = strpos($workBuff, $this->insertMarker);
}
// Here it comes...
return $headBuff . $styleDecl . $workBuff;
}
function _randomStyleName($nameLen = 10)
{
$proto = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$max = strlen($proto);
$out = '';
for ($i=0; $i<$nameLen; $i++) { $out .= substr($proto, rand(0, $max), 1); }
return $out;
}
}
?>