» » Авто защита Datalife Engine от внешних ссылок

Авто защита Datalife Engine от внешних ссылок

Авто защита Datalife Engine от внешних ссылок


Этот первоочередной хак должен юзать любой вебмастер перед тем как выпустить свой сайт в мир. Конечно есть подобные хаки и модули но суть этих хаков и модулей одна это защита своего сайта от нежелательных ссылок. После установки и этого хака ваш сайт будет защищен от ссылок которые ведут на другие сайты, файлообменников а так же от различных спамеров в комментариях которые передают ТИЦ и PR другим сайтам.

Автор хака: Seomax

И так начнем:
Убедительно прошу, перед редактированием файлов движка DLE, сделайте резервные копии редактируемых файлов! Так же, я упускаю все предыдущие статьи, и все файлы мы будем создавать заново, так что приготовьте оригинальные файлы, что бы ни напортить чего либо.

Для редактирования и написания некоторых файлов я взял лучший текстовый редактор – Notepad++, советую использовать и вам его. Для начала зайдите на свой FTP или через панель администратора хостинга, как вам удобнее. Находим в каталоге engine/classes/ файл parse.class.php, открываем его нашим редактором найдите следующую строчку кода:

if ($this->filter_mode) $txt = $this->word_filter($txt, false);



После него аккуратно копируем и вставляем код приведенный ниже:

/*
Назначение: Раскодировка сформированного URL-адреса
Автор: www.seomax.info
*/
$txt = preg_replace( "#<!--FFriend--><noindex><a rel=\"nofollow\" href=[\"'](http://|https://|ftp://|ed2k://|news://|magnet:)?(\S.+?)['\"].+?".">(.+?)</a></noindex><!--EndFFriend-->#ie" , "\$this->decode_friend('\\1\\2', '\\3')", $txt );



Продвигаемся далее по коду и находим такой код:

return "<a href=\"".$url['html']."\" ".$target.">".$show."</a>" . $url['end'];



Удаляем его и вместо него пишем следующий (если копируете, то копируйте внимательно!) код:

/*
Назначение: Формирование URL-адреса
Автор: www.seomax.info
*/
if($this->check_home($url['html'])||$this->check_friends($url['html']))
{
       return "<a href=\"".$url['html']."\" ".$target.">".$show."</a>" . $url['end'];
}
else
{
      $url['html'] = $config['http_home_url']."go/?".($url['html']);
      return "<!--FFriend--><noindex><a rel=\"nofollow\" href=\"".$url['html']."\" ".$target.">".$show."</a></noindex><!--EndFFriend-->" . $url['end'];
}



Продвигаемся далее по коду и находим следующий код:

function word_filter($source, $encode = true) {



Выше этого кода пишем следующий код:

/*
Функция: "Дружественный URL"
Автор: www.seomax.info
*/    
function check_friends ($url)
{
    global $config;        
    $friend_url = file($config['http_home_url']."engine/friend/friend_url.txt");      
        
    for ($i = 0; $i < count($friend_url); $i++)
    {
        $value = str_replace("http://", "", trim($friend_url[$i]));
        $value = str_replace("www.", "",    $value);
        $value = explode('/', $value);
        $value = reset($value);
                      
        if ($value == "" ) continue;
        if (strpos($url, $value) === false) continue; else return true;
    }
    return false;
}



И последний шаг для редактрирования этого файла. Найдите код:

return "[leech=".$url."]".$show."[/leech]";
}



Ниже пишем следующий код (аккуратно копируйте, не пропустите строки, символы):

/*
Функция: Раскодировка сформированного URL-адреса
Автор: www.seomax.info
*/
function decode_friend($url="", $show="")
{    
    global $config;
    $home_url = $config['http_home_url']."go/?";
        
    $url = str_replace($home_url, "", $url);
    $url = explode ("url=", $url);
    $url = end ( $url );
    $url = rawurldecode($url);
        
    return "[url=".$url."]".$show."[/url]";
}



Все, сохраняйте файл parse.class.php, но не спешите закрывать FTP менеджер, он еще нам нужен. Перейдите в каталог engine и создайте папку friend. В нее нужно добавить файл friend_url.txt, структура этого "текстового" файла простая - список URL-адресов дружественных сайтов. Не забудьте добавить права на чтение нашей папки и файла с URL. Смотрите пример:

http://dleshka.org/
http://forum.dleshka.org/


Список составляете так как я вам привел в примере. Обратите внимание на то, что все URL нужно указывать с http:// в начале и / в конце. Думаю вы сохранили уже этот список в каталог engine/friend/ с именем friend_url.txt и мы можем продолжать дальше. А дальше нам нужно перейти в корень сайта и создать в нем папку go. Теперь с помощью нашего Notepad++ сделайте файл index.php со следующим кодом:

<?php

$url = trim($_SERVER['QUERY_STRING']);

if(!empty($url)){
    @header('Location: ' . $url);
}

?>



Теперь поместите этот файл в каталог go который мы только что создали. Так же, так как хостингов очень много, и практически у каждого свои настройки Apache и так далее, бывает что не определяется файл как индексный. Давайте это исправим, создайте файл .htaccess с текстом внутри:

