Шифрование внешних ссылок

Главные вкладки

Аватар пользователя Zigs Zigs 11 декабря 2008 в 18:03

Господа, посоветуйте решение, плз, или направление куда копать:
Хочу все внешние ссылки на сайте при выводе шифровать, чтобы пользователь видел ссылку на мой сайт, как-нибудь в виде http://site.com/redirect/__шифровка__. Шифровать можно, ну хотя бы через base64_encode. Пользователь кликает ссылку и шифровка в качестве параметра возвращается на сайт, дешифруется и пользователь редиректится куда ему надо.
Готового модуля не нашел, использовать pathauto и городить базу ссылок не хочется.
Предполагаю, что это можно делать на лету, но никак не могу понять где прицепиться.
Спасибо.

Комментарии

Аватар пользователя Vladimir_VVV Vladimir_VVV 10 ноября 2015 в 11:45

Себе писал как-то на базе extlink вроде.
Подключается как фильтр ввода с именем elf, в цепочке фильтров нужно что бы был в самом конце.

Делает такие шифры:

http://yandex.ru
шифрует в
http://domain.tld/goto/eWFuZGV4LnJ1

http://drupal.ru/node/22577
шифрует в
http://domain.tld/goto/ZHJ1cGFsLnJ1L25vZGUvMjI1Nzc=

и через хук меню делает редирект на конечную страницу.

За не очень чистый код не РУГАТЬ! и в лицо ногами НЕ БЫТЬ!

С Вас стотыщьпицот мне на кофе.

Аватар пользователя Vladimir_VVV Vladimir_VVV 12 декабря 2008 в 0:27

забыл добавить: Этот фильтр для drupal 6

Для drupal 5 нужно менять хуки меню и фильтра, но у меня не спрашивайте как - апи 5-го drupal`а забыл полностью еще год назад!

Аватар пользователя Vladimir_VVV Vladimir_VVV 12 декабря 2008 в 13:16

Смысл в непередачи PR страницы на внгешние ресурсы, и отсюда отсутствие интереса спамеров при постинге левых ссылок.

Аватар пользователя Sinkora Sinkora 20 марта 2010 в 22:30

А у меня вопрос:

если мы будем
http://yandex.ru
оформлять через параметр
http://example.com/goto/yandex.ru,

то разве PR страницы будет перетекать на внешний ресурс?

Т.е. вопрос в том, какой смысл шифровать ссылки, если они все равно не будут прямо указывать на другой ресурс?

Аватар пользователя Zigs Zigs 13 декабря 2008 в 1:45

Спасибо большое. Ща буду копать.

П.С. Стотыщпицот возьмите в бухгалтерии и расписаться не забудьте. Smile

Аватар пользователя Rodden Rodden 13 декабря 2008 в 20:37

А можн подробную инструкцию по усттановке?
Залил, активировал в админке.
При создании новых постов с внешними ссылками редирект не работает.
Дайте инструкцию подробную!
Спасибо.

Аватар пользователя Vladimir_VVV Vladimir_VVV 13 декабря 2008 в 21:48

в фильтре ввода для данного типа материала включите elf и измените порядок сортировки чтоб elf был после всех ссылкообробатывающих фильтров.

Аватар пользователя STINGER STINGER 7 мая 2009 в 2:56

Vladimir_VVV, отличный модуль! Давно такое искал для друпала, а то только на ВордПрессе видел такой, и не мог поверить, что для Друпала не могут придумать автоматический шифратор с редиректом внешних ссылок...

Кстати, а можно как-то добавить пару сайтов типа в "избранное", для которых бы модуль не применял шифрование адреса и редирект?

Аватар пользователя zman zman 6 марта 2012 в 18:04

STINGER wrote:
а можно как-то добавить пару сайтов типа в "избранное", для которых бы модуль не применял шифрование адреса и редирект?

> Прикрепленный файл elf.rar
> Размер 2.59 кб
там elf.module

было
$link = str_replace($match[1], '/goto/'.base64_encode(str_replace('http://','',$match[1])), $link);

стало

 
 $www_white_list = array('ya.ru','mail.ru');

foreach ($www_white_list as $white_list_value => $value) {
                if (substr_count($match[1], $white_list_value)>0) {
                        $link = str_replace($match[1], '/goto/'.base64_encode(str_replace('http://','',$match[1])), $link);
                }
        }
        }

Аватар пользователя STINGER STINGER 5 июля 2009 в 15:31

Повторюсь, можно ли как-то добалять адреса сайтов типа в "избранное", для которых бы модуль не применял шифрование адреса и редирект? Например, для дружественных сайтов/партнеров, которым бы я не против передать некоторый вес (PR,тИЦ) страницы.

Аватар пользователя Zigs Zigs 7 июля 2009 в 9:16

STINGER wrote:
Повторюсь, можно ли как-то добалять адреса сайтов типа в "избранное", для которых бы модуль не применял шифрование адреса и редирект? Например, для дружественных сайтов/партнеров, которым бы я не против передать некоторый вес (PR,тИЦ) страницы.

Ну надо просто сделать соответствующую проверку. Если ссылка в "типа в избранном", то не шифровать ее.
Или я недопонял вопрос Smile

Аватар пользователя babuta babuta 17 февраля 2010 в 9:38

Установил...
Мне движок предложил обновить его как не поддерживаемую версию на
http://ftp.drupal.org/files/projects/elf-6.x-2.1.tar.gz
обновил.
Включил модуль. Включил фильтр. Сделал его последним.
Картинки для внешних линков добавились (что в общем-то без особой надобности), а вот ссылки как были с прямым переходом, так и остались.
В чем ошибочность моих действий, подскажите?

Аватар пользователя marazmus marazmus 17 февраля 2010 в 10:30

Еще есть неплохой модуль Go - URL Redirects. Это фильтр ввода, который умеет превращать ссылки вида

<go href="http://yandex.ru">yandex</go>

в http://example.ru/go/123

Причем он ведет статистику кликов, которую можно вытащить из БД своим сниппетом или модулем.

p.s. Вот если бы кто "скрестил" этот модуль и CCK Link, было бы вообще ништяк Smile

Аватар пользователя gagaga gagaga 17 февраля 2010 в 11:30

"babuta" wrote:
Установил...
Мне движок предложил обновить его как не поддерживаемую версию на
http://ftp.drupal.org/files/projects/elf-6.x-2.1.tar.gz
обновил.
Включил модуль. Включил фильтр. Сделал его последним.
Картинки для внешних линков добавились (что в общем-то без особой надобности), а вот ссылки как были с прямым переходом, так и остались.
В чем ошибочность моих действий, подскажите?

Этот модуль по умолчанию не делает редирект, а только помечает внешние ссылки и e-mail картинкой. Чтобы воспользоваться доработкой этого модуля нужно его не обновлять.

Аватар пользователя axel axel 20 марта 2010 в 22:36

Можно использовать custom_url_rewrite_inbound()/custom_url_rewrite_outbound() для этой цели - это позволит шифровать все ссылки сайта выводимые движком через l(), не только содержащиеся в контенте.

Аватар пользователя babuta babuta 6 апреля 2010 в 20:02

Кто нибудь делал модификацию для новых модулей (которые бы не светились в отчете как устаревшие и неподдерживаемые) или может у кого сохранился оригинальный немодифицированный модуль версии 6.х-1.0 чтобы определить внесенные изменения и добавить их в современный модуль elf.
А то краснота в отчетах по модулям немного напрягает. Или может достаточно сменить версию в исходниках, чтобы усыпить бдительность движка.

Аватар пользователя Sinkora Sinkora 6 апреля 2010 в 21:36

babuta wrote:
Кто нибудь делал модификацию для новых модулей (которые бы не светились в отчете как устаревшие и неподдерживаемые) или может у кого сохранился оригинальный немодифицированный модуль версии 6.х-1.0 чтобы определить внесенные изменения и добавить их в современный модуль elf.
А то краснота в отчетах по модулям немного напрягает. Или может достаточно сменить версию в исходниках, чтобы усыпить бдительность движка.

Я делал. Только вместо автоматического редиректа я сделал страницу "/go", где пользователь получает сообщение типа "Перейти по внешней ссылке или отказаться"...

Аватар пользователя babuta babuta 6 апреля 2010 в 23:25

Меня вариант автоматического редиректа как раз больше устраивает.
А за основу elf брали или другой модуль? Мне в модификации elf понравилась автоматика обработки ссылок, а не указание специальных тегов типа . Единственно что хотел - это получить модификацию на базе elf-6.x-2.1 чтобы не было "криков" о устаревании модуля.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 14 апреля 2010 в 3:08

Не могу понять, почему именно, но редирект у меня не функционирует. После щелчка на внешней ссылке я отправляюсь на goto/хеш_адреса, где получаю "Object not found!" и ошибку 404. Не могу понять, раз у других всё прекрасно работает, значит ошибки в коде нет. Куда же тогда копать?

UPD: Разобрался. У меня на локальной машине корень Друпала localhost/drupal, соответственно, goto должен бы оказываться в localhost/drupal/goto/, а он вместо этого пытается искать localhost/goto.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 10 ноября 2015 в 11:46

В общем, те функции, которые реализовал Vladimir_VVV в своей вариации ELF, я перенёс в последнюю версию модуля (6-2.1). Не обещаю, что будет работать беспроблемно, потому что работа свелась практически только к переносу функций Владимира в модуль, но у меня всё действует замечательно. Пользуйтесь прилагаемым патчем на свой страх и риск.

Аватар пользователя Erly Erly 24 августа 2010 в 23:04

Товарищи, прошу помочь разобраться (может я что не так понимаю?).

Вот этот модуль: http://drupal.org/project/extlink это не тоже смое, что elf? Ведь, вроде, далает тоже самое.
Далее, поставил я себе этот модуль (extlink), посмотрел настройки, а там пишется, что вроде с модулем http://drupal.org/project/links возможна настройка редиректов.

Выходит, что кроме патченного elf и gotwo есть ещё и третье решение?

Аватар пользователя Shift-Web Shift-Web 25 августа 2010 в 0:58

А если билдить не ссылку а эллемент с уник айдишником в виде параметров, а потом его жабой переваривать и подсовывать на выходе ссылку?

Мне кажется приятнее вариант и юзер будет видеть куда идёт. + меньше тупиковых линков

Аватар пользователя Kulema Kulema 4 декабря 2010 в 0:06

"Erly" wrote:
Выходит, что кроме патченного elf и gotwo есть ещё и третье решение?

Попробую потестировать, по варианту Vladimir_VVV не получилось сделать редирект для комментариев.

Аватар пользователя Kulema Kulema 12 февраля 2013 в 13:59

С версией от Vladimir_VVV разобрался давно, отличная штука, есть там конечно поле для доработок. Например модуль к ссылке через goto-переадресацию добавляет безобразный title повторяя в нем абракадабру ссылки, к примеру так:

title="/goto/d3d3LmVjaG8ubXNrLnJ1L2Jsb2cv=="

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

[a href=http://сайт.ru]текст ссылки[/a]

если адрес сайта без кавычек, переадресация не действует