Beyond Filter Lists: Rethinking Ad Blocking with LLMs

💡
This research was first presented at the Ad-Filtering Dev Summit 2025 by Maxim Topciu this October. Check out this page for more content about AFDS.

One of the biggest obstacles that ad blockers have been consistently facing during their entire existence is deeply intertwined with their very nature — it’s the limitations of filter lists and the need to maintain them. This maintenance is, in most cases, manual and extremely painstaking.

In this research, I’ll explore how ad blocking works today and review previous attempts to automate it by applying machine learning. Then, I’ll move on to my own experiments of adding LLM to ad blocking, discuss where this approach is headed, and even show the working prototype browser extension that you can download and test for yourself.

And while I know you’re probably eager to hear about the LLM experiments and check out the extension — but first, let’s set the stage with some context.

How ad blocking works today

At the core of all ad blockers are filter lists, which are maintained by the community. These lists consist of thousands of rules that fall into two main categories: network rules and cosmetic rules.

📚
You can find out more about filtering rules in our Knowledge Base.

Network rules: The first line of defense

Actions: Block, redirect, or modify requests.
Example: ||evil-ads.com^ — this rule blocks evil-ads.com website and its subdomains.

Network rules block requests to third-party ad servers before content even reaches your browser, it’s a fast and efficient approach. These rules can block, redirect, or modify requests.

image1.png

But network rules can’t block everything. For example, some ads are served from the same domain as the content, so blocking them at the network level would break the site. That’s where cosmetic rules come in.

Cosmetic rules: Cleaning up the page

Actions: Use CSS selectors to hide unwanted elements directly on the page or apply custom styles.
Example: example.com##.ad-banner — hides elements with the class “ad-banner” on example.com)

CSS (Cascading Style Sheets) is a style sheet language that defines how HTML or XML documents are visually presented. It specifies how elements should appear on your device’s screen.

Cosmetic rules basically clean up leftover ad elements that simpler network rules can’t block.

image21.png

Beyond CSS: Scriptlet rules

Actions: Modify or disable specific script functionalities on the page.
Example: example.com#%#//scriptlet('abort-on-property-read', 'alert') — stops a script on example.com if it tries to access a specific browser feature like alert.

When CSS isn’t enough to deal with complex scripts — like ad reinjection — we use scriptlets. Scriptlets are small JavaScript snippets injected by ad blockers to neutralize unwanted behavior.

Scriptlets have become filter developers’ favorite tool because they solve problems CSS and network rules can’t.

The power and the limits

We have briefly seen how filter lists work. They’re powerful and work very well for known patterns, but they also have some limitations. They struggle with native advertising, require constant updates, and in Manifest v3 these updates are harder.

These limitations lead to a fundamental question: what if we could eliminate filter lists entirely? What if the ad blocker could decide by itself what to block?

Imagine — no filters, no updates, no chasing ad networks. No manual tweaks and no cat-and-mouse game. In the end, isn’t this what users naturally expect from ad blockers? “Install and forget,” enjoying the clean web without the need to pay any further attention to your ad blocker. And this is exactly what early machine learning experiments wanted to achieve.

And with this motivation in mind, let’s look at how companies and researchers tried using machine learning to solve these problems.

A brief history of machine learning in ad blocking

Let’s take a look back at various past attempts to replace filter lists with machine learning. It will help us understand why this hasn’t happened, at least not yet.

Project Moonshot by eyeo

Goal: Automate cosmetic filtering at scale.
Method:

  • Trained an ML model on page structure (DOM, HTML, CSS)
  • Used existing filter lists for labeling
  • Analyzed pages directly inside the browser extension

Project Moonshot from eyeo was presented at Ad-Filtering Dev Summit back in 2021. They trained a model on page structure using filter lists as labels. The model ran inside the browser extension to predict and hide ad elements. It worked but faced challenges: imbalanced data, deployment difficulties, and constant retraining needs.

Key idea: Decisions based on page structure, not images.
Result: Predicted and hid ad elements, complementing network blocking.
Challenges: Data imbalance, deployment friction, and constant retraining.

AdGraph by Brave

Goal: Block ads and trackers in real-time.
Method:

  • Built a graph connecting all page activities (DOM, network, JavaScript)
  • Classified content based on its context within the graph

AdGraph by Brave

Another machine learning project, AdGraph, was developed by Brave Browser and introduced back in 2019, also at AFDS. They built a graph tracking how everything on a page connects — DOM, network, JavaScript — and then classified resources based on context.

