WBlock:一款适用于 Safari 的新型广告拦截器
WBlock: A New Ad-Blocker for Safari

原始链接: https://github.com/0xCUB3/wBlock

wBlock 是一款适用于 macOS、iOS 和 iPadOS 的免费开源 Safari 内容拦截器,旨在高效拦截广告和跟踪器。它利用 Safari 的原生声明式内容拦截 API,内存占用量极低,约为 40MB。 主要功能包括支持多达 75 万条拦截规则,涵盖五个扩展,并使用 Protocol Buffers 和 LZ4 压缩存储以提高速度和效率。用户可以导入兼容 AdGuard 的自定义过滤列表,管理白名单,并受益于可配置的自动更新。独特的“元素清除器”(仅限 macOS)允许永久移除页面元素。 wBlock 还拥有强大的 userscript 引擎,实现了 Greasemonkey API,从而实现高级自定义,例如移除付费墙。它优先考虑性能,采用异步 I/O 和高效的过滤器更新,并符合 WCAG 2.1 AA 等可访问性标准。

## wBlock:一款新的 Safari 广告拦截器 - 摘要 一款新的 Safari 广告拦截器 **wBlock** 已经发布,并在 Hacker News 上引发讨论。它旨在与 Wipr、AdGuard 和 uBlock Origin Lite 等现有选项竞争,支持类似的功能,包括自定义阻止列表和用户脚本。 用户对 Wipr 2 的体验褒贬不一,一些人认为它不如 uBlock Lite 等替代品有效。 许多评论者强调使用网络级拦截器(Pi-hole/Adguard Home)*和*浏览器扩展(uBlock Origin Lite/wBlock)相结合,以实现全面的广告拦截。 wBlock 的不同之处在于可能使用更少的 RAM 并移除整个广告元素容器,但有些人质疑这些差异的重要性。它现在已在 iOS App Store 上提供,解决了之前需要 TestFlight 安装的要求。一个关键的讨论点是 Safari 上的广告拦截格局不断演变,尤其是在 iOS 17 和即将到来的 iOS 18.6 中,以及声明式阻止和 JavaScript 注入方法之间的差异。
相关文章

原文

A Safari content blocker for macOS, iOS, and iPadOS utilizing declarative content blocking rules.
Supports 750,000 rules across 5 extensions with Protocol Buffer storage and LZ4 compression.


Note

Looking for a detailed comparison? Check out my comparison guide to see how wBlock stacks up against other Safari content blockers.


  • 750,000 rule capacity utilizing 5 Safari content blocking extensions per platform (150k rules each)
  • ~40 MB RAM footprint at idle via Safari's native content blocking API
  • Protocol Buffers serialization with LZ4 compression for filter storage
  • Off-thread I/O operations with streaming serialization to minimize main thread blocking
  • HTTP conditional requests (If-Modified-Since/ETag) for efficient filter update detection
  • Element Zapper (macOS only) generates persistent CSS selectors for manual element removal
  • Userscript engine implements Greasemonkey API (GM_getValue, GM_setValue, GM_xmlhttpRequest)
  • Custom filter list ingestion supports AdGuard-syntax blocklists via URL import
  • Category-based filter organization with per-list toggle and automatic rule distribution
  • Filter list validation with automatic disabling on Safari's 150k rule limit per extension
  • Network request blocking via declarative content blocking rules (advertisements, trackers)
  • Cookie and local storage filtering through Safari content blocker rule actions
  • CSS injection for cosmetic filtering and element hiding
  • Script blocking for unwanted software and JavaScript execution
  • Pop-up and redirect prevention using Safari content blocking patterns

Configuration & Management

  • Configurable auto-update intervals from 1 hour to 7 days with background refresh
  • Per-site blocking controls through Safari's content blocker enable/disable API
  • Whitelist management for trusted domains with Safari extension state persistence
  • Regional filter support with preset lists for language-specific content blocking
  • Filter compilation monitoring with real-time rule count and compilation status
  • Background update notifications (optional) for filter list refresh events




Userscript Management

Userscript Management
Manage paywalls, YouTube Dislikes, and more

Settings

Settings & Customization
Configure auto-updates, notifications, and preferences

iOS

iOS Interface
Full-featured blocking on iPhone and iPad




Core Architecture

  • Protocol Buffers (libprotobuf) with LZ4 compression for filter serialization
  • Asynchronous I/O with Swift concurrency (async/await, Task, Actor isolation)
  • Streaming serialization to disk minimizes peak memory usage during compilation
  • 5 Safari content blocking extensions per platform (maximum Safari API capacity)
  • SafariServices framework integration for declarative content blocking

Dependencies & Standards

  • SafariConverterLib v4.0.4 for AdGuard to Safari rule conversion
  • AdGuard Scriptlets v2.2.9 for advanced blocking techniques
  • Swift 5.9+ with strict concurrency checking enabled
  • WCAG 2.1 AA compliance with full VoiceOver and Dynamic Type support
  • SwiftProtobuf for cross-platform filter storage format


wBlock is free and open-source software. Financial contributions support ongoing development and maintenance:





How does wBlock compare to other ad blockers?
Check out our comparison guide vs uBlock Origin Lite, AdGuard, and Wipr.
Can I use my own filter lists?
Yes! wBlock supports any AdGuard-compatible filter list. Add the URL in Custom Filter Lists.
Does wBlock slow down Safari?
No. wBlock uses Safari's native declarative content blocking API, which processes rules in a separate process. Memory overhead is ~40 MB at idle with no measurable impact on page load times.
Do userscripts work on iOS?
Yes. The userscript engine implements the Greasemonkey API (GM_getValue, GM_setValue, GM_xmlhttpRequest, GM_addStyle) on both iOS and macOS via Safari Web Extensions.
How often do filters update?
Auto-update intervals are configurable from 1 hour to 7 days, or manually triggered. Updates use HTTP conditional requests (If-Modified-Since/ETag headers) to minimize bandwidth usage.
Is the element zapper available on iOS?
Not yet.



联系我们 contact @ memedata.com