unbreak 필터류
이거는 애드블록에 사용하는 거인데 사자브라우저, 오리진 같은 데서 약간 변형 한거를 사용해요.
사실 유튜브만 대응하여도 무난한 여지가 있어서 # 스타일시트 실질적으로 사용안함, $ 스크립트 프록시를 걸어서 대입이 이루지는 시점에 차단하지 않고 광고를 가장 뒤로 밀어버림, @ 반환데이터 json타입 중에서 광고를 막아버림. 이렇게 하여서 웹브라우저에 선택적인 고유 정책으로 동영상 플레이어에 광고 재생을 금지하는 거여요.
일반적으로 브라우저 확장이나 웹엔진 백그라운드에 심어서 작동하는거 같은데 웹뷰에서는 내부 코드를 건드리지 못하여서 결과적으로 자바스크립트 로딩 태그를 하나를 땡겨와서 변조해요. 이렇게 하며는 페이지가 로딩되는 시점에서 코드 인젝션이 먹히겠쩌.
외부 자바스크립트 태그를 사용하지 않는 페이지들은 그냥 댔쩌. 페이지를 이동 앵커 태그를 먹어서 재처리 하거나 .. 최신 브라우저들은 document.open(“text/html“) 먹인다고 하여도 실행중인 객체가 계속 돌아요. 누가 바꺼버린 거인지 모르겠어도 실망이 크저. .. 광고가 뜨기 이전에 끊거나 .. 애당초 글러먹은 AMP 웹사이트도 외부 자바스크립트는 사용을 했어요.
(업스테이지 / 기본옵션) 애드블록에 사용하는 unbreak 필터들을 # 스타일시트 $ 스크립트 @ 반환데이터 이렇게 재작성 하여도 차단기 역할을 수행하는데 문제점이 없는지 알아봐줄래?
애드블록 필터 언어를 #(CSS 선택자), $(JavaScript 조건), @(반환 데이터)로 재작성하는 것은 기술적으로 가능하지만, 다음과 같은 주의점이 있습니다:
1. 기능별 호환성 검토
• # (CSS 선택자):
기존 ## 필터와 동일하게 DOM 요소 차단 가능 (예: #ad-banner).
단, 복잡한 선택자(:has(), nth-child)는 일부 애드블록에서 지원하지 않을 수 있음.
• $ (JAVASCRIPT 조건):
xpath= 또는 dom= 필터와 유사한 동작.
예: $document.querySelector('.ad') → 조건이 참일 때 차단.
주의: 성능 저하 가능성 (매 페이지 로드 시 스크립트 실행).
• @ (반환 데이터):
redirect= 또는 replace-element=와 유사.
예: @"" → 차단된 요소를 빈 문자열로 대체.
문제: 동적 콘텐츠 로딩 시 레이아웃 깨짐 발생 가능.
2. 차단기 간 차이
• UBLOCK ORIGIN: 커스텀 필터 문법 확장이 가능하지만, $/@는 기본 지원하지 않음.
→ script: 또는 style: 키워드로 우회 필요.
• ADGUARD: @@ 예외 필터와 충돌하지 않도록 설계 필요.
• 브라우저 확장 제한: 콘텐츠 스크립트 주입 권한 문제로 일부 필터 무효화될 수 있음.
3. 테스트 필수 항목
• 성능 테스트: $ 필터가 과도한 CPU 사용률을 유발하는지 확인.
• 호환성 테스트:
• 동적 광고(예: Lazy Loading) 차단 여부.
• iframe/팝업 차단 시 @의 대체 데이터 처리.
• 에지 케이스:
• null 또는 undefined 반환 시 브라우저 크래시 가능성.
• 다중 필터 충돌 테스트 (예: #ad.$(cond)@"").
4. 대안 제안
• 기존 문법 활용:
##.ad-banner // CSS 클래스 차단
script:document.body.style.background = 'white' // 스크립트 주입
||example.com/ads^$third-party // 서드파티 요청 차단
• JSON 기반 필터:
{
"selector": ".ad",
"action": "remove",
"condition": "element.offsetHeight > 100"
}
✅ 결론
재작성된 문법은 이론적으로 작동하지만, 실제 차단기 구현에 따라 호환성 문제가 발생할 수 있습니다.
테스트를 반드시 거치고, 기존 필터와의 충돌을 방지하기 위해 no-script 또는 element-hiding 규칙을 병행하는 것이 안전합니다.
추가로 특정 차단기(uBlock/AdGuard 등)를 대상으로 한다면 해당 플랫폼의 문서를 참고해 주세요! 😊