AdGraph achieved high accuracy by tracing scripts back to ad servers even with random names. But it required deep browser integration and constant maintenance.

Key idea: Decisions based on causality, not just static URL patterns.
Result: Very high accuracy (~95–98%) and robust against obfuscation.
Challenges: Required deep browser integration and constant maintenance.

PERCIVAL by Brave

Goal: Block ad images in real time.
Method:

  • Used a compact neural network (CNN) to classify images
  • Embedded it directly in the browser’s image rendering pipeline

PERCIVAL by Brave

In 2020, Brave presented another machine learning approach called PERCIVAL, which focused on blocking ad images. They embedded a compact neural network directly in the browser’s rendering pipeline to classify images as they load. The results were impressive: they achieved 97% accuracy by analyzing image content directly. But it also had its limitations — it was vulnerable to adversarial images and only worked for image ads.

Key Idea: Analyze an image’s visual content, not just its URL or metadata.
Result: ~97% accuracy with low rendering overhead.
Challenges: Vulnerable to adversarial images; limited to image-based ads only.

AutoFR (academic research)

Goal: Automatically generate filter rules from scratch.
Method:

  • Used reinforcement learning (a trial-and-error system) to test rules
  • Analyzed page content to avoid breaking the site

Beyond just industry efforts, academic researchers also joined the search for better solutions. One interesting project was AutoFR, which aimed to automatically generate filter rules.

AutoFR was presented by Hieu Van Le at AFDS 2022 and AFDS 2023.

It generates URL patterns and CSS selectors, tests them, and learns from results while avoiding site breakage. And the results were quite impressive: AutoFR achieved 86% effectiveness (compared to EasyList), with rules generated in minutes.

Key idea: Automated rule generation with site breakage awareness.
Result: ~86% blocking effectiveness; rules generated in minutes.

SINBAD (academic research)

Goal: Detect and pinpoint site breakage caused by ad blocking.
Method:

  • Used “web saliency” to identify important visual elements
  • Compared page versions with and without ad blocker to find what broke

SINBAD algorithm

Another academic project was SINBAD. It focused on detecting when filter rules break websites. This project was valuable because site breakage is one of the main reasons why users leave ad blockers. It was presented at AFDS 2023 by Sandra Siby from Imperial College London (at that time).

By analyzing size, position, and contrast it identifies visually prominent elements, like headlines and buttons, then tests them for breakage. SINBAD achieved high accuracy in detecting breakage, with specific reports showing exactly what broke and which rules caused it.

Key idea: Focus on user-visible impact to find and fix issues faster.
Result: Higher accuracy in detecting breakage with specific, actionable reports.

Summary: Why ML didn’t take over

So we’ve seen all these experiments and research projects. But here’s the thing — despite all this work, none of these machine learning-based tools gained widespread adoption. So it would be logical to ask: why hasn’t machine learning replaced filters?

There are several reasons:

  • High Bar: Human-curated filter lists are extremely effective and mature. To match them in effectiveness is not a simple task.
  • High Cost: Creating and maintaining large, high-quality datasets is expensive, while most of the filter lists are maintained by the community for free.
  • Evasion: Specialized models can be vulnerable to adversarial attacks.

So, as it turned out, building specialized models from scratch is slow, expensive, and inflexible. This is why the ML approach hasn’t taken off so far, and we’re still relying on good old filter lists. But is it about to change?

Enter LLMs: Big, expensive… But different

And here arrive Large Language Models (LLMs) and start changing the world. Is it possible they can change ad blocking too? Let’s explore how LLMs can be used for ad blocking in browser extensions. But first, let me quickly go through some key characteristics that define LLMs.

Rethinking blocking with LLMs: The power of rapid prototyping

Large Language Models (LLMs) are still a recent development, but their progress has been remarkably rapid. They’re now widely accessible through APIs, allowing developers to integrate LLM-based capabilities into their products with minimal effort. Many models come in both cloud-based and locally deployed versions, giving users flexibility depending on their needs.

The capabilities of LLMs span from generating high-quality text to analyzing data, creating images and videos, writing code, and supporting complex workflows. This makes them valuable across many industries and in demand by millions of people. But it’s not all sunshine and rainbows — at the same time, running or accessing these models can be costly, especially at scale, which is a real problem of adopting LLMs in many areas.

