Dleshka.org
Авторизация

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

+10
TipTop 11-11-2010 Хаки DLE 16 комментариев


Этот первоочередной хак должен юзать любой вебмастер перед тем как выпустить свой сайт в мир. Конечно есть подобные хаки и модули но суть этих хаков и модулей одна это защита своего сайта от нежелательных ссылок. После установки и этого хака ваш сайт будет защищен от ссылок которые ведут на другие сайты, файлообменников а так же от различных спамеров в комментариях которые передают ТИЦ и 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
+ 0 -
Да и хотел добавить.Все новые ссылки будут работать с защитой.А те ссылки что есть до установки хака нужно будет перебрать и вставить заново.Иначе работать не будет.
white
11 ноября 2010 17:27
+ 0 -
Старый хак, на дле 9 непашет,надо парсер пхр из 8.3 например взять он как бы и на 9 работает с этим хаком.И опять же всё зависит от того,что вы включили в админке,например 8.3 если включить кликабельные ссылки то хак работать небутет если ссылку воткнуть без урла тоже небудет то же относится к дле 9 тока там докучи ещё и с лешами проблема после этого хака.

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

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

У меня при создании Файла friend_list.txt, автоматом создает внутри этого же файла потом какой то код, а дружественные ссылки уже в кидает в автоматически созданный _friend_list.txt. ССылки добавленные в дружеский файл все равно отображаются через go/? так должно быть ? Или Урл должен стать прямым без go/? ???
tiptop
11 ноября 2010 18:13
+ 0 -
Цитата: Aleal616
Я имею ввиду Для каких целей не стоит скрывать индексацию урла


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

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


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

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

:lol:
tiptop
11 ноября 2010 20:15
+ 0 -
Цитата: Aleal616
Aleal616


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

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

Ps: Почему убранно редактирование своих сообщений, Написал спеша текст и выглядит теперь как буд то какой то "валенок" писал :feel:
kaybox
12 ноября 2010 10:15
+ 0 -
как то ставил этот хак на 8,2, всё прекрасно работало пару месяцев, но потом вдруг хак по непонятным причинам перестал работать и все те ссылки которые прошли через него стали не рабочими, пробовал его переставить наново но ничего не помогло, пришлось удалить и теперь всё делаю вручную
white
12 ноября 2010 11:00
+ 0 -
Aleal616
Цитата: Aleal616
На 9.0 у меня вроде как работает
неможет он в 9 без модификаций работать. В 9 в парсере некоторых строчек что приведены для замены нет.А точнее они не совсем такие.Лично у меня от модефикации родного парсера от 9 при переходе по ссылке вылетала несуществующая страница.А у вас господин Aleal616 не такли всё обстоит,если так то хак у вас неправильно работает.Суть этого хака такова,что при нажатии на ссылку вы должны поней переходить,а роботы нет.
tiptop
12 ноября 2010 12:31
+ 0 -
Вообщем все сделал по инструкции у себя на локалке движок DLE 9.0.Вот результат на скрине

Aleal616
12 ноября 2010 16:16
+ 0 -
white,

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

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

нету у меня такого.... 8.3 null
qweraser
19 марта 2011 19:23
+ 0 -
На 8.5 и 9.0 работает бес проблем, только берите скрипт с этого сайта а не из архива.
На 9.2 ни хрена, заменнил полностью parse.class.php, поставил с 8.5.
Кто не верит смотрите "dowladssoft чтоб не спамить ru"
Кто на 9.2 смог установить пишите!
tiptop
19 марта 2011 20:17
+ 0 -
Ставил на DLE 9.0 без проблем все работает. А если нужно на 9,2 тогда взял parse.class.php c DLE 9.0 и закинул на DLE 9.2 и так же все работает.
qweraser
27 марта 2011 13:36
+ 0 -
От 8.5 работает от 9.0 нет. На 9.2 в parse.class.php просто заменить в Назначение: Формирование URL-адреса - $show на $url['show'] в одном месте в низу и всё заработало на ура после 2 часов ковыряния скрипта.

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