Skip to content

About

A collection of mobile ad countermeasures for bylassing splash ads, such as shake-to-open redirects, ad-triggered navigation, and related intrusive advertising behaviors.

Resources

Contributing

Stars

62 stars

Watchers

0 watching

Forks

Repository files navigation

🛡️ Splash Ads Countermeasures

中文 English

Splash ads, “shake-to-open” redirects, ads that suddenly launch Taobao or JD… what can you actually do about them?

This project collects publicly documented mobile advertising defenses. Whether you are dealing with a splash ad, a shake-triggered redirect, or an ad that automatically opens another app, you can start from the problem you see and explore the available options.

Think of it as a guide to mobile advertising defenses: start with the problem you are facing, then see what options are available, what they require, and what their limitations are.

Note

This project only organizes and cross-checks public information. It does not guarantee the safety, effectiveness, or compatibility of any defense. For defenses involving Accessibility, VPN/DNS, Root, LSPosed/Xposed, re-signing, or similar capabilities, use trusted sources only and understand the relevant permissions and risks.

Last major verification pass: 2026-09-13

📄 Original paper

Read the original paper: Can We Stop The Ads? Taxonomy and Characterization of Smartphone Splash Ads and Existing Countermeasures (PDF).

If you use this work in your research, please cite:

@article{zhang2026can,
  title={Can We Stop The Ads? Taxonomy and Characterization of Smartphone Splash Ads and Existing Countermeasures},
  author={Zhang, Shuhao and Liu, Xinyu and Shao, Ziyu and Yang, Yuqing and Long, Yan},
  journal={arXiv preprint arXiv:2609.17316},
  year={2026}
}

🚀 Where should I start?

What are you dealing with? Start here
⏭️ You have to wait through a splash ad whenever you open an app Automatically skip splash ads
📳 A slight movement sends you to Taobao, JD, or another app Stop “shake / twist” redirects
🚫 You want to block ad requests or modify known ad responses/resources Block or modify ad resources
🔗 The ad can stay visible, but you do not want it opening another app Prevent ad-triggered navigation
↩️ Another app has already opened and you want to return automatically Return after navigation
🧩 You only want to remove ads from one particular app App-specific tools
🍎 You use an iPhone or iPad iOS options
🧑‍💻 You have Root / LSPosed and do not mind tinkering Advanced tools
📚 You want every entry and its full limitations Complete catalog

📱 Check your phone’s built-in controls first

Before installing a third-party tool, check whether your phone already provides a relevant permission or navigation control. This is usually the lowest-cost option.

The exact menu and availability vary by brand, model, and system version. If your phone already provides a similar control, it is usually worth trying first.

⏭️ Automatically skip splash ads

Best for: You open an app and see a splash ad for a few seconds, usually with a Skip / Close button somewhere on the screen.

These defenses generally do not stop the ad itself from loading. Instead, they find and press “Skip / Close” for you. For Android users who do not want to Root their phone and simply want fewer buttons to press, this is one of the easiest categories to understand.

Tool In plain English Platform Deployment effort
Li Tiaotiao Uses Accessibility rules to automatically tap “Skip / Close” Android 🟢 Low effort
GKD Uses subscription rules to find and tap “Skip / Close” Android 🟡 Moderate effort
SKIP Uses local rules to handle splash ads automatically Android 🟢 Low effort
ZeroStart Tries offline OCR and other methods when the UI is difficult to recognize Android 🟢 Low effort
PureSkip Uses offline rules for supported splash ads Android 🔴 High effort
SplashCleaner-Android Looks for and taps a Skip / Close control only during a short startup window Android 🟢 Low effort
madeye/ad-skipper Can use OCR / YOLO / VLM to help locate the target when normal UI matching fails Android Built-in recognition 🟢 / additional VLM 🟡

Good to know: these defenses mainly “press Skip for you.” The ad may still load and appear first, and shake, swipe, or automatic redirects may still exist.

📳 Stop “shake / twist” redirects

Best for: The ad may still be on screen, but simply picking up or slightly moving the phone—without any obvious intent to click—sends you to a shopping app or another page.

These defenses usually work in one of two ways: prevent the app from receiving motion data normally, or stop the shake-related logic from continuing.

Defense In plain English Platform Deployment effort
NoShakingAD / Bu Xu Tiaozhuan Temporarily restricts motion sensors during a short splash window Android 🟡 Moderate effort
Fuck Shake Stops shake-related logic inside the target app Android 🔴 High effort
QzxyAdBlock Handles ads and shake-triggered redirects in a specific app Android 🔴 High effort

These defenses do not automatically solve every ad problem. Even after shake triggers are blocked, taps, swipes, large clickable areas, and other trigger paths may still exist.

🚫 Block or modify ad resources

Best for: You want to intervene earlier in the ad pipeline—before or while the app obtains usable ad content—instead of waiting for the ad to appear and then pressing “Skip.”