But what’s most important is that LLMs allow us to test ideas very quickly. So let me finally show you my experiments with applying LLMs to ad blocking in browser extensions.

Experiment 1. Blocking by meaning

The idea of my first experiment was to see if an LLM could distinguish between different content types on the fly.

The idea:

  1. Blur posts immediately
  2. LLM analyzes their content
  3. Unblurs if it’s safe or keeps blurred if not

I decided to test it out on the X’s feed. I was taking each post’s code and sending it to an LLM, asking if it was about politics. Since LLMs are a bit slow, I blurred all posts immediately, analyzed them with the help of an LLM, and then unblurred if they were safe.

First method using LLMs

And it worked!

Which proves that a new, semantic way of filtering content is possible. And I prototyped this entire extension in just a few hours — something that would have taken months with traditional machine learning.

Let me show you a quick demo:

Here you can see how it works. Post appears, blurs immediately, LLM analyzes it, then unblurs it if safe or keeps it hidden if not. Users can manually reveal any blurred posts.

While I was experimenting on X, I noticed that some posts weren’t being blocked because they were mostly images. This led me to the second experiment.

Experiment 2. Blocking by visual meaning

In this experiment, I am going to teach the ad blocker to see.

The idea:

  1. Blur posts immediately
  2. Vision LLM analyzes the screenshot with the post
  3. Unblurs if it’s safe or keeps blurred if not

Posts often have minimal amount of text. Here’s an example of exactly this problem — a Facebook post with almost no text, just an image.

An ad with almost no text

But it’s not just about posts without text. Even when text is present, websites hide it using obfuscated HTML. For example, look at this screenshot from the developer tools — you can see the “Sponsored” label is hidden in randomized HTML.

‘Sponsored’ label hidden in randomized HTML

This is why we must stop analyzing the code and start analyzing what users actually see. So the idea is similar to the first experiment, but now we analyze not the code behind the element, but what users actually see on the page. So let’s take a screenshot of the post, send it to a vision-capable LLM, and ask if it’s about politics.

It worked again! The core idea was prototyped in just an hour or so. But then came the real challenge — taking screenshots through a browser extension turned out to be a nightmare.

Let me explain why. One approach I tried was the Debugger API. The Debugger API allows you to capture any element, even outside the viewport (the area currently visible on the screen), but it causes page to flicker, which can be annoying for users. See the demo below:

image16.gif

The other approach was using chrome.tabs.captureVisibleTab — the standard Chrome extension API for screenshots. This one causes no flickering. However, it can only capture what’s currently visible in the viewport, and Chrome limits how many screenshots you can take per second.

Screenshot-taking rate limited by Chrome

So if you have multiple elements to analyze, you have to wait, and you can only check posts that are already on screen.

These experiments showed that LLMs can analyze posts and decide whether to block them. Does this mean we can replace filter lists entirely? The answer is no — we still need them to know what to check. A webpage has thousands of elements, and analyzing all of them would be slow and expensive.

Experiment 3. Extending filter lists: a new primitive

If we still need to know which elements to check, the logical step is to connect LLMs with filter lists and generalize the power of LLMs into a reusable tool for filter list authors. But the problem here is that writing a new custom extension for every semantic task is not scalable — we need a more generic solution.

The inspiration: Extended CSS pseudo-class, :contains.
The question: What if we could check for meaning, not just text?
The result: Three new experimental pseudo-classes:

selector:contains-meaning-embedding('criteria')
selector:contains-meaning-prompt('criteria')
selector:contains-meaning-vision('criteria')

To create this generic solution, I took inspiration from AdGuard’s Extended CSS library. Extended CSS is a JavaScript library that adds additional pseudo-classes to extend what’s possible beyond native CSS.

It has a :contains() pseudo-class that hides elements with specific text. I decided we could upgrade this approach to check semantic meaning instead of just keywords. This led to three prototypes: embedding, prompt, and vision.

:contains-meaning-embedding

How it works: Compare similarities between text and criteria
Pros: Very fast and cheap
Cons: Requires setting thresholds and struggles with multiple languages

Let me start with :contains-meaning-embedding. This rule uses embedding models, which turn text into numbers that represent meaning. We calculate the similarity between the element’s text and the criteria, and decide whether they match each other. The advantage is it’s fast and cheap with caching. The downside is it needs threshold tuning and might struggle with multiple languages.

:contains-meaning-prompt

