LINUX.ORG.RU

Есть ли мысли, как различить на сервере вызов картинки, встроенной на чужом сайте и открытой по ссылке?


0

1

Собственно, хочется такой фигни. Если моя картинка встроена в чужой сайт - делать ресайз. Если на неё ссылка с другого сайта, то делать редирект на страницу с этой картинкой. Ну, а для открытия картинки со своего сайта, понятно, отдавать как положено.

Анализ реферера не позволит отличить первые два варианта. Он не несёт информации о встраивании.

Первая мысль, приходящая в голову - это дёргать страницу с реферером и анализировать код. Если наша картинка там встроена через {img src}, то запомнить это и отдавать ресайз. Если через {a href}, то выдавать редирект. Если непонятно или страница приватная - пускай уже давятся, отдам картинку :)

Есть ли более изящное и менее ресурсоёмкое решение? А то, в отличии от варианта с одним реферером, в логику конфига web-сервера задачу не вставить, даже mod_magnet не хватит. Придётся скрипты дёргать.

★★★★★

>Первая мысль, приходящая в голову - это дёргать страницу с реферером и анализировать код. Если наша картинка там встроена через {img src}, то запомнить это и отдавать ресайз. Если через {a href}, то выдавать редирект. Если непонятно или страница приватная - пускай уже давятся, отдам картинку :)

1. А если там несколькими разными способами несколько твоих разных картинок встроено? А ведь скорее всего это и будет самый популярный случай.

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

anonymfus ★★★★
()
Ответ на: комментарий от anonymfus

>А если там несколькими разными способами несколько твоих разных картинок встроено? А ведь скорее всего это и будет самый популярный случай.

Нет, это совсем редкий случай. Ну и отдам в этом варианте ресайзнутый контент. Пусть наслаждаются :)

А если другие сайты начнут делать, как ты, то не возникнет ли ситуация


Не возникнет. Ты путаешь серверный и клиентский вопрос. Сервер, с которого я буду дёргать страницу для проверки, сам ничего проверять не будет.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

>Так что будь суровым и делай всем редирект на страницу :}

Не хочется совсем перекрывать кислород посторонним людям, даже если это китайцы ;)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Может дать им просто отдельную ссылку на превью? (с логичным названием). Или сразу готовым куском BB кода, например.

Deleted
()
Ответ на: комментарий от Deleted

>Может дать им просто отдельную ссылку на превью?

Не-не. Считаем, что у нас тупой, зловредный или просто безалаберный юзер. Он ткнулся правой кнопкой в большую картинку на моём сайте и вставил на какой-то китайский форум. Прямо как есть, огромной простынёй 2000x1500.

Чужой форум, чужие люди, никаких средств административного воздействия.

Хочется такой момент отлавливать и обрабатывать. Чтобы:

1. Отдавать относительно мелкую картинку, что-нить типа 640x480 (экономить платный зарубежный трафик, да и просто людям браузеры не рвать :))

2. На мелкую картинку впечатать текст, типа «Подробности смотри на g.wrk.ru/11a5v» с короткой и легко вбиваемой ссылкой, по которой уже откроется детальная страница с инфой о картинке, в т.ч. со ссылкой на первоисточник.

3. В случае же прямого перехода на картинку по ссылке (если вставлена не как {img}...{/img}, а как {url}...{/url}) сразу выдавать нужную страницу.

Пока кроме варианта с анализом удалённого контента по рефереру в голову так ничего и не приходит. А это слишком ресурсоёмко. Проще уж тогда забить и отдавать всегда мелкую картинку.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Тут вот, был случай, как прямыми ссылками выложили 100500 картинок в мелком разрешении… После этого всё стало редиректом на страницу, если без реферера :)

Deleted
()
Ответ на: комментарий от KRoN73

Обсуждают в каментах как противостоять, да и автор обещал статью на эту тему.

CrossFire ★★★★★
()

можно еще такой вариант сделать: на своем ресурсе под превьюшкой поставь линки «ссылка на картинку» и «ссылка для встраивания в форум», и для одной картинки генерь разные названия, которые будут нести эту дополнительную инфу. и еще как-то затруднить получение оригинального урла картинки, например, третье название, которое будет работать только с определенным реферером (твоим). как-то так :)

heisenberg ★★
()

0) Генерим ключ на сегодня по крону и слегка по крону же меняем в htaccess правила mod_rewrite

1) При отдаче контента формируем адреса картинок в виде domain.ru/img/kartinko.jpg?key={ключ на сегодя}

2) Последством правила, сгенерённого в п.0 делаем через mod_rewrite с картинкой, имеющей несовпадающий с сегодняшним ключ всякие непотребные вещи(редирект, фигу и пр.)

В зависимости от размеров жабы и возможностей сервера ключ можно генерить чаще.

r_asian ★☆☆
()
Ответ на: комментарий от r_asian

>Последством правила, сгенерённого в п.0 делаем через mod_rewrite с картинкой, имеющей несовпадающий с сегодняшним ключ всякие непотребные вещи(редирект, фигу и пр.)

Вот вопрос в выборе непотребности и стоит. С самой защитой вопросов нет. И сейчас, кстати, вариант с cron'ом и временными путями и задействован, хотя по другому поводу.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от adepto

С редиректом на страницу picture.jpg.php, если cookie нет. А на этой странице картинка и какая-нибудь реклама :)

adepto
()
Ответ на: комментарий от adepto

>Отдача контента только при наличии cookie?

Задача стоит не в ограничении отдачи контента тем, у кого нет куки. А в анализе использования без куки с целью выбора вида ограничения.

Я не хочу тупо резать всё использование моих ресурсов на стороне. Я хочу, чтобы использование моих ресурсов на стороне было более умным.

KRoN73 ★★★★★
() автор топика

> Первая мысль, приходящая в голову - это дёргать страницу с реферером и анализировать код.

Может, если стопроцентная точность не нужна, есть смысл проверять Accept заголовок? Firefox (других браузеров под рукой нет) при запросе картинок через <img src=«» /> шлёт в Accept'е «image/png,image/*,*/*», и «text/html,application/xhtml+xml,application/xml,*/*» в случае с <a href=«» />. А уж на своём сайте можно и GET-параметр передать.

anonymous
()
Ответ на: комментарий от anonymous

Всё руки не доходят проверить (хотел ответить после проверки), но если так, то это вполне реальное решение. Именно то, что искал. Спасибо.

KRoN73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.