These defenses operate at the resource stage. Some use DNS, hosts files, or a local VPN to block known ad domains/requests; others do not block the request itself, but modify returned data, remove ad fields, or prevent the app from reading cached ad data. That is why this category is broader than simply “blocking ad loading.”

Defense In plain English Platform Deployment effort
AdAway Blocks known ad domains through hosts or a local VPN Android 🟢 Low effort (VPN) / 🔴 High effort (Root hosts)
Rethink DNS + Firewall Filters matching DNS requests and can combine this with a per-app firewall Android 🟢 Low effort
Blokada 6 / Cloud Filters known ad domains through DNS / cloud services Cross-platform 🟢 Low effort
app2smile rules + Surge / Quantumult X Rewrites selected ad API responses in compatible iOS clients iOS 🟡 Moderate effort

The limitation is straightforward: effectiveness depends on the actual resource path. Ads that share a domain with normal content, are already cached or bundled into the app, use changed endpoints, rely on certificate pinning, or return an unmatched response format may still appear or continue running.

🔗 Prevent ad-triggered navigation

Best for: You can tolerate the ad being visible, but you do not want one accidental trigger to send you to Taobao, JD, a browser, or another app.

These defenses operate at the navigation stage: they may rewrite destination links, prevent certain pages/apps from being opened, or add a confirmation step before a cross-app redirect.

Defense In plain English Platform Deployment effort
FuckAdJump Makes selected Taobao / JD deep links fail Android 🔴 High effort
HONOR automatic-navigation reminder Adds a system reminder for suspected accidental ad redirects Android 🟢 Low effort

When navigation passes through the relevant interception point, these defenses do not need to care whether the upstream trigger was a tap, swipe, shake, or something else. Coverage still depends on which links and launch paths the defense can actually intercept.

↩️ Return after navigation

Best for: The redirect has already happened, and you want the defense to take you back to the original app as quickly as possible and shorten the interruption.

Defense In plain English Platform Deployment effort
ShakeGuard Detects a matching foreground-app transition after navigation and attempts a Back / return action Android 🔴 High effort

This category is deliberately separate from “preventing navigation”: the destination app has already opened when it intervenes. It therefore cannot undo pages already shown or network requests already sent, and it cannot guarantee restoration of the exact page state in the original app.

🧩 Tools for specific apps

Another large group of tools does not try to work across every app. Instead, each one targets a particular app or a small number of apps.

For example:

These tools are usually narrowly adapted to specific apps and versions. That specificity does not mean they have been uniformly tested across every supported version. An app update can break the existing adaptation.

🍎 What can you do on iOS?

Compared with Android, iOS gives third-party tools less room to directly modify the behavior of other apps. Common approaches therefore include proxy / DNS / Rewrite rules, along with controls provided by the system or browser itself.

You can start with:

Some of these require proxy configuration, certificates, or rule imports; they are not ordinary apps that simply work immediately after installation.

🧑‍💻 Advanced tools

If you are already familiar with Root / Magisk, runtime injection frameworks such as LSPosed / Xposed, and APK modification, many more options become available. These tools can reach into app internals, ad SDKs, Activities / Intents, or sensor callbacks.

Common examples include:

These defenses also come with higher maintenance and security costs: version updates, code obfuscation, signature checks, and Root detection can all affect availability.

🏢 What can ad platforms and app developers do?

The repository also records defensive controls available to developers or ad platforms. These are not tools for ordinary users to install directly; they are configuration options exposed to developers by ad SDKs or platforms.

For example, some SDKs let developers disable shake, rotation, or other motion interactions:

For ordinary users, the point of these entries is not to “download the SDK,” but to understand that many ad interactions can be configured or disabled by app developers.

🧭 Deployment effort

  • 🟢 Low effort: install and authorize a ready-to-use app/service, or enable an existing system setting.
  • 🟡 Moderate effort: requires extra setup, such as importing rules, installing a certificate, debugging pairing, selecting a region, or installing a modified app provided by the project.
  • 🔴 High effort: requires Root / jailbreak, runtime injection, APK modification, or source compilation.

📚 Complete catalog

If you want to see:

  • all currently recorded entries;
  • the full limitations for each entry;
  • historical projects that have not yet been fully verified;
  • system capabilities, developer settings, and research prototypes;

see the complete catalog.

Each entry also has its own detail page, with its working method, applicable scenarios, deployment requirements, limitations, and original source.

🤝 Corrections and contributions

Advertising defenses and system versions change quickly, and app updates can also break old rules. If you notice:

  • a project has stopped or resumed maintenance;
  • a link is broken;
  • an entry does not match what the defense actually does;
  • a new advertising defense is worth including;

please see CONTRIBUTING.md and submit a correction or source.

📄 License

Catalog data and explanatory text are licensed under CC BY 4.0; generation and validation scripts are licensed under MIT.

About

A collection of mobile ad countermeasures for bylassing splash ads, such as shake-to-open redirects, ad-triggered navigation, and related intrusive advertising behaviors.

Resources

Contributing

Stars

62 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages