Is it possible to run google adsense ads on a local server as a try out for a example application? I want to implement Google adsense ads in my web application which is runn
I was able to make Adsense ads work on localhost by following the next steps:
1) Add ads.txt file in root of myDomain
https://support.google.com/adsense/answer/7532444?hl=en-GB
The file should be available for GET at myDomain.com/ads.txt
(I am not sure if the ads would work without this step)
2) Edit the hosts system file:
in Linux and macOS you can find it at /etc/hosts
There add a line like this 127.0.0.1 mylocalstuff.myDomain.com
run sudo killall -HUP mDNSResponder
A browser restart might also be needed.
Without this step you will probably get a 403
3) Use the data-adtest="on"
in the ins
tag so the impressions are not affected.
Access mylocalstuff.myDomain.com
in the browser (or mylocalstuff.myDomain.com<:PORT_NUMBER>
if your local server is available at a port number different than 80).
The steps where inspired from sources:
https://medium.com/@jeffersonlicet/testing-ads-on-localhost-300215b415d6
https://stackoverflow.com/a/34389120/1979861
Note: pay also attention to the space for ads (styles). If that is too restricted by some width or height you can get an error and you will see a blanc space.
After lots of trials and errors, here is what I've found out. At least, those were my results.
It seems that adsbygoogle.js
will not render ads on localhost
. You'll probably will get something like the following:
So, the first thing you need to do is to set up a local custom domain for your localhost
.
Here is what I do on Windows:
Then you should be able to access your localhost
by hitting dev.mydomain.com
After you've set up your local domain, you should go to your AdSense account and add it as a subdomain under the main domain of your registered website.
From the tests I've run. It seems that AdSense will not render real nor test ads if the domain/subdomain has not been added to your AdSense account.
In this example, I've added the main domain without the www
and I've added two subdomains. One is the www.
variation and the other one is the dev.
that I've just added to my localhost
.
Then you can render it on your code, just like you would on a real add and use the data-adtest
flag set to on
to run your tests.
<ins className="adsbygoogle"
style={{display:"inline-block", width:"100%", height: "100%"}}
data-ad-client={AD_SENSE_ACCOUNT}
data-ad-slot={AD_SENSE_SLOT}
data-adtest={ON_DEV ? "on" : "off"}
>
</ins>
I have an ON_DEV
flag that automatically sets it to on
, whenever I'm on my dev.
domain.
EXTRA
This is out of the scope of this question, but is necessary for everything to work.
You also need to push it to the adsbygoogle
array. This is how I do it in React.
useEffect(()=>{
(window.adsbygoogle = window.adsbygoogle || []).push({});
},[]);
And of course, you need the adsense
<script/>
tag on your index.html
as well.
<script data-ad-client="XXXXXXXX" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
Yes it is possible (as of 2015). There is a special parameter, to use Adsense on Localhost without risks.
Today the AdSense code is different. If you want to add the adtest-parameter use data-adtest="on"
within an ins block. Here is an example code:
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- XYZ 336 x 280 -->
<ins class="adsbygoogle"
style="display:inline-block;width:336px;height:280px"
data-ad-client="ca-pub-XXXXXXXXXXXXX"
data-adtest="on"
data-ad-slot="XXXXXXXXXXX"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
Found this on Google AdManager Help:
It shows a basic tutorial on how to achieve this.
Test Ad Exchange tags without charging advertisers or recording clicks and impressions
Add the google_adtest = on; parameter to your ad tag to specify that this is a test implementation. Make sure you set this parameter to "on" to ensure that clicks and impressions aren't recorded and advertisers aren't charged. The default value is "off".
You can put this as the first line of the code:
google_adtest = "on";
test-adsense-ads-on-your-site
Note that you must put the semicolon (;
) at the end of this line.
Once you add this line to the code, for the adsense unit, it will be displayed as a test unit and its impressions won’t be counted.
Very Important Note - Once you are satisfied with the adsense unit, don't forget to remove this line from the code.
Check out this link: http://www.hacktrix.com/2-ways-to-safely-test-google-adsense-ads-on-your-site
I wasn't able to get the ads to show up using data-adtest="on"
in localhost either. Since there was still an empty div, as a quick work around I added a border to the styles so it looks like display: inline-block; border: 1px solid green;
. I was only concerned about placement and how it would interact with my layout and not so much what the ad looked like, so this allowed me to see the dimensions of the ad and make any layout adjustments accordingly.