Как я могу выборочно отключить блокировщики вставки

37

По мере того, как все больше и больше сайтов добавляют код блокировки вставки того или иного типа в поля электронной почты и пароли, и все больше людей используют диспетчеры паролей, они все чаще вступают в конфликт.

Хотя существуют расширения , такие как не ебет с пастой для Chrome или Отключить буфер обмена манипуляции и dom.event.clipboardevents.enabledпредпочтения для FireFox, все они страдают от проблемы , что есть законные причины , почему веб - сайты , возможно , захотите подключить к onpaste(например, документы Google форматированный текст поддержка или обработка ссылок Facebook), поэтому я не хочу, чтобы эта функция была полностью отключена.

† Перейдите к about:configпоиску, а dom.event.clipboardevents.enabledзатем дважды щелкните для переключения.

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

В идеале я просто хочу иметь возможность сказать «Снова включить вставку для всех полей на этой странице» в качестве кнопки или опции контекстного меню для страницы, так есть ли способ сделать это?

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

Марк Бут
источник
Эти сайты также блокируют встроенное в браузер сохранение пароля (например, Firefox)? Может быть, делать все, что он делает?
Xen2050
1
Don't fuck with pasteпозволяет выбирать конкретные сайты, для которых нужно отключить манипуляции
Руслан,
Спасибо @Ruslan, я проверил, что это расширение теперь решает мою проблему, и добавил ответ, чтобы отразить это.
Марк Бут

Ответы:

11

Веб-формы, которые имеют эту функцию вставки блокировщика, могут реализовать его декларативно, используя атрибут onpaste для текстового поля или связывая событие через JavaScript или jQuery .

Вопреки тому, что вы заявили, мне удалось заставить букмарклет Дерека Приора работать в Chrome (версия 39 для Windows) со страницами, имеющими атрибуты (type = "password" onPaste = "return false") в текстовом поле пароля

Вы также можете попробовать букмарклет Криса Бэйли, который ломает блокировщики вставки, реализованные через JavaScript.

Это немного хлопотно, но другой альтернативой является временное отключение JavaScript для этой страницы, что, в свою очередь, отключит блокировщик вставки JavaScript. Для Chrome сочетание клавиш для открытия Dev Tools - F12, для доступа к панели «Настройки» - F1, и здесь вы найдете флажок «Отключить JavaScript» в разделе «Общие».

введите описание изображения здесь

mvark
источник
Спасибо mvmark . Далее, похоже, что конкретная страница, с которой у меня возникла проблема, использует какой-то другой метод. Я обновил свой вопрос и думаю, что вопрос с переполнением стека может понадобиться для составления окончательного списка возможных методов, поэтому можно написать букмарклет, который охватывает их все.
Марк Бут
Готово: stackoverflow.com/q/27704355/42473
Марк Бут
@MarkBooth В Chrome вы можете временно отключить JavaScript для этой страницы, что, в свою очередь, отключит блокировщик вставки JavaScript с помощью сочетания клавиш F12 - F1. Просьба посмотреть мой обновленный ответ выше.
mvark
1
Спасибо mvark , это отличный обходной путь для Chrome. Для Firefox я установил Отключить манипуляции с буфером обмена и закрепил Менеджер дополнений, чтобы его было легко включать или отключать.
Марк Бут
1
@annan обновленный неработающую ссылку с архивной статьи ссылка web.archive.org/web/20170908125754/http://prioritized.net/blog/...
mvark
7

Для страниц, которые используют jquery (в основном все веб-страницы). Вы можете вставить следующий URL-адрес JavaScript в адресную строку

javascript:void($('input').attr('onpaste', ''));
Att Righ
источник
2

1 .--- Это может решить проблему, по крайней мере, для нескольких сайтов: ЖАЛОБА, и пусть эти сайты знают, что они УНИЧТОЖАЮТ, а не повышают безопасность для своих пользователей. Может они просто не продумали это ....

Вот текст, который я только что скопировал из блога Криса Бэйли, в котором есть его букмарклет. (Подсказка: сохраните это в своих закладках) .
-> Я бы посоветовал вам отправить ЧАСТЬ следующего на любой сайт, который необходимо перевоспитать:

