"Tynt JavaScript가 아닌"추가 정보 : www.site.com "이 복사-붙여 넣기 작업에 주입되지 않도록하려면 어떻게해야합니까?


30

브라우저에서 텍스트를 복사 할 때 클립 보드에 "Read more : www.site.com"과 같은 것을 삽입하는 사이트가 많이 있습니다. 나는 이것이 혐오 스럽다는 것을 안다. 웹 사이트 에서 Tynt 도메인을 차단하여 서비스 Tynt 서비스를 사용하는 경우 Google 검색에서 이를 중지하는 몇 가지 방법 이 있지만 많은 웹 사이트에서 자체 제작 한 JavaScript를 사용합니다.

JavaScript를 끄는 것 외에이 동작을 차단하는 일반적인 방법이 있습니까? Chrome을 사용하지만 모든 솔루션에 관심이 있습니다.

편집 : 분명히, 나는 많은 사람들이 웹 사이트없이 침입 할 것이기 때문에 이러한 웹 사이트의 나머지 JavaScript 기능을 유지할 수 있기를 원합니다.

편집 # 2 : 다음은 Tynt 차단제 사용에도 불구하고 계속해서 나를 괴롭히는 두 가지 웹 사이트입니다. Marginal Revolution | 회계 시간

다음은 Tynt없이 수동으로이 그늘진 연습을 구현하는 방법을 설명하는 2 개의 StackOverflow 질문 과 2 개의 블로그 게시물 입니다. 다음은 이것이 안정적으로 차단하기 어려운 것으로 설명 된 블로그 게시물 입니다. 다음은 AdBlock을 사용하여 Chrome에서이를 차단하는 방법에 대한 제안을 제공 하는 가장 최근의 토론 (2013 년 3 월)입니다. 그러나 그것은 효과가 없었습니다.

답변:


24

성가신 "더 읽기"를 추가하는 사이트는 ShareThis입니다.

이 나쁜 행동을 방지하기 위해 세 가지 대안이 있습니다.

클립 보드 이벤트 비활성화

이 웹 사이트는 클립 보드 API를 사용하여 웹 개발자가 복사 / 잘라 내기 / 붙여 넣기 작업을 가로 채고 수행 될 때 일부 코드를 실행할 수 있도록합니다. 이것이 ShareThis (및 이와 유사한 다른 웹 사이트)의 작동 방식입니다. 그것은 단순히 복사 이벤트를 기다리고 효과적인 복사가 수행되기 직전에 성가신 "-See ..."를 포함하는 텍스트의 "계층"을 추가합니다.

이제 질문은 : 클립 보드 이벤트를 비활성화하는 방법이 있습니까? 불행히도 Chrome / Chrome 에서이 작업을 수행 할 수있는 방법을 찾지 못했지만 Firefox에서는 두 가지 방법으로 가능합니다.

  • 에 들어가서 about:config검색하십시오 dom.event.clipboardevents.enabled. 키를 두 번 클릭하고 (로 설정 false) 짜잔! 클립 보드 이벤트를 사용 중지했으며 아무도 클립 보드를 다시 만지지 않습니다.
  • 이전 버전의 Firefox (실제로는 이전 버전) 의 경우 옵션 과 동일한 기능 을 수행하는 이 확장about:config있습니다.

클립 보드 이벤트를 사용 중지하면 거의 사용되지 않으며 스팸 사용 이외의 웹 사이트 사용 목적이 없으므로 웹 사이트 사용 환경이 손상되지 않아야합니다.

두 번째 해결책으로 넘어 갑시다.

블록 공유

ShareThis가 필요하지 않은 경우 w.sharethis.com도메인을 간단히 차단할 수 있습니다. ShareThis로드 (및 등록 ClipboardEvent)를 담당하는 Javascript 는 해당 웹 사이트에서로드됩니다.

간단한 AdBlock 필터에서 호스트 파일 편집에 이르기까지 다양한 방식으로 차단 할 수 있습니다 (평판으로 인해 더 많은 링크를 넣을 수 없으므로 여기에서 다루거나 링크하지 않습니다).

