I published this post darodar.com referrer spam and should you be worried? back in December and I am still seeing a constant influx of frustrated website owners and concerned netizens getting worried about similar spams. I happen to be one of the first to detect this spam and post about it. I didn’t pay much attention to it as referral spam or web analytics is not my primary concern when it comes to computing. Working in IT field for over a decade and specifically IT security, I have a different view on spam and how they can be stopped. I opened my Analytics account yesterday cause I saw 25% traffic increase from Facebook, Twitter and many random sources and 83% increase on the root (“/”) of the server. Well, 25% is nothing, it can happen due to a post going viral. But this wasn’t the case this time as 83% increase was specific to the root (“/”) of the server It seems, our ‘beloved’ ‘Vitaly Popov’ has started a new stream of referral spam. He’s got more crafty as I predicted in my original post. He’s now actually using Facebook, Twitter as referrals including some new domains. In this post I will show three effective solutions for Google Analytics Referral spam.
Some facts about Google Analytics Referral spam:
- By this time you know that Ghost Google Analytics Referrals spam cannot be blocked by .htaccess or web configuration.
- Ghost Google Analytics Referrals spam bots doesn’t really visit your website, so no trace of IP address be found in server logs.
- Ghost Google Analytics Referrals spam only abuse Google Analytics.
- Google Analytics hasn’t done anything about it, yet (officially).
- Google implemented encryption for all of their AdSense traffic.
- Ghost Google Analytics Referrals spam only affects Google Analytics.
- *** Ghost Referrals spam also affecting Yandex and few other search engines.
- As these bots doesn’t visit your website, they have no idea what your page title is. So Analytics will show (“/”) as the page title.
- These Ghost Google Analytics referral spam bots only targets your primary Tracking ID i.e. ‘UA-XXXX-1’
List of known Google Analytics Referral spam domains
Click to open list containing known Google Analytics Referral spam domains:
- semalt.com
- semalt.semalt.com
- buttons-for-website.com
- blackhatworth.com
- makemoneyonline.com
- ilovevitaly.com
- ilovevitaly.co
- ilovevitaly.ru
- iloveitaly.ro
- priceg.com
- prodvigator.ua
- resellerclub.com
- savetubevideo.com
- screentoolkit.com
- kambasoft.com
- socialseet.ru
- superiends.org
- vodkoved.ru
- o-o-8-o-o.ru
- iskalko.ru
- luxup.ru
- myftpupload.com
- websocial.me
- ykecwqlixx.ru
- slftsdybbg.ru
- seoexperimenty.ru
- darodar.com
- econom.co
- edakgfvwql.ru
- adcash.com
- adviceforum.info
- hulfingtonpost.com
- europages.com.ru
- gobongo.info
- cenoval.ru
- cityadspix.com
- cenokos.ru
- ranksonic.info
- lomb.co
- lumb.co
- econom.co
- srecorder.com
- see-your-website-here.com
- brighton.co.uk
- paparazzistudios.com.au
- powitania.pl
- sharebutton.net
- tasteidea.com
- descargar-musica-gratis.net
- torontoplumbinggroup.com
- cyprusbuyproperties.com
List of 194 new Google Analytics Referral spam domains
I now have a list of another 194 spammer domains that started yesterday.
Click to open list of new 194 new Google Analytics Referral spam domains
- users.skynet.be
- users.pandora.be
- users.telenet.be
- go.i4s.be
- search-belgium.com
- activecompany.be
- aubeletage.be
- bizweb.be
- dvcevas-tienen.be
- hermans-motorhomes.be
- kookclubaldente.be
- nicolejanssen.be
- nvdemarie.be
- seraing-athletique.be
- users.belgacom.net
- vandewiele-m.be
- vanhoofdameskleding.be
- wegen-routes.be
- wingsandwheels.be
- zlaz.be
- 2link.be
- acvtje.be
- aquaheaven.be
- aroma-atelier.be
- bellissima-massage.be
- camroysplace.be
- celluforma.be
- couturecharlotte.be
- cryptogrammen.be
- deverborgenschat.be
- fcdekempen.be
- fckerksken.be
- go2.be
- hofterduinen.be
- i-belgie.be
- ivobrugge.be
- jack-russell-terrier.be
- juventusschoonaarde.be
- kaa.vgc.be
- kfchamont99.be
- kranten.2link.be
- lifeleuven.be
- massagetuktuk.be
- mhg.be
- molossideburon.be
- moortelshoeve.be
- nowedo.be
- patrickdamiaens.be
- ruantarathaimassage.be
- rubiosalsaclub.be
- scott2run-wvl.be
- skystef.be
- stan.be
- tallyimmobilien.be
- tievolley.be
- tistaertvrienden.be
- topwedstrijden.be
- tractorsteven.be
- trekkings.be
- tuktathaimassage.be
- vandeneeremaethe.be
- vlerickfietsen.be
- w-v-s.be
- wonderful-massage.be
- zonneschijntjes.skynetblogs.be
- 2news.be
- ahc.be
- andreabrewee.be
- asanti.be
- bansuksom.be
- basileus.ugent.be
- basketknokkeheist.be
- bbcokido.be
- bcpieterman.be
- bikesandpartsrobertpaul.be
- bunkergordel.be
- calorietabel.portalsbay.com
- camionverhuring.be
- csbouw.be
- cuy.be
- cvohz.be
- cyberspace.cz
- defilmblog.be
- demechelsekoekoek.be
- deravotter.be
- desva.be
- deuzie.be
- dichterbij.digitown.be
- drafkoersen.2link.be
- eendrachtzele.be
- erbinspictjers.be
- eritrea.be
- fetishfestival.be
- fietsenvandeputte.be
- fietsstages-baguet.be
- firstclassclubbing.be
- flashygolf.be
- geschenkwensen.be
- gevaarlijke-stoffen.be
- gigabike.be
- goedkoopopreis.be
- goedkope-hoeren.be
- goldiesradio.be
- grote-maten-mode.be
- heidbuchelmeg.be
- hobbycreatief.be
- hobbystart.be
- hofvanoranje.be
- home.base.be
- home.euphonynet.be
- home.tiscali.be
- huurdersbond.be
- ikwilwijn.be
- jeugdwerker.be
- jockey-club.be
- johevri.be
- kabage.be
- kermethe.be
- klassedame.be
- kortenaken.be
- krachtbal.be
- kristallenpoort.be
- kruidengeneeskunde.be
- ksaterstraeten.be
- kvcjonglede.be
- kwsoudenburg.be
- kwvbv.mavari.be
- luc-de-pompier.skynetblogs.be
- lvzm.be
- malaithaimassage.be
- maruay.be
- massimodo.be
- mayasecret.be
- members.lycos.nl
- menisq.be
- merlyn.be
- midgaard.be
- mijn-vakantiewoning.be
- mingl.be
- mondocane.be
- nailzandthingz.be
- newagewebwinkel.be
- nieuwjaarsbrieven.be
- nieuwpoortappartement.be
- nobeldesign.be
- nokerekoerse.be
- oever.be
- owk.be
- paalonline.be
- palomanv.be
- parkfc.be
- parkings-hasselt.be
- peking-wok.be
- pixiedust.be
- pro-ana.be
- pzhfamilie.be
- quizarchief.be
- rallycrossfreaks.be
- roeselaresport.be
- sans-soleil.be
- sennake.be
- seppeensienfashion.be
- serendib.be
- sesfashion.be
- shopping-nivelles.be
- shopping1.be
- showtimethai.be
- thaisetulp.be
- thompson.be
- tollers.be
- topproducts.be
- tuurke’s%20vissite.skynetblogs.be
- vas.be
- vckvw.be
- vclangdorp.be
- vcr.be
- velotour.be
- verkeerweb.be
- vlmbrugge.be
- voordeelspeelgoed.be
- vrijelagereschoollede.be
- vrouwenvoetbaloostvlaanderen.be
- waaihof.be
- waterski.be
- weerstationmechelen.be
- wensen-gedichten.be
- wielerbondvlaanderen-vlaams-brabant.be
- www2.vlaanderen.be
- zalikathaimassages.be
- zeldaskywardsword.be
- zeldatwilightprincess.be
- zoekertjes.2link.be
- zonnehart2012haikujozlebruyn.skynetblogs.be
- zonstraal.be
I mean seriously? users.skynet.be? It’s good to see they have some sense of humour.
So it seems very soon filters wont be enough. Actually it’s already not enough. Despite what the Analytics experts says, you can’t go around every day to filter hundreds of domains. Yes, you could filter for .be (i.e. Belgium) domains, but that’s a whole country we are talking about. So what is the best fix?
Solution 1: Create a new Tracking ID for your website
The simplest solution is often a good place to start
– William of Ockham’s Occam’s Razor
When I started looking around for a good solution, I was surprised the amount of information’s that became available since my last post about Referral spam in December. Some were well written, some were just rubbish.
Some spammers like Semalt actually visit your website, so you can block them using usual .htaccess or web configuration. They are an easy fix:
SetEnvIfNoCase Referer semalt.com spambot=yes Order allow,deny Allow from all Deny from env=spambot
But Ghost referral is a Google Analytics problem. So I found a solution using Google Analytics rather the wasting time on adding filters.
Using Google Analytics to solve it’s own problem:
Google Analytics is very limited but their help document is very clear on how to use Analytics code. According to Advanced Configuration – Web Tracking (analytics.js) you can use multiple trackers on same website (old news!). But here’s the loophole in their coding that I found:
All the spammy bots are using only the first Tracking ID i.e. 'UA-XXXX-1'
. So subsequent properties under your Analytics accounts are unaffected. i.e. 'UA-XXXX-2'
, 'UA-XXXX-3'
and so on.
I just created another property in my Analytics account, configured it same as my primary one and added that to my website.
Instruction on how to setup a property in Google Analytics
Set up a property
Properties are where you send data and set up reporting views.
You need Edit permission on the account to add properties. To set up a property:
- Sign in to your Google Analytics account.
- Select the Admin tab.
- In the ACCOUNT column, use the dropdown menu to select the account to which you want to add the property.
If you have a lot of accounts, use the search box to help you find the right one. - In the PROPERTY column, select Create new property from the dropdown menu.
If you don’t have Edit permission on the account, you won’t see the Create new property option. Check that you’ve selected the correct account in the ACCOUNT column. - Select Website or Mobile app.
- Enter the Website or App Name.
If you plan on tracking more than one app in your account, use a very specific and descriptive name that includes the edition or version number. This will help you keep your app properties organized. - (Web only) Enter the Web Site URL.
- You cannot create a property if your URL isn’t formatted correctly.
Select the protocol standard (http:// or https://). Enter the domain name, without any characters following the name, including a trailing slash (www.example.com, not www.example.com/). - Most domain hosts only support UTF-8 characters in the URL. It’s a good idea to use either UTF-8 characters or punycode for symbols and any non-UTF-8 characters (including Cyrillic characters) in your domain name. Try a punycode converter for help with this.
- You cannot create a property if your URL isn’t formatted correctly.
- Select an Industry Category.
- Select the Reporting Time Zone.
This will be used as the day boundary for your reports, regardless of where the data originates.- The time zone setting affects how data appears in your reports. For example, if you choose United States, Pacific Time, then the beginning and end of each day is calculated based on Pacific Time, regardless of whether the sessions are detected from New York, London, or Moscow.
- If your Analytics account is linked to a Google AdWords account, the time zone is automatically set to your AdWords preference and you will not see this option. This ensures accurate reporting on your AdWords campaigns.
- Changing your time zone affects data going forward, and is not applied retroactively. You may notice a flat spot or a spike in your report data around if you update your time setting after you’ve already been using this property. Your reports might also refer to the old time zone for a short period after you update this setting.
- Click Get Tracking ID.
Your property is created after you click this button, but you must set up the tracking code to collect data.
In general, you just pretty much copy paste and enable any config you had in your primary Analytics account. Creating a second property for the same website/URL doesn’t hurt anything or affects anything. It’s just another container where data is stored.
My sample original Google Analytics tracking ID
<script> <--function-removed--> ga('create', 'UA-XXXX-1', 'auto'); ga('send', 'pageview'); </script>
My new sample Google Analytics tracking ID
<script> <--function-removed--> ga('create', 'UA-XXXX-2', 'auto'); ga('send', 'pageview'); </script>
Create new combined Google Analytics Tracking ID
Google Analytics Advanced configuration, Working with Multiple Tracking Objects, shows how to create a new combined Google Analytics tracking ID and put them in your website.
In some cases you might want to send data to multiple web properties from a single page. This is useful for sites that have multiple owners overseeing sections of a site; each owner could view their own web property.
To solve this, you must create a tracking object for each web property to which you want to send data:
ga('create', 'UA-XXXX-Y', 'auto'); ga('create', 'UA-12345-6', 'auto', {'name': 'newTracker'}); // New tracker.
Once run, two tracker objects will be created. The first tracker will be the default tracking object, and not have a name. The second tracker will have the name of newTracker.
To send a pageview using both trackers, you prepend the name of the tracker to the beginning of the command, followed by a dot. So for example:
ga('send', 'pageview'); ga('newTracker.send', 'pageview'); // Send page view for new tracker.
Would send a pageview to both default and new trackers.
This explanation might be slightly convoluted for many users. Here’s mine:
My sample combined new Google Analytics Tracking ID
<script> <--function-removed--> ga('create', 'UA-XXXX-1', 'auto'); ga('create', 'UA-XXXX-4', 'auto', {'name': 'newTracker'}); // New tracker. ga('set', 'forceSSL', true); // Send all data using SSL, even from insecure (HTTP) pages. ga('send', 'pageview'); ga('newTracker.send', 'pageview'); </script>
I’ve also forced SSL on my Google Analytics tracking ID. This wont do any good for this particular spam, but having some encryption is always good in the long run.
Click here to open Google's Instruction on Forcing SSL (HTTPS) on GA
By default, Google Analytics will match the protocol of the host page when sending outbound requests. To force Google Analytics to always send data using SSL, even from insecure pages (HTTP), set the forceSSL field to true:
ga('create', 'UA-XXXX-Y', 'auto'); ga('set', 'forceSSL', true); // Send all data using SSL, even from insecure (HTTP) pages. ga('send', 'pageview');
This fixed everything for me. This is the best solution out there and it will continue to work until the spammers changes their code to include subsequent GA Tracking ID’s.
Solution 2: Create a filter for NULL Page Title
If you’re lazy and don’t want to create a new Analytics code, then Solution 2 is the next best option. Actually, I think this might be even better as it will get rid of any similar future spam referrals as well.
If you look closely into your Google Analytics report, you will see that all these Ghost Google Analytics Referral Spam shows Page Title as (not set).
Actually, this is not really (not set), it’s NULL value. That means these fake or Ghost Google Analytics Referral Spam bots are sending fake data using your tracking ID. But how are they going to set your Page Title?
To get Page title, a bot actually have to visit your website. Without visiting your website it will become very tough to include that bit of information (correct info, they can always use bogus data). So they’ve left that bit of info empty or NULL and when Google Analytics gets these fake data, it sets Page Title as NULL or (not set).
To create a filter for your view, select Admin > Account > Property > View > Filters.
Fill up the Filter with the following information’s:
- Filter Name: Page Title (not set)
-
Filter Type: Select Custom
- Select Exclude
-
Filter Field: Select Page Title
-
Filter Pattern: Put ^$ in this field. ^$ means empty or missing or NULL value.
- Filter Verification: Click “Verify this filter”.
- It will show you how your filter would affect the current view’s data, based on traffic from the previous seven days.
- Note: Verify will only work on an existing view where you have at least 7 days worth of data.
- Verify will not work if you’ve created a new Tracking ID from Solution 1. (cause it doesn’t have enough data.)
- Click Save
You will see Ghost Google Analytics referral spam disappearing from your reports within few minutes and within 4 hours, your Google Analytics report will be all clear.
Solution 3: Create a filter for valid Hostnames
To implement this solution, STEP CAREFULLY or you will exclude valid traffic! You MUST identify ALL valid hostnames that may use your website tracking ID, and this could include other websites that you are tracking as part of your web ecosystem — your own domain, PayPal, your ecommerce shopping cart, and all of reserved domains (in case you decide to use them).
Start with a multi-year report showing just hostnames (Audience > Technology > Network > hostname), then identify the valid ones — the servers where I have real pages being tracked.
Then create a filter with an expression that captures all of the domains that I consider valid. For example:
www.blackmoreops.com OR .*blackmoreops.com|.*youtube.com|.*amazon.com|.*googleusercontent.com
This can be used as a supplementary addition to Solution 2. It’s mainly because you would never know where you are getting your traffic from and it’s a lot of work keeping this filter updated. Also as time goes, your filter will become bigger and the chance of making a mistake will increase. But it’s a good solution nevertheless.
Read more details on hostname filter here.
Conclusion
This is entirely Google’s problem and entirely their issue to resolve. I wouldn’t waste a single moment creating filters for Ghost Google Analytics referral spammers. If you want you can block spam bots that actually visit your website using .htaccess or web-server configuration etc.
The above solution works 100% right now, but it’s very easy for the spammers to modify their code to add subsequent Google Analytics Tracking ID’s. If that happens, keep an eye in here, I will come back with another solution. Share and Retweet this guide for those stressed webmasters.