How to protect your privacy by blocking all annoying Spotify ads & analytics in Linux, OSX and Windows with hosts file.

Today I will show you how to easily block the servers hosting Spotify ads on your Linux/Mac or Windows machine. This will allow you to listen all day long on a free account without hearing a single ad.  This trick is very simple, legal and works great.  Spotify may catch on and find some way to stop this from working but, as of today (4 june 2019) it works swimmingly.

UPDATE 20-02-19: List updated thanks to Johan, ad blocking works again. Somehow Spotify found cheap way to block music if you block they DNS ad services by pinging it back from client. Note to update your HOSTS entries.
UPDATE 10-03-19: Huge DNS list update, added lots of new advertising entries.
UPDATE 04-04-19: Fixed issue that Spotify client only plays songs that are in favourite list, by remove 2 entries from HOSTS file list.
UPDATE 26-05-19: Entries list has been updated, beta.spotify.map.fastly.net has been removed because has trouble for some users with displaying album art. Also added 4 new DNS advertising entries. Please update your HOSTS file!
spotify-ad-block

Blocking Ad Server

In order to remove those pesky ads, all we need to do is setup out hosts file to override the DNS for Spotify’s ad servers and redirect that traffic to our local machine.  When the traffic hits out local machine the call will fail and the ad will be skipped.  Follow the steps below to add the entries needed.

Open your hosts file using your favorite text editor. I mostly use terminal in Linux. Add the following lines to the bottom of your hosts file and save your hosts file (Look below How To in your favour OS):
RAW HOSTS File Updated 29-05-19: https://pastebin.com/raw/9M5ALu8n
For Windows 10 & 8

  1. Press the Windows key.
  2. Type Notepad in the search field.
  3. In the search results, right-click Notepad and select Run as administrator.
  4. From Notepad, open the following file: c:\Windows\System32\Drivers\etc\hosts
  5. Make the necessary changes to the file.
  6. Click File > Save to save your changes.

Or very easy way of using Batch file! Take the info from the THIS paste bin url, copy all of it, paste it into Notepad and save the filename as whatever you please but be sure to add “.bat” at the end (without quotes). And execute it As Admin in Windows.

For Linux

  1. Open a terminal window.
  2. Open the hosts file in a text editor (you can use any text editor) by typing the following line:
    sudo nano /etc/hosts

