Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

🎵 RVX Spotify

Spotify Xposed Kotlin Java

GitHub release GitHub downloads License: GPL v3 GitHub stars

An Xposed/LSPosed module that unlocks premium features on Spotify — with full ad blocking.

No server-side detection. No forced logouts. Just music.


📥 Download Latest✨ Features📦 Installation🔧 Domain Discovery❓ FAQ


📌 About

[!IMPORTANT]

  • This is NOT an official ReVanced project — do not ask ReVanced developers for help.
  • Root access (Magisk/KernelSU) with LSPosed is strictly required.

This is an actively maintained fork of the original chsbuffer/ReVancedXposed_Spotify, which was archived and is now read-only.

What this fork brings:

  • ✅ Full ad blocking — audio & visual ads completely eliminated
  • ✅ No forced logouts (avoids server-side detection traps)
  • ✅ Active maintenance & updates
  • ✅ Compatible with latest Spotify versions

All credit for the original implementation goes to the original author and contributors. This fork remains licensed under GPL-3.0.


✨ Features

FeatureStatusDescription
🔓 Unlock Premium✅ WorkingUnlocks premium UI features (shuffle, unlimited skips, etc.)
🚫 Block All Ads✅ WorkingDNS-level ad blocking — blocks 25+ ad-serving domains at the network layer
🔗 Sanitize Links✅ WorkingRemoves tracking parameters from shared Spotify links
🏠 Fix Widgets✅ WorkingFixes third-party launcher widgets

How Ad Blocking Works

The module implements a DNS-level sinkhole directly within Spotify's process — the same proven technique used by AdGuard DNS and Pi-hole:

Spotify tries to reach → ads.spotify.com
Module intercepts DNS  → returns 127.0.0.1 (loopback)
Connection fails       → no ads served ✅

This approach operates at the network layer rather than modifying account attributes, which means:

  • Forced logouts — doesn't trigger server-side dual-sync detection
  • Account flags — your account state remains untouched
  • ✅ Works reliably without depending on Spotify's internal code structure

[!NOTE] The ads account attribute is intentionally not overridden. Setting ads=FALSE triggers Spotify's server-side detection, causing forced logouts every 60–120 seconds. DNS blocking avoids this entirely.


📥 Download

BuildLink
Latest ReleaseDownload

[!NOTE] The package name and signature of this build vary. You do not need to reinstall daily.


📦 Installation

Prerequisites

  • Rooted Android device (Magisk or KernelSU)
  • LSPosed framework installed
  • Spotify app installed from Play Store or APK

Steps

  1. Download the latest release APK from Releases
  2. Install the APK on your device
  3. Open LSPosed ManagerModules
  4. Enable RVX Spotify and select Spotify as the target app
  5. Force stop Spotify and reopen it
  6. Enjoy ad-free music 🎵

🔧 DNS Domain Discovery Mode

Spotify may change their ad-serving domains over time. The module includes a built-in Domain Discovery Mode to help you find new domains:

📖 Click to expand — How to discover new ad domains
  1. Open InterceptAds.kt and set:
    private const val DNS_DISCOVERY_MODE = true
  2. Rebuild and install:
    ./gradlew :app:assembleUniversalRelease
  3. Play Spotify for a few minutes
  4. Capture the domain log:
    adb logcat -s AD_DIAG | grep "DNS_LOG"
  5. Review the output:
    DNS_LOG: ✓ ALLOWED  api-partner.spotify.com
    DNS_LOG: ★ BLOCKED  ads.spotify.com → 127.0.0.1
    DNS_LOG: ✓ ALLOWED  newdomain.spotify.com    ← is this an ad domain?
    
  6. Look for domains with keywords like: ad, track, analytics, sponsored, log, metric
  7. Add suspicious domains to the blockedDomains set in InterceptAds.kt
  8. Set DNS_DISCOVERY_MODE = false and rebuild for daily use

💡 Tip: Save to file for easier review:

adb logcat -s AD_DIAG | grep "DNS_LOG" > ~/spotify_domains.txt

🛡️ Currently Blocked Domains

View all 25 blocked domains
DomainCategory
ads.spotify.comSpotify Ads
spclient.wg.spotify.comSpotify Ad Client
audio-ak-spotify-com.akamaized.netAd Audio CDN
audio2.spotify.comAd Audio
analytics.spotify.comAnalytics
adstats.spotify.comAd Statistics
adeventtracker.spotify.comAd Event Tracking
tracking.spotify.comTracking
log.spotify.comLogging
crashdump.spotify.comCrash Reporting
sponsored-recommendations.spotify.comSponsored Content
desktop.spotify.comDesktop Ads
weblb-wg.gslb.spotify.comLoad Balancer (Ads)
redirect.spotify.netAd Redirects
firebaseinstallations.googleapis.comFirebase Tracking
firebase-settings.crashlytics.comCrashlytics
cdn.branch.ioBranch.io Tracking
api2.branch.ioBranch.io API
pagead2.googlesyndication.comGoogle Ads
bs.serving-sys.comServing Sys Ads
bounceexchange.comBounce Exchange
sb.scorecardresearch.comScorecard Research
b.scorecardresearch.comScorecard Research
segment-data-us-east.zqtk.netSegment Tracking
live.ravelin.clickRavelin Tracking

❓ FAQ

Will this get my account banned?

The module does not modify your Spotify account attributes or send modified data to Spotify's servers. DNS blocking is indistinguishable from network issues — it's the same as using AdGuard DNS or a Pi-hole on your network.

Why not just set ads=FALSE?

Setting the ads attribute to FALSE triggers Spotify's server-side dual-sync detection, causing forced logouts every 60–120 seconds. DNS-level blocking avoids this by operating at the network layer instead.

Ads are showing again after a Spotify update?

Spotify may introduce new ad-serving domains. Use the built-in Domain Discovery Mode to identify and block them.

Does this work without root?

No. This is an Xposed/LSPosed module and requires root access (Magisk or KernelSU).


🏗️ Building from Source

# Clone the repository git clone https://github.com/simoabid/RVX-Spotify.git cd RVX-Spotify # Build release APK ./gradlew :app:assembleUniversalRelease # Output: app/build/outputs/apk/universal/release/

⭐ Credits

ProjectContribution
chsbuffer/ReVancedXposed_SpotifyOriginal implementation — all foundational credit
DexKitHigh-performance dex runtime parsing library
ReVancedContinuing the legacy of Vanced
AdGuard DNSInspiration for DNS-level ad blocking approach

If this module helps you, consider giving it a ⭐

Star History Chart

关于 About

The goal of this fork is to: - Fix Ad blocking issues, - Fix bugs and compatibility issues, - Keep the project working with newer dependencies, - Improve stability and maintainability, - Continue development where the original repository stopped

语言 Languages

Kotlin63.9%
Java36.1%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
203
Total Commits
峰值: 35次/周
Less
More

核心贡献者 Contributors