Как блокировать внешние ссылки или получить от этого пользу ?





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

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

Дополнение #1: >>> блокировать ip-адреса нежелательных плагиаторов

Я устану за ними бегать.... но я могу блокировать доступ по REFERER. Хотя хотелось бы всё-таки поиметь пользу.
Ситуация осложняется также тем, что все картинки должны быть доступны в images.(googleyandexyahoo.*).com.

Насчёт подписей на картинках - круто, я тоже думал об этом, но это решение небыстрое (т.к. скрипт галереи не мой, придётся ковыряться). Я не хочу ставить подписи для посетителей, поэтому такие сложности.

Какие ещё есть идеи ?
Дополнение #2: >>> Можно одним махом программно изменить имена файлов картинок, дописать пару букв или цифр и поменять также урлы в бд, и у всех воришек картинки пропадут :)

Насчёт пропадания картинок - нет проблем, всегда можно успеть.
Дополнение #3: >>я стал обнаруживать слишком большую загрузку сервера
> все зависит на сколько хватает мощностей вашего сервера в калифорнии :)

Сервер в Германии, но это не имеет значения. Какой бы избыточной загрузка ни была, с краденного блоггерами траффика я не имею никакой выгоды. Тем более, что загрузка существенная.

Ответы (6)

RSS
+
+1
Если реферера нет, никак не реагировать. Если есть и с чужого сайта, вместо картинки показывать страницу типа "Вы теперь на моем крутом сайте, ткните сюда, чтобы посмотреть картинку, которую эти поцы прилинковали директом, или сюда, а тут вот еще круче...". Ну, как народ.ру и подобные сервисы. А роботов можно и отдельно отрабатывать, по юзер-агенту.

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

crimaniak

  • 1 октября 2011, 12:17
+
0
блокировать ip-адреса нежелательных плагиаторов
писать на картинках свой домен

Дополнение #1 по поводу пользы, я не вижу других вариантов, кроме как рекламировать свой домен
Можно одним махом программно изменить имена файлов картинок, дописать пару букв или цифр и поменять также урлы в бд, и у всех воришек картинки пропадут :)

Дополнение #2
>я стал обнаруживать слишком большую загрузку сервера
все зависит на сколько хватает мощностей вашего сервера в калифорнии :)
avatar

Anton_YAkushev

  • 1 октября 2011, 17:11
+
0
----.htaccess----
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(gifjpe?gpng)$ - [F,NC,L]
============
...и никаких картинок у врагов.
Про "выгоду" для себя можно говорить лишь как раз имея достаточный запас по нагрузке, например, отдавая какую-то "зазывающую" картинку всем "чужакам" . Для этого последняя строка будет другой:
-----
RewriteRule \.(jpgpnggif)$ http://site.ru/my_image.jpg [NC,R,L]
===
avatar

apple_rom

  • 1 октября 2011, 21:37
+
0
Для начала советую для таких дел использовать хотябы nginx(нагрузка упадёт сразу в разы). В нём можно проверять REFERER и если он не из разрешенных,то перенаправлять на страницу ошибки. Всё это легко делается с помощью регулярных выражений.
avatar

motakuji

  • 2 октября 2011, 01:15
+
0
Составить белый список доменов рефферов, с которых показывать картинку (images.(googleyandexyahoo.*).com + свой домен), все остальные идут лесом, в том числе без реффера.

Как направить в лес - можно выбирать самому: редирект, страничка, картинка о том как нехорошо воровать и т. д.

Самый броннебойный вариант - при вхождении в галлерею ставить параметр сессии, а при отдаче картинки его проверять.
+ обойти нереально
- все другие домены идут лесом, включаяя нужные
- картинка отдается скриптом
- надо самому формировать все заголовки к картинке, иначе она будет некешируемой (при старте сесси в php отсылаются соответствующие заголовки, их нужно будет "забить")
avatar

Enyby

  • 2 октября 2011, 06:20
+
0
— блокировка ip не поможет. если бы фотки тырили парсером, тогда да;
— доступ по реферер можно не блокировать. наоборот, если он не совпадает с адресом Вашего сайта, выдавать картинку-заглушку с текстом: посмотреть картинку можно на сайте http://site.ru/;
— по юзерагенту дополнительно проверять ботов поисковых систем; им разрешать загрузку вне зависимости от реферера;
— всегда разные адреса картинок не будут способствовать популяризации сайте через googleimages/yandeximages и т. п.

вроде на всё ответил
avatar

ax64

  • 2 октября 2011, 12:59

Только зарегистрированные и авторизованные пользователи могут отвечать.