For Mac OS X 10.6 through 10.12

  1. Open Applications > Utilities > Terminal.
  2. Open the hosts file by typing the following line in the terminal window:
    sudo nano /private/etc/hosts
    
  3. Type your domain user password when prompted.
  4. Edit the hosts file.The file contains some comments (lines starting with the # symbol), and some default hostname mappings (for example, 127.0.0.1 – local host). Add your new mappings after the default mappings.
  5. Save the hosts file by pressing Control+x and answering y.
  6. Make your changes take effect by flushing the DNS cache with the following command:
    dscacheutil -flushcache
    

There you go, editing hosts file has taken effect.

Why This Works?

To understand how this works we first need to understand the role DNS plays in our operating system.  When we are communicating with other services on the web everything is referenced by IP address.  For instance, when I tell my browser to go to google.com, it has to know where to find google.com.  This is where DNS comes into play.  DNS short for Domain Name Servers is a service that translates human readable, easy to remember domain names into IP addresses that other machines can communicate with.  Whenever you add an entry to your local hosts file you are overriding the DNS entry locally for whatever domain you enter.  For instance, if I add the line “127.0.0.1 test.local” to my hosts file, whenever i type “test.local/” into my browser, it will see the entry in my hosts file and use the IP 127.0.0.1(locahost) rather than reaching out to a DNS server to try and resolve that address.  Where this comes into play for us is overriding Spotify ad servers.  When we add an entry for each server that hosts ads for Spotify and points them to our local machine, we are ensuring that whenever Spotify reaches out for an add it hits our local machine instead of the real ad server and gets an error. When Spotify detects this error it stops trying to attempt to run the ad and the ad is skipped.

Wrap Up

Hopefully after reading this you have a better understanding of how DNS works, how to override it and how to never have to listen to another spotify ad again.  As always I love feedback so leave a comment down below if you have anything you would like to add or contact me on Twitter: @0xUID.

Oh and the winter is coming led’s!

74 Replies to “How to protect your privacy by blocking all annoying Spotify ads & analytics in Linux, OSX and Windows with hosts file.”

    1. I use debian, and it didn’t work either:
      if you are using a debian based OS try booth commands with root perm:
      1. apt-get install nscd
      2. /etc/init.d/nscd restart

  1. Or, you can add the following entries to your HOSTS file:
    # Spotify
    127.0.0.1 adclick.g.doublecklick.net
    127.0.0.1 adeventtracker.spotify.com
    127.0.0.1 ads-fa.spotify.com
    127.0.0.1 analytics.spotify.com
    127.0.0.1 audio2.spotify.com
    127.0.0.1 b.scorecardresearch.com
    127.0.0.1 bounceexchange.com
    127.0.0.1 bs.serving-sys.com
    127.0.0.1 content.bitsontherun.com
    127.0.0.1 core.insightexpressai.com
    127.0.0.1 crashdump.spotify.com
    127.0.0.1 d2gi7ultltnc2u.cloudfront.net
    127.0.0.1 d3rt1990lpmkn.cloudfront.net
    127.0.0.1 desktop.spotify.com
    127.0.0.1 doubleclick.net
    127.0.0.1 ds.serving-sys.com
    127.0.0.1 googleadservices.com
    127.0.0.1 googleads.g.doubleclick.net
    127.0.0.1 gtssl2-ocsp.geotrust.com
    127.0.0.1 js.moatads.com
    127.0.0.1 log.spotify.com
    127.0.0.1 media-match.com
    127.0.0.1 omaze.com
    127.0.0.1 open.spotify.com
    127.0.0.1 pagead46.l.doubleclick.net
    127.0.0.1 pagead2.googlesyndication.com
    127.0.0.1 partner.googleadservices.com
    127.0.0.1 pubads.g.doubleclick.net
    127.0.0.1 redirector.gvt1.com
    127.0.0.1 s0.2mdn.net
    127.0.0.1 securepubads.g.doubleclick.net
    127.0.0.1 spclient.wg.spotify.com
    127.0.0.1 tpc.googlesyndication.com
    127.0.0.1 v.jwpcdn.com
    127.0.0.1 video-ad-stats.googlesyndication.com
    127.0.0.1 https://www.techattend.com
    127.0.0.1 weblb-wg.gslb.spotify.com
    127.0.0.1 http://www.googleadservices.com
    127.0.0.1 http://www.googletagservices.com
    127.0.0.0 gads.pubmatic.com
    Hope it helps.

    1. these instructions are incomplete. the HOSTS file is a hidden, read-only system file. in order to change the hosts file, you must apply the following commands on command prompt while run as administrator:
      1) attrib -s -h -r c:\Windows\System32\Drivers\etc\HOSTS
      to make the file writeable. and the following after appending (NOT changing) the HOSTS file:
      2) attrib +s +h +r c:\Windows\System32\Drivers\etc\hosts
      to make the file hidden again

  2. This works for blocking the adds, but it also blocks all requests from spotify to its server (for example for the friends feed or radio stations).. Didn’t find a solution for this so far, the line which is causing the issue is
    127.0.0.1 spclient.wg.spotify.com

  3. Thank you for this simple solution.
    THIS IS SIMPLY GREAT.
    Now I have Spotify free without the ads on my Windows 10 PC.
    You made my day!
    Could we do the same directly on the router so the whole house would be spotify FREE of pubs? That would be great! (I tried but could’t find a simple way of doing so 🙁 )
    Thank you again!

  4. There are many illegal entries in the list, all domains listed to start with http:// need to be fixed so that the http:// is removed, or else they will not work at all.
    Also change 127.0.0.1 to 0.0.0.0, this will give the benefit that no request will be made (going against 127.0.0.1 will make a request to the local machine).

  5. On Mac OSX 10.11.6, works perfectly, no more adds,no pauzes, and no more banners too. Excellent work ! Many thanks . and I now understand DNS.

  6. Sad ly the small list at the top doesn’t work and the long list in A.S. comment only let you play your songs in your Album section, so no new songs…..anyone? The only thing i can do now is search without list, than add to Albums and than add list to hosts file.

  7. Not here, on El Capitan OSX 10.11.6 I’ll try use the big list and delete the Spotify ones….At this moment this one is working for me( as long as it last):
    # Block Spotify Ads
    127.0.0.1 media-match.com
    127.0.0.1 adclick.g.doublecklick.net
    127.0.0.1 googleadservices.com
    127.0.0.1 pagead2.googlesyndication.com
    127.0.0.1 googleads.g.doubleclick.net
    127.0.0.1 pubads.g.doubleclick.net
    127.0.0.1 omaze.com
    127.0.0.1 b.scorecardresearch.com
    127.0.0.1 bounceexchange.com
    127.0.0.1 bs.serving-sys.com
    127.0.0.1 content.bitsontherun.com
    127.0.0.1 core.insightexpressai.com
    127.0.0.1 d2gi7ultltnc2u.cloudfront.net
    127.0.0.1 d3rt1990lpmkn.cloudfront.net
    127.0.0.1 doubleclick.net
    127.0.0.1 ds.serving-sys.com
    127.0.0.1 googleadservices.com
    127.0.0.1 gtssl2-ocsp.geotrust.com
    127.0.0.1 js.moatads.com
    127.0.0.1 omaze.com
    127.0.0.1 pagead46.l.doubleclick.net
    127.0.0.1 partner.googleadservices.com
    127.0.0.1 redirector.gvt1.com
    127.0.0.1 s0.2mdn.net
    127.0.0.1 securepubads.g.doubleclick.net
    127.0.0.1 tpc.googlesyndication.com
    127.0.0.1 v.jwpcdn.com
    127.0.0.1 video-ad-stats.googlesyndication.com
    127.0.0.1 https://www.techattend.com
    127.0.0.1 http://www.googletagservices.com
    127.0.0.0 gads.pubmatic.com

  8. Works seamlessly in both my Windows and Ubuntu, but in Windows when i tried to download a file from Google Drive on a browser its download nothing. Then i remove the “googletagservices.com” lines and its works again. Just FYI.

  9. Hey,
    I tried doing this on my PC but no luck!
    Could it be because of my location (India)???
    If yes, can you add Indian add servers too?? (or) how can I find Indian ad servers?
    Thanks in advance!

      1. Hey thanks for the quick response. I see that you have added 0.0.0.0 spclient.wg.spotify.com. Though the ads are gone the “Friends Activity” tab isnt working.
        I was wondering if any info from my pc’s c:\Windows\System32\activity.txt could be of any help
        I hav got a couple of variations of this in there
        TCP 192.168.0.***:**** 53.224.186.35.bc.googleusercontent.com:https CLOSE_WAIT

  10. also these .deploy.static.akamaitechnologies.com:http TIME_WAIT
    server-54-230-191-157.maa3.r.cloudfront.net:https CLOSE_WAIT
    maa03s23-in-f14.1e100.net
    maa05s06-in-f4.1e100.net:https ESTABLISHED

  11. This hosts-list breaks my spotify. The only songs that play are the ones already in my favourites. I can’t play any other songs or add new ones.

    1. Hey there,
      Whatever OS you are using, open the hosts file just like you opened it before. Once opened, remove all the entries which you had copy pasted. Save the file and exit. Restart your Computer. You will be good to go.

  12. I commented this line because it prevented me from listening to some songs and some thumbnails were not showing.
    #0.0.0.0 beta.spotify.map.fastly.net
    I’m on ubuntu 19.04 and the spotify version is this one : 1.1.0.237.g378f6f25-11

  13. I get spotify stuck when displaying an ad and the only way to fix it is closing and opening the software again
    how do I figure out which address in the host file I should comment?

  14. ya man thanks! everything works as perfect. even my customized version in ubuntu under wine. the only thing which appears is that some album covers and playlist thumbnails aren’t loading anymore, but thats the point you have to come to a compromise when ur using such a free way of getting rid of ads on spotify 😛

  15. For me, it does not block all adds. However, adds are much less than before.
    So it partially works. Maybe we need an update!

    Thanks a lot.

  16. Is the pastebin link updated since the removal of the 2 entries in April? because it didn’t work for me as of 18-5-19 and the date next to the link says 10-3-19

  17. If anyone’s having trouble displaying album art, simply remove this line: beta.spotify.map.fastly.net 😉

  18. I was having trouble displaying album art with the updated list (May 26, 2019), and I narrowed it down to ‘i.scdn.co` being the culprit. Just remove that from the list, and everything is fixed!

  19. Hi, i wrote an java program that collects all host row entries from this sites host file and adds them to your localhost file without you doing it manually. It works in linux, not tested yet in windows but should not be a problem. Read the instructions first and then try it it you want to, here is the simple code:

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Iterator;

    /*This program is written to copy online host file rows from https://pastebin.com/raw/9M5ALu8n
    * to your local hosts file so you could run it from crontab or from a .bat file
    * from windows so you dont have to update it manually if changes are made to the online host file
    * The syntax should be: java -jar thisJar.jar pathToYourHostFile urlToPasteBin
    * It has been tested in linux/ubuntu but should work in windows to.
    * If there are some new rows on the site that is not in your local host file it will insert them in
    * a new host file, but the program backups your current host file first with syntax hostFile-currentDate
    * Then it saves the new host file to your regular path. Use this program if you want to.
    * Take a backup of your host file first if you are scared of running it the first time 😀
    * Best regards Eskimos20
    */

    public class ReplaceHostFileEntries {

    private static String path = “”;
    private static String address = “”;
    //Containing all rows from current host file + new rows from online site
    private static ArrayList hostFileArr = new ArrayList();
    //Containing all rows from sites host file
    private static ArrayList hostFileFromSite = new ArrayList();
    //If a change has occured then this boolean is true
    private static boolean changeHasOccured = false;

    public static void main(String[] args) {

    if ((args!=null && args.length>0) || (path != “” && address != “”)) {
    if (args.length>0) {
    for(int i = 0; i < args.length;i++) {
    if (i == 0) {
    path = args[i];
    }else {
    address = args[i];
    getHostsInfo(address, path);
    }
    }
    }else {
    getHostsInfo(address, path);
    }

    }else {
    System.out.println("This program requires two parameter, first path to hosts file: /etc/hosts and url to pastebin, as of now it should be: https://pastebin.com/raw/9M5ALu8n&quot;);
    }
    }

    private static void getHostsInfo(String address, String hostsPath) {
    URL url;
    try {
    url = new URL(address);

    InputStream in;
    try {
    in = url.openStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));

    String line;
    while((line = reader.readLine()) != null) {
    if(line.contains("#")) {
    continue;
    }else {
    //Collects all rows from online site containing 0.0.0.0 ip
    hostFileFromSite.add(line);
    }
    }

    //Saves rows from local host file
    gatherRowsFromLocalHostFile();

    //Compares local host file to sites host file
    compareLocalHostFileToSiteHostFile();

    } catch (IOException e) {
    System.out.println("Could not connect to URL: " + address);
    e.printStackTrace();
    }
    } catch (MalformedURLException e1) {
    e1.printStackTrace();
    }
    }

    private static void gatherRowsFromLocalHostFile() {

    File file = new File(path);

    BufferedReader br;
    try {
    br = new BufferedReader(new FileReader(file));

    String line;
    //Adding local rows from local hostfile
    while ((line = br.readLine()) != null) {
    hostFileArr.add(line);
    }
    } catch (FileNotFoundException e) {
    System.out.println("Could not find current host file: " + path);
    e.printStackTrace();
    } catch (IOException e) {
    System.out.println("Failure while reading input from local host file: " + path);
    e.printStackTrace();
    }
    }

    private static void compareLocalHostFileToSiteHostFile() {

    Iterator siteArrItr = hostFileFromSite.iterator();

    String siteHostFileRow = “”;

    //Looping sites host file and comparing it to the original host file
    while (siteArrItr.hasNext()) {

    siteHostFileRow = siteArrItr.next();

    addStringToArrayIfNotFound(siteHostFileRow);
    }

    writeToHostFile(hostFileArr);

    }

    private static void addStringToArrayIfNotFound(String myRow) {

    Iterator itr = hostFileArr.iterator();

    String hostFileRow = “”;
    boolean foundMatch = false;

    while(itr.hasNext()) {

    hostFileRow = itr.next();

    if (hostFileRow.equalsIgnoreCase(myRow)) {
    foundMatch = true;
    }
    }
    //Add sites row to local host file if it did not exist
    if (!foundMatch) {
    changeHasOccured = true;
    hostFileArr.add(myRow);
    }
    }

    private static void writeToHostFile(ArrayList myNewHostArray)
    {

    Iterator itr = myNewHostArray.iterator();

    String fileContent = “”;

    while(itr.hasNext()){
    fileContent += itr.next() + “\n”;
    }

    if (fileContent!=””) {
    File origFile = new File(path);

    SimpleDateFormat formatter= new SimpleDateFormat(“yyyy-MM-dd”);
    Date date = new Date(System.currentTimeMillis());

    File renameFile = new File(path + “-” + formatter.format(date));

    if (changeHasOccured) {
    if(origFile.renameTo(renameFile)) {
    BufferedWriter writer;
    try {
    writer = new BufferedWriter(new FileWriter(path));
    writer.write(fileContent);
    writer.close();

    if (changeHasOccured) {
    System.out.println(“There was changes between your local host file and the online site!”);
    System.out.println(“Your local host file has now been backup up to: ” + renameFile.toString());
    System.out.println(“Your new host file has been written to: ” + path);
    System.out.println(“Finished!”);
    }
    } catch (IOException e) {
    System.out.println(“Could not write file to disk: ” + path);
    e.printStackTrace();
    }

    }else {
    System.out.println(“Could not rename original hosts file to: ” + renameFile.toString());
    }
    }else {
    System.out.println(“No changes has been made to host file since it is up to date!”);
    System.out.println(“Finished!”);
    }
    }
    }

    }

  20. Thanks for your host file updates 😀

    Could you please update me on what command you are using to sniff traffic so that you can collect the ads addresses ? I have tried tcpdump on port 4070, 443 and 80 just to see what traffic is showing. Would love to be able to find out spotify ads servers just like you did 😀

Leave a Reply to garry buscene Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.