How it works: Ask LLM if content matches criteria
Pros: More accurate, no thresholds, language-agnostic
Cons: Slower and more expensive

Next is :contains-meaning-prompt. These rules are using a simple prompt API, where we just ask whether the content of some element matches the criteria or not. This is more accurate, requires no thresholds, and works across languages. The downside is it’s slower and more expensive than embeddings.

:contains-meaning-vision

How it works: Ask LLM if screenshot matches criteria
Pros: Catches things text and embeddings miss
Cons: Complex UX

And the last method is :contains-meaning-vision. It takes screenshots of selected elements and asks vision-capable LLMs whether the screenshot matches the criteria. After that, it works the same way as :contains-meaning-prompt. The key advantage to this approach is that it can detect visual content that text-based methods can’t see. The downside is complex UX with potential screen flickering.

":contains-meaning-vision" method illustrated

So these three rules can provide filter developers with a flexible tool. They would be able to choose: embedding speed, prompt accuracy, or vision insight. To mitigate the analysis delay, one solution is to blur the elements first and then either un-blur them or keep them hidden.

Performance & cost analysis

Now that we have these three prototypes, the most important question arises: are they practical? Can this actually work in production? To answer this, I analyzed the performance and cost for each approach.

Embeddings

Let me start with embeddings. Initially, I started the extension with OpenAI’s cloud model, and to be honest, the results were not great. But then I decided to try a small local model, and the outcome surprised me. It was faster, completely free, and achieved 100% accuracy on my tests. This shows that for certain tasks, small local models can actually outperform big cloud APIs.

Embeddings model accuracy assessment

Prompts

Next, let’s look at prompts. Here, the story is different. The cloud APIs performed best, with some achieving 100% accuracy in under a second. Some took over four seconds, which is far too slow for a good user experience. And in this case, the local models just couldn’t keep up with cloud accuracy.

Prompts model accuracy assessment

Vision

And finally, let’s talk about vision. This is where things get really interesting. The accuracy is very high — even local models perform well. Vision is often the most accurate method. Its key advantage is that it works on images, not text, catching ads that other methods miss. However, there’s a major trade-off: latency. A 10 to 15 second delay is not practical for real-time blocking.

Vision model accuracy assessment

Methods comparison

When comparing all methods, vision offers great accuracy, but with very high latency. Prompts approach provides a good balance of speed and accuracy, especially with cloud APIs. And local embeddings approach was a pleasant surprise — very fast and effective, but only for specific tasks. In the end, each method has its strengths and weaknesses.

All three methods compared

The future of this approach

Vision: Too slow now, improving over time
Embeddings: Impractical in extensions, would be ideal if built into browsers
Local LLM prompts: Experimental, needs better accuracy

What does this mean for the future? In my opinion, vision is simply too slow for now. Embeddings aren’t very practical if used in browser extensions, but they could work well as a built-in browser API. And local LLMs prompts are the most promising path for a real, shippable experiment with Chrome’s Prompt API. There’s also the challenge of improving user experience as the current approach with blurring elements isn’t ideal. With faster models we could reduce the blur time, or maybe it is possible to come up with a completely different solution.

What have we learned? First, LLMs allow us to move beyond simple pattern matching and actually understand the meaning of web content. This opens up a completely new, semantic approach to filtering. And second, LLMs give us rapid prototyping. Ideas that used to take months of engineering can now be tested in a matter of hours. While there are still practical challenges to solve, this new approach allows us to rethink what’s possible in the world of content filtering.

I hope this has given you a new way to think about content filtering. You can try out everything I talked about in this article yourself — just download the AI AdBlocker from Chrome Store.

The full source code is also available on GitHub. Feel free to reach out if you have any questions or suggestions!

喜歡這篇文章嗎?
AdGuard DNS AdGuard Mail AdGuard Wallet
AdGuard DNS AdGuard Mail AdGuard Wallet
AdGuard Windows 版主畫面
AdGuard Windows 版的防護畫面,顯示防護功能與設定。
AdGuard Windows 版的統計畫面,顯示已封鎖的廣告與追蹤器資料。
AdGuard Windows 版的應用程式管理畫面,顯示裝置上已安裝應用程式的防護管理選項
21,755 21755 使用者評論
極好的!

AdGuard Windows 版:PC 廣告阻擋器

Windows 版 AdGuard 不只是廣告封鎖程式,它是集成所有讓您享受最佳網路體驗的主要功能的多用途工具。其可封鎖廣告和危險網站,加速網頁載入速度,並且保護兒童的線上安全。
透過下載該程式,您接受授權協定的條款
Microsoft Store
透過下載該程式,您接受授權協定的條款
AdGuard for Windows 8.0 版本,14 天的試用期
AdGuard Mac 版主畫面
AdGuard Mac 版的隱身模式介面
21,755 21755 使用者評論
極好的!

AdGuard Mac 版:全系統廣告攔截器

Mac 版 AdGuard 是一款獨一無二的專為 MacOS 設計的廣告封鎖程式。除了保護使用者免受瀏覽器和應用程式裡惱人廣告的侵擾外,應用程式還能保護使用者免受追蹤、網路釣魚和詐騙。
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard for Mac 2.19 版本,14 天的試用期
AdGuard Android 版主畫面
AdGuard Android 版的追蹤保護畫面
AdGuard Android 版的應用程式管理畫面,顯示裝置上已安裝應用程式的防護管理選項
AdGuard Android 版的統計畫面,顯示已封鎖的廣告與追蹤器資料。
AdGuard Android 版隱私瀏覽器主畫面
下載 AdGuard Android 版的 QR 碼
21,755 21755 使用者評論
極好的!

Android 版 AdGuard —廣告封鎖器

在所有瀏覽器、遊戲及其他應用中封鎖廣告和追蹤器。保護個人隱私,並讓您控制應用如何使用網路。通過 APK 安裝。
透過下載該程式,您接受授權協定的條款
閱讀更多
掃描下載
可以使用任何一款 QR 碼閱讀器
AdGuard for Android 4.14 版本,14 天的試用期
AdGuard iOS 版主畫面
AdGuard iOS 版的防護畫面,顯示防護功能與設定。
AdGuard iOS 版的統計畫面,顯示已封鎖的廣告與追蹤器資料。
下載 AdGuard iOS 版的 QR 碼
21,755 21755 使用者評論
極好的!

iOS 版 AdGuard —廣告封鎖器

適用於 iPhone 和 iPad 的最佳 iOS 廣告攔截器。AdGuard 可在 Safari 中消除各種廣告與追蹤器,並在 DNS 層級保護您在所有應用程式中的隱私。
透過下載該程式,您接受授權協定的條款
閱讀更多
掃描下載
可以使用任何一款 QR 碼閱讀器
AdGuard for iOS 版本 4.5
AdGuard 內容阻擋器主畫面
AdGuard 內容阻擋器的過濾器畫面
AdGuard 內容阻擋器的設定畫面
21,755 21755 使用者評論
極好的!

AdGuard 內容阻擋器

AdGuard 內容阻擋器可以全面阻止所有支援內容封鎖技術的行動瀏覽器中的廣告,目前包括 Samsung Internet 瀏覽器和 Yandex 瀏覽器。雖然其功能相比 Android 版 AdGuard 有所限制,但它完全免費、安裝簡單且封鎖高效。
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard 內容阻擋器 版本 2.8
AdGuard 瀏覽器擴充功能的主畫面
AdGuard 瀏覽器擴充功能的追蹤防護畫面
21,755 21755 使用者評論
極好的!

AdGuard 瀏覽器擴充功能

AdGuard 是有效地封鎖於全部網頁上的所有類型廣告之最快的和最輕量的廣告封鎖擴充功能!為您使用的瀏覽器選擇 AdGuard,然後取得無廣告的、快速的和安全的瀏覽。
安裝
透過下載該程式,您接受授權協定的條款
安裝
透過下載該程式,您接受授權協定的條款
安裝
透過下載該程式,您接受授權協定的條款
安裝
透過下載該程式,您接受授權協定的條款
安裝
透過下載該程式,您接受授權協定的條款
閱讀更多
安裝
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard 瀏覽器擴充功能 版本 5.5
AdGuard 助理主畫面
21,755 21755 使用者評論
極好的!

AdGuard 助理

AdGuard 桌面應用的配套瀏覽器擴充套件。支援封鎖網頁特定內容、將網站新增至允許清單,並直接從瀏覽器提交報告。
AdGuard 助理 版本 1.4
21,755 21755 使用者評論
極好的!

AdGuard Home

