在开发模式下,在localhost上阻止Google广告

时间:2016-04-20 09:06:31

标签: javascript c# asp.net

我经常需要在本地计算机上更新和测试我的小网站。 这些网站使用谷歌广告。

我过去常常在每个页面上手动停用和启用广告,这非常痛苦。

我想在我的本地计算机上测试网站时禁用所有Google广告。我如何实现这一目标?

4 个答案:

答案 0 :(得分:3)

经过一番努力,我找到了一个基本解决方案来阻止localhost上的所有广告。 唯一的限制是必须将其放在master文件中,并且继承主文件的所有文件都会阻止广告。

在包含任何其他脚本之前,将以下脚本粘贴到master部分的head文件中。

    <script type="text/javascript">
        //block google ads on localhost
        if (window.location.hostname === "localhost") {
            window.adsbygoogle = {
                enabled: true,
                loaded: true,
                push: function () {
                    return;
                },
                google_ad_client: "",
                enable_page_level_ads: true
            }
        }
    </script>

答案 1 :(得分:1)

您可以在使用localhost时使用adblocker启用它,然后在发布站点时将其禁用。

答案 2 :(得分:1)

有两种方法,您可以开发自己的Chrome扩展程序,仅在Chrome上运行以隐藏Google广告(顺便提一下,它有一组独特的HTML,因此可以轻松指出并删除它们)。

或者您可以在主模板中创建一个javascript文件的链接,该文件在服务器(生产)上始终为空,但在本地它定义了要隐藏的Google广告的CSS。同样,谷歌广告选择器也难以确定。

https://developer.chrome.com/extensions/getstarted

这是一个用于此目的的plnkr代码

的manifest.json

http://plnkr.co/edit/wPxuO0vndIBMTz1ajMyJ?p=preview
{
  "name": "Walnut",
  "description": "hide ads",
  "version": "2.0",

 "content_scripts": [
    {
      "matches": ["https://*.facebook.com/*","http://localhost:8080/*"],
        "css": [ "remove.css" ],
        "js": ["remove.js"],
      "run_at": "document_start"
    }
  ],
  "manifest_version": 2
}

remove.js

// you can also make the removal periodical in case the Ad provider keeps recreating itself
// here you can have more freedon to find elements that main contain certain part of a class name or id
document.addEventListener('DOMContentLoaded', function () {

    var all = document.getElementsByTagName("*");

    for (var i=0, max=all.length; i < max; i++) {
      // check id and hide if it matches google-ad-*
    }
    setTimeout(function () {
        var ads = document.getElementsByClassName("example-suspected-class");


        if (ads.length == 1) {

            ads[0].remove();
        }
    }, 100);

    setInterval(function () {
        var ads = document.getElementsByClassName("example-suspected-class");

        if (ads.length == 1) {

            ads[0].remove();
        }
    },10000);


});

remove.css

/* setup any css you susspect would mean something to web page, examples */
#slot_TL1 {display: none!important;}
.vp-off .mb-list-ad {display: none!important;}
.vp-off .mb-list-ad * {display: none!important;}

http://plnkr.co/edit/wPxuO0vndIBMTz1ajMyJ?p=preview

答案 3 :(得分:0)

在配置文件中有一个标志,你可以在本地开发/测试时为它设置一个值。