List-KR / NamuLink

나무위키에만 있는 복잡한 네이버 파워링크 광고를 제거하는 유저스크립트
MIT License
31 stars 1 forks source link

AD: namu.wiki #14

Closed relaxedbrownie closed 1 year ago

relaxedbrownie commented 1 year ago

URL

https://namu.wiki/

FILTERS

NamuLink

Browser

Apple Safari

Operating System

Apple iOS

Ad-Blocker

AdGuard for iOS/iOS Pro

Userscript Manager

(Other)

USERSCRIPT

iPhone Safari에서 Userscripts 앱으로 NamuLink를 사용 중이에요. 얼마 전까지는 아무 문제없이 파워링크가 잘 차단되다가 오늘 오랜만에 들어가봤는데 차단이 되기는 되는데 애매하게 차단되네요.

아무 문서나 들어갔을 때 처음에는 차단되는데 그 페이지에서 새로 고침을 하면 파워링크가 나타납니다. 다른 페이지에서 진입할 때만 파워링크가 제거돼요. 2주 전에 제가 이것저것 테스트해봤을 땐 확실히 안 이랬거든요. 그때는 새로 고침을 하더라도 잘 차단됐었어요.

microShield도 같은 문제가 생겼는지 테스트해봤는데 얘는 정상이네요.

Comment

No response

piquark6046 commented 1 year ago

Apple Safari만의 문제로 보이네요. AdGuard for Android에서는 잘 숨겨집니다.

piquark6046 commented 1 year ago

긴 나무위키 문서에서 랜덤하게 EventTarget.prototype.addEventListener 아닌 다른 방법으로 파워링크 광고 요소를 수정하는 듯 하네요. Apple의 폐쇄성 및 macOS이 없어서 디버깅에 시간이 걸릴 듯합니다.

relaxedbrownie commented 1 year ago

알겠습니다!

piquark6046 commented 1 year ago

Apple Mac mini을 구입한 뒤에 디버깅하겠습니다.

piquark6046 commented 1 year ago

Apple Mac mini M2가 도착했습니다.

piquark6046 commented 1 year ago

Screenshot 2023-07-05 at 10 41 20 PM

2개월 전에는 됐지만 지금은 구현이 안됩니다.

piquark6046 commented 1 year ago

다시 해보니 되네요.

piquark6046 commented 1 year ago

아마도 NamuLink 문제는 아닌 것 같고 우만레가 관련 프론트엔드를 수정한 것 같지는 않습니다. 어떤 때는 잘 작동하고 어떤 때는 감지를 못하고 있는 것을 보아서 Safari (또는 그 엔진인 WebKit)나 Userscripts 앱의 버그같습니다.

자세히 설명하자면...

https://github.com/List-KR/NamuLink/assets/98787049/fd3e068f-670b-4771-bd23-53e656551189

위 영상에서는 로그만 보이실 땐데요. NamuLink: EventTarget.prototype.addEventListener handler:가 새로 뜨면, 그 때가 나무위키 문서를 새로고침하는 때로 이 문제가 발생하는 시점입니다. 반면, NamuLink: Uint8Array handler:가 새로 뜨면, 이 때는 어떤 나무위키 문서를 보다가 다른 문서로 이동했을 때로 브라우저가 HTML 문서를 새로 요청하지 않을 시점입니다.

이를 확인하시면, amuLink: EventTarget.prototype.addEventListener handler:가 어떤 때는 뜨고 어떤 때를 안 뜨는 것을 보실 수 있습니다. 뜨지 않았어도 파워링크 광고에 관련 click 이벤트와 함께 이벤트가 등록되는 합니다.

CC: @seia-soto 이에 의견을 들을 수 있을까요?

seia-soto commented 1 year ago

UserScript 앱에서는 document-start 시점에 유저스크립트가 삽입되지 않고 UserScripts 자체 스크립트에서 하위 스크립트를 실행할지 말지 결정한 후 추가로 스크립트를 로드합니다. 그래서 웹 사이트 초기 로드 이후 스크립트가 실행될 수 있는 가능성을 염두에 두고 개발해야 합니다.

relaxedbrownie commented 1 year ago

그럼 Userscripts 앱에서 해결해줘야 하는 문제인 거고 NamuLink에선 딱히 방법이 없는 거죠? 혹시 대체 가능한 앱은 있나요? NamuLink를 사용할 수 있는 앱은 Userscripts가 유일한가요?

piquark6046 commented 1 year ago

https://github.com/List-KR/NamuLink/issues/14#issuecomment-1630226265

테스트는 안해봤는데, @inject-into page를 추가하면 될 것 같아서요. 안되면, EventTarget.prototype.addEventListener 말고 다른 방법을 써야 할 거예요.

relaxedbrownie commented 1 year ago

아 ㅎㅎ 앱 쪽에서 조치를 안 해줘도 고칠 방법이 있나 보네요. 제가 이해하기 어려운 분야라 ㅎㅎ 알겠습니다. 감사합니다.

piquark6046 commented 1 year ago

고쳤습니다. 안되면 말씀해주세요.

relaxedbrownie commented 1 year ago

그대로예요. 근데 유저스크립트에서 나무링크 수동으로 업데이트해줘야 하지 않나요? 전에는 보니까 업데이트하라고 나오던데 이번엔 업데이트도 안 떴어요. 그래서 적용이 안 된 건지 모르겠네요.

piquark6046 commented 1 year ago

https://github.com/List-KR/NamuLink/raw/main/NamuLink.user.js 이 URL로 다시 시도해주세요.

relaxedbrownie commented 1 year ago

고쳐졌어요! 감사합니다.