Повторное включение вставки пароля в надоедливых веб-формах (v2)

Безопасность не следует воспринимать легкомысленно, поэтому в последние дни я все больше разочаровываюсь из-за того, что некоторые компании отключают возможность вставлять пароли в формы входа в систему. Вместо того, чтобы повысить безопасность, это наносит вред тем из нас, кто использует менеджеры паролей, такие как KeePass, [LastPass] или 1Password, поскольку красивые длинные случайно сгенерированные пароли нельзя просто вставить в поле пароля. Вместо этого пользователи вынуждены вводить пароли вручную, что будет способствовать использованию более коротких паролей (и тем самым ослабит безопасность).

Я обнаружил, что это происходит в таких компаниях, как Apple, Vodafone и Nestlé.

К счастью, я нашел решение в виде букмарклета. Первоначальная идея пришла из публикации в блоге «Включение вставки паролей в раздражающих веб-формах» Дерека Приора. К сожалению, его метод просто удаляет атрибут onpaste напрямую, но это не работает, если веб-сайт использует инфраструктуру обработки событий, такую ​​как jQuery. Я взял оригинальный код Дерека и изменил его, чтобы лучше работать с этими фреймворками.

2 .--> Попробуйте букмарклет Криса, доступный здесь , но только в Chrome, Opera или Vivaldi, когда страница НЕ использует JQuery:

3 .--> Попросите кого-нибудь написать всеобъемлющий плагин для всех браузеров. Чтобы начать, вот его комментарии и ссылка на источник со страницы Криса:

Чтобы использовать букмарклет, перетащите следующую ссылку на панель закладок браузера.

Примечание о совместимости: букмарклет работает только в Chrome и Safari из-за сложности чтения данных из буфера обмена в Firefox. Это может быть легко расширено, чтобы включить IE, хотя у меня нет доступа к системе Windows, чтобы проверить это. Существуют и другие решения этой проблемы в виде расширений Chrome (например, «Вставить пароль ITC» и «Разрешить вставку в текст полей», хотя я их не проверял), и я бы предположил, что аналогичные дополнения доступны для других браузеров. Лично мне нравится простота букмарклета. Код размещен на pastebin, если вы хотите поиграть с ним:
(ED: И его источник также указан ниже этой выдержки, на его связанной странице.)

DaaBoss
источник
2

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

Для конкретного сайта, который вы упомянули в своем вопросе, используйте следующий код

javascript:void($('#pwd, #pwd2').unbind('paste'));

Почти для всех других сайтов вставьте следующий код JavaScript в адресную строку

javascript:void(document.querySelectorAll("input").forEach(function(element){element.setAttribute("onpaste","")}));
Томас Эчеверри Валенсия
источник
1
Вы попробовали свое предложение на странице, с которой у меня были проблемы ? Я только что сделал, и все еще появляется диалоговое окно «Пожалуйста, введите ваш пароль», когда вы пытаетесь вставить в поле пароля.
Марк Бут
Специально для этого сайта используйте следующий кодjavascript:void($('#pwd, #pwd2').unbind('paste'));
Томас Эчеверри Валенсия
Я обновил ответ с помощью фрагмента (предыдущий комментарий выше), который работает для этого конкретного веб-сайта. Но это, вероятно, не сработает нигде
Томас Эчеверри Валенсия
Chrome удаляет javascript:часть кода, который вы вставляете в адресную строку. Вы должны убедиться, что выполняемый вами фрагмент точно такой же, как тот, которым я делюсь выше, иначе он не будет работать
Томас Эчеверри Валенсия
1
Я обновил ответ, чтобы люди знали, что нужно добавлять вручную javascript:при вставке в адресную строку
Томас Эчеверри Валенсия
0

Похоже, что с тех пор, как я задал этот вопрос, оригинальное расширение «Не трахайся с пастой » Джейкоба Своннера значительно улучшилось, и Аарон Раймист перенес его на Firefox .

И то, и другое теперь позволяет включать эту функцию для каждого сайта, и, хотя она не устраняет автоматически проблему на проблемном сайте petplanet, о котором я говорил, ручное включение теперь устраняет проблему на этом сайте.

Марк Бут
источник