hosts파일 을 통해이를 수행하는 예 :

127.0.0.1 w.sharethis.com

세 번째 솔루션은 가장 어려운 솔루션이며 최후의 수단으로 만 사용해야합니다.

문제가있는 웹 사이트에서 선택 기능을 사용하지 않도록 설정

클립 보드에 복사 된 컨텐츠를 편집하기 위해 이러한 웹 사이트 Selection는 선택을 즉시 편집 할 수 있는 API를 사용합니다. 따라서 해결책은 모든 종류의 코드 를 완전히 비활성화하는 것입니다 Selection(코드 쪽에서는 분명히 선택을 수행 할 수 있습니다).

간단한 Tampermonkey / Greasemonkey 스크립트로이를 수행 할 수 있습니다. Chrome을 지금 설치할 수 없으므로 Firefox에서만 테스트했습니다. 유감 이군.

이것은 소스 코드입니다.

// ==UserScript==
// @name        Goodbye selections
// @namespace   tag: utils
// @include     $put_here_a_website_you'd_like_to_disable_selections$
// @include     $more_websites$
// @version     1
// @grant       none
// ==/UserScript==
(function() {
    var disableSelections = function() {
        document.getSelection = window.getSelection = function() {
            return { isCollapsed: true };
        };
    };
    var script = document.createElement ("script");
    script.appendChild (document.createTextNode ("(" + disableSelections + ")();"));
    (document.body || document.head || document.documentElement).appendChild (script);
})();

이 작업을 수행하려면 새로운 Greasemonkey / Tampermonkey 스크립트를 작성하고 @include지시문을 조정해야 합니다. 한 줄에 하나의 웹 사이트를 넣을 수 있으며 다음과 같이 수행해야합니다 @include http://bad.website.address/.

나는 당신이 링크 한 웹 사이트 모두에서 테스트했으며 아무런 문제없이 작동합니다. 그러나 Selection완벽하게 합법적 인 웹 사이트에서 s를 사용하기 때문에 문제가 발생할 수 있습니다 (예 : StackExchange 텍스트 상자를 사용하면 버튼을 클릭 할 때 기호를 삽입하여 캐럿 위치에 배치). 해당 사용자 스크립트는 문제가있는 웹 사이트에서만 가능합니다.

