Как можно обнаружить копирование ссылки в браузере? - PullRequest
11 голосов
/ 05 декабря 2010

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

Я не веб-разработчик, так что это может быть неудачный вопрос :-), ноИнтересно, как это происходит? Какая технология или язык дает такой уровень контроля над событиями в браузере?

Сайт был своего рода службой загрузки фильмов, так какнасколько я понял.Я не смог спросить его, какой браузер он использовал, но его платформа была WinXP, так что, скорее всего, это был IE.Поскольку я понятия не имею о технологии, реализующей эту функцию, я не могу добавить какие-либо технологические теги, но если вы знаете подходящий тег, добавьте его.

Отказ от ответственности: -)

Прочитав ответы, большинство, похоже, сходятся во мнении, что

  • на странице браузера это довольно легко достичь, но
  • в адресной строке это не так,если вообще возможно.

Я специально попросил обратно убедиться, что он имел в виду, что он копировал URL из адресной строки, и он подтвердил это.Тем не менее, это может быть недоразумением с обеих сторон.Я не видел, чтобы это произошло, поэтому я могу только повторить его описание в том виде, как я его услышал.

Ответы [ 4 ]

4 голосов
/ 05 декабря 2010

Например, есть событие rightclick. Это легко поймать и отреагировать.

Существует также более общее событие contextmenu, но оно не применяется к браузерам, отличным от IE.

Я предполагаю, что они просто предотвратили щелчок правой кнопкой мыши по ссылкам, исходя из предположения, что никто не щелкает правой кнопкой мыши ссылку по любой другой причине, кроме ее копирования. Так что он даже не дошел до выбора «скопировать ссылку» из контекстного меню, сообщение просто появилось сразу.

Существуют основанные на клавиатуре методы открытия контекстного меню, и я ожидаю, что они все равно сработали бы.

Простейшая реализация этого поведения в jQuery - это три строки:

$("a").rightclick(function () {
  alert("Please don't copy our links!"); return false;
});

Что касается "предотвращения копирования из адресной строки" - ни за что. Они не могли этого сделать.

3 голосов
/ 05 декабря 2010

Раньше это было возможно в IE7 и более ранних версиях Flash 10.

В IE7 (и, мне кажется, 8) вы можете просто:

var vulnerability = window.clipboardData.getData("Text");

Это уязвимость,а в IE9 по умолчанию запрещено.В Firefox подключение к интерфейсу буфера обмена также запрещено по умолчанию.В Safari / Chrome это тоже недопустимо, за исключением явных обработчиков onPaste.

В Flash вы можете просто сделать Clipboard.getData() до нескольких месяцев назад.Буфер обмена теперь имеет доступ только для записи во Flash (но все еще сохраняет свои полные возможности в Air).

В IE вы можете видеть, как это будет тривиально.Просто звоните window.clipboardData.getData("Text") каждые пару секунд.С Flash это было бы не намного сложнее.Просто подключите функцию Javascript к вашему Flash-видео и зациклите видео.

Доступ к буферу обмена вышеупомянутым специальным способом в настоящее время невозможен во всех основных браузерах.

2 голосов
/ 05 декабря 2010

Адресная строка - нет, невозможно, если браузер разрешил странице перехватывать адресную строку, это вызвало бы много проблем безопасности.

Скорее всего, страница либо препятствовала щелчку правой кнопкой мыши по ссылке, либо выполняла комбинацию клавиш CTRL + C на самой странице.

Если это был IE, то есть вероятность, что они невольно установили элемент управления ActiveX при посещении сайта, что может помешало им скопировать ссылку из адресной строки.

1 голос
/ 05 декабря 2010

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

Пожалуйста, не копируйте эту ссылку, зарегистрируйтесь

Я думаю, это делается с помощью JavaScript.Возможно, с IE вы можете иметь элемент управления ActiveX, который дает разработчику больше контроля над браузером.

...