AdGuard Home 是一款以網路為基礎的解決方案,用於封鎖廣告和追蹤器。只需在您的路由器上安裝一次,即可涵蓋家庭網路上的所有裝置——無需另外安裝客戶端軟體。這對於經常威脅您隱私的各類物聯網裝置來說尤為重要。
AdGuard Home 版本 0.107
AdGuard Pro iOS 版主畫面
AdGuard Pro iOS 版的保護畫面,顯示保護功能與設定
AdGuard Pro iOS 版的統計畫面,顯示已封鎖的廣告和追蹤器資料
21,755 21755 使用者評論
極好的!

AdGuard Pro iOS 版

AdGuard Pro iOS 版預置全部進階廣告封鎖防護功能,提供與 AdGuard iOS 版付費版完全相同的工具集。其卓越之處在於:不僅能精準封鎖 Safari 瀏覽器內的廣告,更支援自訂的 DNS 設定以精細化防護策略。該產品具備跨瀏覽器與應用的全方位廣告封鎖能力,有效防護兒童遠離不良內容,並全面保障個人資料安全。
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard Pro iOS 版 版本 4.5
AdGuard Mini Mac 版主畫面
AdGuard Mini Mac 版的 Safari 保護畫面
AdGuard Mini Mac 版的建立規則畫面
21,755 21755 使用者評論
極好的!

AdGuard Mini Mac 版:Safari 廣告封鎖程式

AdGuard Mini Mac 版是一款強大的 Safari 廣告攔截程式。這款輕量級應用不僅能移除廣告、封鎖追蹤器,還能顯著提升網頁載入速度。它讓您在 Safari 中專注瀏覽、免受干擾,同時確保個人資料安全私密。
安裝
透過下載該程式,您接受授權協定的條款
閱讀更多
AdGuard Mini Mac 版 版本 2.3
開啟防護狀態下的 AdGuard Android TV 版本主畫面
AdGuard Android TV 版本的廣告封鎖畫面,顯示其功能與設定
AdGuard Android TV 版本的設定畫面
AdGuard Android TV 版本的應用程式管理畫面,顯示已封鎖廣告與追蹤器的應用程式。
21,755 21755 使用者評論
極好的!

AdGuard Android TV 版

Android TV 版 AdGuard 是唯一一款能封鎖廣告、保護隱私並充當智慧電視防火墻的應用程式。取得網路威脅警告,使用安全 DNS,並受益於加密流量。有了安全性和零廣告的使用體驗,使用者就可以盡情享受最喜愛的節目了!
AdGuard Android TV 版 4.14 版本,14 天的試用期
AdGuard 吉祥物 Agnar 懷抱 Linux 的企鵝吉祥物
21,755 21755 使用者評論
極好的!

AdGuard Linux 版

AdGuard Linux 版是世界上第一個系統級廣告封鎖器。封鎖廣告和追蹤器,選擇預設過濾器或新增自己的過濾器。管理流程通過命令行介面實現。
AdGuard Linux 版 版本 1.4
21,755 21755 使用者評論
極好的!

AdGuard Temp Mail

免費的臨時電子郵件地址產生器,保持匿名性並保護個人隱私。您的主收件匣中沒有垃圾郵件!
21,755 21755 使用者評論
極好的!

AdGuard DNS

AdGuard DNS 是一種不需要安裝任何的應用程式而封鎖網際網路廣告之極簡單的方式。它易於使用,完全地免費,被輕易地於任何的裝置上設置,並向您提供封鎖廣告、計數器、惡意網站和成人內容之最少必要的功能。
21,755 21755 使用者評論
極好的!

AdGuard Mail

保護個人身份,避免垃圾郵件,並使用我們的別名和臨時電子郵件地址保護收件箱。享受我們的免費電子信箱轉發服務和適用於所有作業系統的應用程式使用體驗。
21,755 21755 使用者評論
極好的!

AdGuard Wallet

一個安全且私密的加密貨幣錢包,讓您完全掌控資產。管理多個錢包,探索上千種加密貨幣以儲存、傳送及兌換。
已開始下載 AdGuard 點擊箭頭所指示的檔案開始安裝 AdGuard。 選擇"開啟"並點擊"確定",然後等待該檔案被下載。在被打開的視窗中,拖曳 AdGuard 圖像到"應用程式"檔案夾中。感謝您選擇 AdGuard! 選擇"開啟"並點擊"確定",然後等待該檔案被下載。在被打開的視窗中,點擊"安裝"。感謝您選擇 AdGuard!
在行動裝置上安裝 AdGuard