DirectoryIndex index.php
RewriteEngine Off


После этих действий можно тестировать наши наработки. Еще что бы я посоветовал, для особо мнительных :) в robots.txt закройте индексацию каталога go. Все, я думаю это финальная версия этого хака, хотя была идея (может быть когда-то) создать еще возможность добавления URL-адресов дружественных сайтов из панели администратора, но думаю это не важно, да и вообще - не нужно.

Хак 100% рабочий на версиях DLE 7x-8x. DLE 9.0 хак не проверялся но есть такое чувство что и на девятке заработает.

Комментарии

TipTop

Администраторы 11 ноября 2010 10:40
Да и хотел добавить.Все новые ссылки будут работать с защитой.А те ссылки что есть до установки хака нужно будет перебрать и вставить заново.Иначе работать не будет.
Старый хак, на дле 9 непашет,надо парсер пхр из 8.3 например взять он как бы и на 9 работает с этим хаком.И опять же всё зависит от того,что вы включили в админке,например 8.3 если включить кликабельные ссылки то хак работать небутет если ссылку воткнуть без урла тоже небудет то же относится к дле 9 тока там докучи ещё и с лешами проблема после этого хака.

Больше года его пользую на 8.3,а теперь и на 9.Спасибо Seomax-су.
На 9.0 у меня вроде как работает
Как там исключения делать и в каких целях используюся исключения (Дружеские сайты)?

Я имею ввиду Для каких целей не стоит скрывать индексацию урла

У меня при создании Файла friend_list.txt, автоматом создает внутри этого же файла потом какой то код, а дружественные ссылки уже в кидает в автоматически созданный _friend_list.txt. ССылки добавленные в дружеский файл все равно отображаются через go/? так должно быть ? Или Урл должен стать прямым без go/? ???

TipTop

Администраторы 11 ноября 2010 18:13
Цитата: Aleal616
Я имею ввиду Для каких целей не стоит скрывать индексацию урла


Это для того чтобы к примеру пиарить другие свои сайты.

Цитата: Aleal616
ССылки добавленные в дружеский файл все равно отображаются через go/


Я не автор хз мож че не так сделал.Вообще забей на на это.Главное что это работает. smile
Впринципе всеравно, просто хочется разобраться feel
дружеский не дружеский 1 фиг

Внутренние ссылки — 245, индексируется — 245
Внешние ссылки — 0, индексируется — 0

lol

TipTop

Администраторы 11 ноября 2010 20:15
Цитата: Aleal616
Aleal616


Создайте файл friend_list.txt в директории engine/data/ и установите правила на чтение файла. Права на чтение ставил?
Да, действительно все дело в правах. Ничего лишнего не автоматом создается. Все работает lol

Я проставлял их но они по всей видимости тогда не применились

Ps: Почему убранно редактирование своих сообщений, Написал спеша текст и выглядит теперь как буд то какой то "валенок" писал feel
как то ставил этот хак на 8,2, всё прекрасно работало пару месяцев, но потом вдруг хак по непонятным причинам перестал работать и все те ссылки которые прошли через него стали не рабочими, пробовал его переставить наново но ничего не помогло, пришлось удалить и теперь всё делаю вручную
Aleal616
Цитата: Aleal616
На 9.0 у меня вроде как работает
неможет он в 9 без модификаций работать. В 9 в парсере некоторых строчек что приведены для замены нет.А точнее они не совсем такие.Лично у меня от модефикации родного парсера от 9 при переходе по ссылке вылетала несуществующая страница.А у вас господин Aleal616 не такли всё обстоит,если так то хак у вас неправильно работает.Суть этого хака такова,что при нажатии на ссылку вы должны поней переходить,а роботы нет.

TipTop

Администраторы 12 ноября 2010 12:31
Вообщем все сделал по инструкции у себя на локалке движок DLE 9.0.Вот результат на скрине

white,

Посмотрим, индекс покажет...

У меня по ссылкам переходит как надо, а как поисковики себя повидут увидим
Фиг его знает, нуленные двиги тож могут различия в парсере иметь. А вот вопрос знатокам, как зделать такойже парсер для форума DLE, кавава нить 8.2~84
if ($this->filter_mode) $txt = $this->word_filter($txt, false);

нету у меня такого.... 8.3 null
На 8.5 и 9.0 работает бес проблем, только берите скрипт с этого сайта а не из архива.
На 9.2 ни хрена, заменнил полностью parse.class.php, поставил с 8.5.
Кто не верит смотрите "dowladssoft чтоб не спамить ru"
Кто на 9.2 смог установить пишите!

TipTop

Администраторы 19 марта 2011 20:17
Ставил на DLE 9.0 без проблем все работает. А если нужно на 9,2 тогда взял parse.class.php c DLE 9.0 и закинул на DLE 9.2 и так же все работает.
От 8.5 работает от 9.0 нет. На 9.2 в parse.class.php просто заменить в Назначение: Формирование URL-адреса - $show на $url['show'] в одном месте в низу и всё заработало на ура после 2 часов ковыряния скрипта.

Пишите если что в ПС "dowladssoft чтоб не спамить ru"

Информация

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


Личные сообщения

Ваши переписки