( //Greasemonkey / Tampermonkey 메뉴에서 사용자 스크립트를 작성하는 경우 시작하여 줄을 제거해야 할 수도 있습니다.)

사용자 스크립트에 대한 설명은 매우 간단합니다. 먼저, disableSelections기본 document.getSelectionwindow.getSelection함수를 단순히를 포함하는 객체를 반환하는 것으로 대체하는 명명 된 함수를 정의합니다 { isCollapsed: true }. 왜? ShareThis (JS 코드에서 확인)는 해당 함수를 호출하고 isCollapsed속성이 설정되어 있는지 확인합니다 true( 설정된 경우 "클립 보드 중독"을 중지합니다). 이와 같은 다른 웹 사이트는 해당 검사를 수행하지 않을 수도 있지만 Selection객체 의 합법적 기능을 호출하려고 할 때 오류가 발생 합니다.

그런 다음 본문 / 헤더 / 문서에 기능이 삽입되고 자동으로 실행됩니다. Javascript가 모든 기능을 (거의) 무시할 수 있다면 addEventListener이벤트를 복사 / 잘라 내기 / 붙여 넣기 할 때 아무것도하지 않기 위해 함수를 무시하지 않은 이유는 무엇입니까? 대답은 매우 간단합니다. 사용자 스크립트는 쉽게 예측할 수없는 시간에 실행됩니다. 즉, ShareThis Javascript를 사용자 스크립트 보다 먼저 로드 할 수 있으며 아무 것도 수행하지 않습니다. 대신 window.getSelection함수를 재정의하면 복사가 수행 될 때만 해당 함수가 호출 되므로 문제가 발생하지 않으며 텍스트를 복사 할 때 사용자 스크립트가 이미로드되었는지 100 % 확신합니다.

결론

실질적으로 쓸모없는 API를 사용할 수 없으므로 가장 깨끗하고 가장 좋은 솔루션은 분명히 첫 번째 솔루션입니다.

두 번째 것도 유효하지만 ShareThis 기능이 손실됩니다.

세 번째는 가장 "해킹 된"것이지만, 최후의 수단으로 작동 할 수 있습니다.


대단히 감사합니다! 이것은 우수하다. 이것이 어렵고 완벽한 해결책이 없다는 것은 부끄러운 일이지만 귀하의 답변은 현재 인터넷에서 제공되는 최상의 정보 인 것 같습니다. 현상금을 수여하게되어 매우 기쁘게 생각합니다.
Jess Riedel

그래, 그 문제가 나에게 영향을 미쳤 기 때문에 나는 약간의 연구를했다. 그건 그렇고 현상금에 감사드립니다-이것은 내 "신인"StackExchange 경험을 도울 것입니다!
Robertof

다시 : 첫 번째, 이것은 버튼을 클릭하여 텍스트를 복사 할 수있는 사이트를 차단합니까? 예, emojipedia.org/snowman . 경험적으로 Firefox에서는 그렇지 않습니다. 시원한. Re : 블로킹 ShareThis, 내 디버거는 하위 도메인 "l.sharethis.com"및 "ws.sharethis.com"에서로드되는 스크립트를 표시합니다. 따라서 유일한 완전한 치료법은 전체 ShareThis.com 도메인을 차단하는 것이므로 큰 손실은 아닙니다. 감사합니다 @Robertof!
콘래드 마이어

주의 : 클립 보드 이벤트를 비활성화하면 일부 사이트가 오작동 할 수 있습니다. 예를 들어, 검색에 붙여 넣을 때 불일치가 중단됩니다.
니콜라스

2

Chrome에서 "Kill Evil"확장명을 사용하여 이러한 의심스러운 작업을 차단할 수 있습니다.

https://chrome.google.com/webstore/detail/kill-evil/epieehnpcepgfiildhdklacomihpoldk

(편집)이 확장 프로그램은 페이스 북에 이상한 문제를 일으키는 것으로 보입니다.


우수한! 이 문제를 해결하기 위해 세 가지 확장 프로그램을 찾았습니다. 1. Tynt Blocker. 2. RightToCopy. 3. 악을 죽이십시오 (갈매기 감사합니다). Kill Evil은 phys.org에서 불쾌한 클립 보드 조작 문제를 해결하기 위해 노력한 사람입니다.
Dave Burton

1
@DaveBurton에 대해 걱정할 필요가 없습니다.이 확장으로 인해 많은 사이트가 다소 이상하게 동작하므로 필요할 때만 사용하도록 설정하십시오.
seagull

2
Kill Evil은 확장명을 원하지 않는 사이트 목록 (예 : "악의 허용"목록) 인 제외 목록 또는 "화이트리스트"를 지원합니다. 그것은 내가 원하는 것이 아니 었습니다. 특정 사이트 (phys.org)에서만 Kill Evil 만 활성화하고 싶습니다. 따라서이 까다로운 "부정적인 예견"정규식으로 끝나서 해당 사이트를 제외하고 Kill Evil을 비활성화했습니다 : ^ https? : \ / \ / (?! ([a-zA-Z0-9 \-\.] phys \ .org))
Dave Burton

건방진 약간의 정규 표현식을 좋아하십시오. 게시 해 주셔서 감사합니다.
갈매기

1

Firefox 애드온이지만 NoScript를 사용하면 신뢰할 수없는 목록을 설정하여 모든 웹 사이트에서 JavaScript를 차단할 수 있습니다.


2
답변 주셔서 감사합니다, 그러나 이것은 내가 필요한 것이 아닙니다. (사이트의 모든 곳에서 JavaScript를 깨뜨리지 않는 것을 원합니다.)보다 구체적으로 질문을 편집하겠습니다.
Jess Riedel

1

HTML이 표시되기 전에 자동으로 HTML을 수정하는 방법을 찾고 있다면 Greasemonkey가 도구이므로 수정을 수행하는 사용자 스크립트를 작성해야합니다.

Chrome의 그리스 몽키 스크립트 초보자 가이드 기사 에서 :

Chrome은 이제 기본적으로 사용자 스크립트를 지원합니다. 그것들을 사용하기 위해 추가 확장을 설치할 필요는 없습니다. 실제로 Chrome은 각 사용자 스크립트를 개별 애드온으로 취급하므로 쉽게 관리하고 제거 할 수 있습니다.

인터넷에서 Greasemonkey에 대한 많은 정보를 찾을 수 있으며 많은 튜토리얼을 포함합니다. 대부분은 Greasemonkey가 시작된 Firefox 용이지만 오늘날 Chrome에도 적용됩니다.

"더 읽기"를 담당하는 사이트는 sharethis.com입니다. 차단하면 중지됩니다. 보안 제품군이 설치되어 있으면이를 사용하여 사이트를 차단하십시오. 그렇지 않으면 hosts 파일을 사용하여 차단할 수 있습니다 .

sharethis.com귀하가 제공 한 두 웹 사이트에 Tynt를 공급하는 공급 업체입니다. Tynt는 웹 사이트가 아닌 기술인 것 같습니다. 물론 다른 제공 업체도있을 수 있지만, 이들이 드물기를 희망해야합니다.


알았어 고마워. 원칙적으로 그리스 몽키 스크립트를 적용하면 웹 사이트의 모든 내용을 수정할 수 있습니다. (적어도 JavaScript 문제는 ​​더 많은 JavaScript로 해결할 수 있다고 가정합니다.) 현상금에 대한이 답변을 수락하려면 JavaScript를 구현하는 방법에 대한 더 많은 정보가 필요합니다.
Jess Riedel

어떤 종류의 정보? wikiuserscripts.org를 포함한 가장 중요한 링크를 제공하는 wikipedia로 시작할 수 있습니다 .
harrymc

비 Tynt 구현이 작동하는 방식과 이에 대해 정확히 무엇을 수행 할 수 있는지 설명해보십시오. 지금까지 작성 한 내용은 일반적으로 JavaScript가 아니라이 복사 붙여 넣기 문제와 관련이 없습니다.
Jess Riedel

Tynt를 본 적이 없습니다 (NoScript를 사용한 이후 놀라운 일이 아닙니다). 링크 한 기사의 두 웹 사이트에서 하나는 사라지고 다른 하나는 더 이상 Tynt를 사용하지 않습니다. 예가 있습니까?
harrymc

Tynt 차단 확장 프로그램을 사용하는 경우에도이 동작이 계속 발생하는 두 개의 예제 웹 사이트를 추가하도록 편집했습니다.
Jess Riedel

1

Chromium에서 Absolute Enable Right Click & Copy 확장 프로그램을 사용 하여 성공했습니다 .

설치 한 후에는 환경 설정에서 확장이 활성화 된 사이트의 사용자 목록을 추가 할 수 있습니다. 또는 특정 페이지에 있고 클립 보드가 변경되는 것을 확인하면 도구 모음 단추를 통해이 확장을 즉석에서 활성화 할 수 있습니다 (자동으로 사이트가 목록에 추가됨).


0

또는 Chrome의 '일반 텍스트로 복사'확장 프로그램을 사용하십시오. 그런 다음 메뉴에 일반 복사 외에 추가 옵션이 있습니다. 그것은 Chrome에서 작동하고 아무것도 깨뜨리지 않는다는 단점이 있습니다. https://chrome.google.com/webstore/detail/copy-as-plain-text-amazin/mkkcgjeddgdnikkeoinjgbocghokolck?utm_source=chrome-app-launcher-info-dialog


이름에서 형식이 지정된 텍스트 복사가 중단된다고 생각하십니까? 때로는 일부 사람들에게 유용합니다.
콘래드 마이어
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.