मेरी वेबसाइट पर एडब्लॉक का पता कैसे लगाएं?


370

मैं यह पता लगाने में सक्षम होना चाहूंगा कि क्या उपयोगकर्ता मेरी वेबसाइट पर आने पर एडब्लॉकिंग सॉफ़्टवेयर का उपयोग कर रहा है या नहीं। यदि वे इसका उपयोग कर रहे हैं, तो मैं इस वेबसाइट की तरह परियोजना का समर्थन करने के लिए एक संदेश प्रदर्शित करने के लिए कह रहा हूं, जो इसे बंद करने के लिए कहे करती है।

यदि आप उस साइट में प्रवेश करते हैं और आपके ब्राउज़र में किसी प्रकार का एडब्लॉक सॉफ्टवेयर सक्षम है, तो साइट वास्तविक विज्ञापन दिखाने के बजाय उपयोगकर्ताओं को यह बताते हुए एक छोटा बैनर दिखाती है कि विज्ञापन राजस्व का उपयोग परियोजना की मेजबानी के लिए किया जाता है और उन्हें एडब्लॉक बंद करने पर विचार करना चाहिए। ।

मैं अपनी वेबसाइट पर वह करना चाहता हूं, मैं उस पर adsense ads का उपयोग कर रहा हूं, मैं यह कैसे कर सकता हूं?



5
नवीनतम समाधान की तलाश करने वाले उपयोगकर्ताओं के लिए, कृपया जान लें कि github.com/sitexw/BlockAdBlock
yeaske

5
कुछ लोगों को वेब पर विश्लेषण और विज्ञापन देना पसंद नहीं है। कुछ साइटें जो मैंने देखी हैं, हमें बताती हैं कि राजस्व उनकी परियोजना का समर्थन करता है, विज्ञापनों में इतनी घिनौनी होती है कि यह हास्यास्पद हो जाता है।
पॉल

7
अब वे साइटें इसे अधिक से अधिक कर रही हैं (और इसका दुरुपयोग कर रही हैं, और उनके विज्ञापनों के बारे में हमसे झूठ बोल रही हैं, और हमें अपनी पूरी साइट को श्वेतसूची में प्रवेश करने के लिए मजबूर कर रही हैं ...) - क्या ऐसे कोई एक्सटेंशन या ट्रिक्स हैं जिनका हम उपयोग कर सकते हैं उन्हें पता लगाने से रोकने के लिए हम AdBlock + का उपयोग करते हैं? - मुझे यहाँ या वहाँ कुछ लक्षित बैनर विज्ञापनों को देखने में कोई आपत्ति नहीं है, लेकिन जैकिंग पर क्लिक करें, और निरंतर पूर्ण स्क्रीन वीडियो पॉप-अप मेरी चीज़ नहीं हैं।
ब्रेनस्ल्गस83

1
कृपया मेरा समाधान देखें, यह सरल और साफ है। शुद्ध जेएस, कोई अतिरिक्त अनुरोध, कोई बाहरी पुस्तकालय या प्लगइन्स या कोई अन्य बी.एस.
कमुलो निम्बस

जवाबों:


410

मेरा समाधान एक निश्चित विज्ञापन नेटवर्क के लिए विशिष्ट नहीं है और बहुत हल्का है। मैं कुछ सालों से इसे प्रोडक्शन में चला रहा हूं। AdBlock "ads" शब्द वाले सभी URL को ब्लॉक करता है। तो यही वह है जो मैंने किया:

मैंने अपने webroot में नाम के साथ एक छोटी सी js फ़ाइल जोड़ी ads.js

यह उस फ़ाइल में कोड की एकमात्र पंक्ति है

var canRunAds = true;

फिर मेरे पृष्ठ में कहीं:

<html>
  <head>
    <script src="/js/ads.js"></script>
  </head>
  <body>
    <script>
      if( window.canRunAds === undefined ){
        // adblocker detected, show fallback
        showFallbackImage();
      }
    </script>
  </body>
</html>

Chrome पर ads.js जैसी फाइलें कम से कम इन एडब्लॉकर्स द्वारा अवरोधित की जाती हैं:

  • AdBlock
  • ऐडब्लॉक प्लस
  • एडब्लॉक प्रो
  • Ghostery

2019-02-15 को अपडेट करें:

ऊपर दी गई सूची में घोस्टरी को जोड़ा गया क्योंकि एक्सटेंशन अब ads.js. के अनुरोधों को भी रोक देता है बेहद सुविधाजनक। क्या इसका मतलब यह है कि वास्तव में घोस्टरी हमारे विज्ञापनों को उनके विस्तार के साथ अवरुद्ध करने का पता लगाने में मदद कर रही है?

के साथ काम नहीं करता है:

गोपनीयता बैजर


1
क्या आप js/ads.jsकृपया पूर्ण लिंक दे सकते हैं ? जैसा कि मैं ब्लॉगर में हूं मुझे .jsकहीं अपलोड करना था (जैसे: Google ड्राइव) और उस मामले में लिंक शामिल नहीं है ads। यदि आप अपनी फ़ाइल का लिंक देते हैं तो यह वास्तव में उपयोगी होगा।
डेब

91
फ़ाइल में केवल "var canRunAds = true;" शब्द हैं। तो बस इसे स्वयं बनाएं।
समय

5
कुछ विज्ञापन ब्लॉकर्स विज्ञापनों को ब्लॉक नहीं करते प्रतीत होते हैं। जेएस फ़ाइल, मेरे लिए, क्रोम के लिए सरल एडब्लॉक।
ममगेरज

2
क्रोम के लिए एबीपी अच्छी तरह से प्रतिक्रिया कर रहा है, इसलिए सभी ठीक से काम करते हैं!
मैक्सिमे लाफारी

9
आप किसी एडब्लॉकर द्वारा अवरोधित URL पर अजाक्स अनुरोध चलाने का भी प्रयास कर सकते हैं। यदि यह सफल होता है, तो कोई एडब्लॉकर नहीं है, यदि यह विफल रहता है, तो एक एडब्लॉकर है।
सेथव्हीट

138

प्रत्यक्ष उत्तर नहीं है, लेकिन मैं विज्ञापन को लोड किए जाने के पीछे संदेश डालूंगा ... बल्कि यह पता लगाने की कोशिश कर रहा हूं कि यह तब दिखाई देगा जब विज्ञापन नहीं होगा।


5
उपयोगकर्ता अब भी एडब्लॉक का उपयोग करके इन अवरुद्ध विज्ञापन सूचनाओं को ब्लॉक कर सकते हैं: यह एकमात्र दोष है जो मुझे पता है।
एंडरसन ग्रीन

25
यह आसान हो सकता है, लेकिन इसे करने का उचित तरीका नहीं है, यदि आपका लेआउट विकृत हो जाता है या विज्ञापन धीरे-धीरे लोड होता है, तो उपयोगकर्ता त्रुटि की एक झलक पकड़ सकता है जो उससे संबंधित नहीं है। यह भी ध्यान रखें कि Adblock एबीपी उपयोगकर्ताओं पर लक्षित अप्रिय संदेशों को ब्लॉक करने के लिए उपाय कर रहा है। यदि आप उपयोगकर्ता को अनब्लॉक करने के लिए कहना चाहते हैं, तो इसे साधारण छिपाए जाने वाले संदेश के माध्यम से करें जो कि लेआउट के बाहर बैठता है (अन्य तत्वों को दूर नहीं धकेलता है)। पर देखो duckduckgo.com/?q=foo+bar ब्लॉक के साथ सक्षम होना चाहिए।
Xeevis

1
@Xeevis - मैं क्या देख रहा हूँ? - मुझे लगता है कि AdBlock + पहले से ही ब्लॉक करता है जो भी duckduckgo कर रहा है।
ब्रेनस्ल्गस83

101

http://thepcspy.com/read/how_to_block_adblock/

JQuery के साथ:

function blockAdblockUser() {
    if ($('.myTestAd').height() == 0) {
        window.location = 'http://example.com/AdblockNotice.html';
    }
}

$(document).ready(function(){
    blockAdblockUser();
});

बेशक, आपको AdblockNotice.html के लिए एक लैंडिंग पृष्ठ की आवश्यकता होगी, और .myTestAd वर्ग को आपके वास्तविक विज्ञापन कंटेनरों को प्रतिबिंबित करने की आवश्यकता है। लेकिन यह काम करना चाहिए।

संपादित करें

जैसा कि TD_Nijboer अनुशंसा करता है, एक बेहतर तरीका है :hidden(या :visible, जैसा कि मैं नीचे उपयोग करता हूं) चयनकर्ता का उपयोग करें ताकि display: noneयह भी जांचा जा सके:

function blockAdblockUser() {
    if ($('.myTestAd').filter(':visible').length == 0) {
        // All are hidden, or "not visible", so:
        // Redirect, show dialog, do something...
    } else if ($('.myTestAd').filter(':hidden').length > 0) {
        // Maybe a different error if only some are hidden?
        // Redirect, show dialog, do something...
    }
}

बेशक, इन दोनों को एक में जोड़ा जा सकता है ifयदि वांछित है ब्लॉक ।

ध्यान दें कि visibility: hiddenया तो कब्जा नहीं किया जाएगा (जहां लेआउट स्थान रहता है, लेकिन विज्ञापन दिखाई नहीं देता है)। यह जांचने के लिए कि एक और फिल्टर का उपयोग किया जा सकता है:

$('.myTestAd').filter(function fi(){
    return $(this).css('visibility') == 'hidden';
})

जो आपको विज्ञापन तत्वों की एक सरणी देगा, जो "अदृश्य" हैं (किसी भी 0समस्या से अधिक होने के साथ , सिद्धांत रूप में)।


16
इस मामले में पुनर्निर्देशन एक बुरा विचार है। यदि आपकी विज्ञापन सेवा नीचे जाती है, तो सभी आगंतुक उस पृष्ठ पर पुनर्निर्देशित हो सकते हैं। मैं दस्तावेज़ तैयार होने के बजाय विंडो ऑनलोड घटना का उपयोग करने की भी सिफारिश करता हूं।
एंडी ई

1
पता लगाने का एक बेहतर तरीका $ होगा ('myTestAd')। ("(छिपा हुआ")); जैसा कि मैनुअल निर्दिष्ट करता है कि यह भी पता लगाता है कि चौड़ाई / ऊंचाई 0 है और यदि प्रदर्शन = कोई नहीं।
TD_Nijboer

6
Redirecting in this case is a bad idea. If your advertising service goes down, all visitors could be redirected to that page.वास्तव में। यह उल्लेख करने के लिए नहीं कि वे काउंटर-माप को हराने के लिए एक सरल स्क्रिप्ट को एक साथ फेंक देंगे। इसके अलावा, क्या आप वास्तव में आक्रामक और जबरदस्त होने के द्वारा उपयोगकर्ताओं को अपने विज्ञापन-अवरोधकों को निष्क्रिय करने के लिए प्रेरित करेंगे? नहीं, यह सब पूरा होगा उन्हें पेशाब करना और उन्हें आपकी साइट के खिलाफ खट्टा करना होगा। अधिकांश साइटें केवल शत्रुतापूर्ण होने के बजाय एक संदेश प्रदर्शित करने का विकल्प चुनती हैं।
सिंटेक

यह मेरे लिए क्रोम में काम नहीं करता है। DOMReady इवेंट में, विज्ञापन अभी भी दिखाई दे रहा है।
nwellnhof

3
कृपया उपयोगकर्ताओं को आपकी साइट में प्रवेश करने से न रोकें क्योंकि उनके पास विज्ञापन अक्षम हैं - जो सिर्फ हथियारों की दौड़ को बढ़ाता है। - यदि आप हमें उन्हें चालू करने के लिए कहते हैं, तो हम यह कर सकते हैं - यदि आप हमें बाध्य करने का प्रयास करते हैं, तो हम या तो आपकी साइट पर जाना बंद कर देंगे, या हम अपने एडब्लॉकर पर एक बग रिपोर्ट करेंगे, और प्राप्त करेंगे यह आपकी साइट के लिए नियत है। - यह सटीक प्रकार का व्यवहार है जो उपयोगकर्ताओं को सुरक्षित रखने के लिए adblockers मौजूद है।
BrainSlugs83

92

कोई अतिरिक्त अनुरोध नहीं। कोई बाहरी पुस्तकालय नहीं। बस सादा, सरल जावास्क्रिप्ट:

var adBlockEnabled = false;
var testAd = document.createElement('div');
testAd.innerHTML = '&nbsp;';
testAd.className = 'adsbox';
document.body.appendChild(testAd);
window.setTimeout(function() {
  if (testAd.offsetHeight === 0) {
    adBlockEnabled = true;
  }
  testAd.remove();
  console.log('AdBlock Enabled? ', adBlockEnabled)
}, 100);

  • आप वर्ग adsbox के साथ एक तत्व बनाते हैं (AdBlock Plus की परिभाषा फ़ाइल में एक हटाने योग्य तत्व के रूप में परिभाषित)
  • आप इसे दस्तावेज़ में जोड़ते हैं और थोड़ी देर बाद जब आप इसका ऑफसेटहाइट पढ़ते हैं
  • यदि AdBlock स्थापित है, तो तत्व की कोई ऊंचाई नहीं होगी।

क्रिश्चियन हीलमैन के पद का श्रेय , मुझे लगता है कि यह AdBlock का पता लगाने के लिए सबसे अच्छा समाधान है।


5
ग्लिच को रोकने के लिए आप testAd.style.display = 'absolute'इसे स्क्रीन पर जोड़ और स्थानांतरित कर सकते हैं
गेराल्ड

4
अच्छा समाधान है, लेकिन उन लोगों के लिए जो 100 मी देरी से पीड़ित हैं, मैं सुझाव देता हूं कि डॉक्टर के शरीर में कुछ इस तरह से जोड़ दें: <div id="detect" class="ads ad adsbox doubleclick ad-placement carbon-ads" style="background-color:red;height:300px;width:300px;position: absolute;left:0;top:0;">&nbsp;</div>(बेशक सीएसएस के परीक्षण के बाद बदल दिया जाना चाहिए <div id="detect" class="ads ad adsbox doubleclick ad-placement carbon-ads" style="height:1px;width:1px;position: absolute;left:-999px;top:-999px;">&nbsp;</div>)
Godblessstrawberry

2
@ गेराल्ड गुड पॉइंट। लेकिन AFAIK, absoluteएक positionमूल्य है।
एम सेवन सात

क्या मैं सिर्फ जोड़ सकता हूं, मुझे केवल यह समाधान काम कर रहा है जब मैंने इसे एक window.onloadसमारोह में जोड़ा
पीटर कलन

ध्यान दें कि यह फ़ायरफ़ॉक्स के लिए AdBlock के लिए काम नहीं करता है
Eda190

42

अधिकांश विज्ञापनों को गतिशील रूप से जावास्क्रिप्ट में लोड किया जाता है। मैंने यह पता लगाने के लिए ऑनरोर घटना का उपयोग किया कि क्या विज्ञापन स्क्रिप्ट लोड की जा सकती है या नहीं। काम करने लगता है।

GoogleAds के साथ उदाहरण:

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" onerror="adBlockFunction();"></script>

इसका उपयोग अन्य तत्वों के साथ-साथ यह देखने के लिए किया जा सकता है कि क्या कोई विज्ञापन अवरोधक सामग्री को अवरुद्ध कर रहा है या नहीं। यदि दूरस्थ तत्व मौजूद नहीं हैं या नहीं पहुँचा जा सकता है तो यह विधि गलत सकारात्मकता उत्पन्न कर सकती है।


1
यह जांचने का सबसे अच्छा तरीका है कि विज्ञापन लोड हुआ है या नहीं..क्योंकि मैन्युअल रूप से ब्लॉक करने के लिए अवरोधक पर निर्भर अपनी स्क्रिप्ट लोड कर रहा है कि एक बार में विफल होने जा रहा है ..
MaZZly

यह गतिशील रूप से भरी हुई लिपियों के लिए सबसे अच्छा समाधान प्रतीत होता है।
कारका

यह लिखे जाने के बाद से कुछ बदल गया है या नहीं, मुझे नहीं पता, लेकिन मैं STANDS क्रोम प्लग-इन द्वारा फेयर एडब्लॉक के साथ आग नहीं लगा सकता।
मेलचेस्टर

मार्च 2018 तक, अभी भी सबसे अच्छा, सरल और निश्चित समाधान
डैनियल वुकसोविच

जैसा कि ऊपर कहा गया है कि निष्पक्ष एडब्लॉकर के साथ काम नहीं करता है, यह जांचना बेहतर हैoffsetHeight
cieunteung

17

यह पता लगाने के लिए कि क्या उपयोगकर्ता विज्ञापनों को रोक रहा है, आपको केवल विज्ञापन जावास्क्रिप्ट में एक फ़ंक्शन ढूंढना होगा और इसके लिए परीक्षण का प्रयास करना होगा। इससे कोई फर्क नहीं पड़ता कि वे विज्ञापन को अवरुद्ध करने के लिए किस पद्धति का उपयोग कर रहे हैं। Google Adsense विज्ञापनों के लिए यह कैसा दिखता है:

if(!window.hasOwnProperty('google_render_ad') || window.google_render_ad === undefined) { 
    //They're blocking ads, display your banner
}

यह विधि यहाँ उल्लिखित है: http://www.metamorphosite.com/detect-web-popup-blocker-software-adblock-spam


8
google_render_ad अब किसी भी समय अपरिभाषित है, टाइपोफ़ (window.google_jobrunner)! = 'ऑब्जेक्ट' मेरे लिए काम करता है।
दिमित्री कोरोटोवस्की

4
चूँकि यह आपके नियंत्रण का कोड नहीं है, मुझे लगता है कि इस पर भरोसा करने के लिए एक बुरा विचार है, क्योंकि लाइब्रेरी का एक रिफ्लेक्टर आपके स्क्रिप्ट को सभी उपयोगकर्ताओं के लिए विज्ञापन ब्लॉक का पता लगाने का कारण होगा।
पैट्रिक

1
typeofयदि आप ऑब्जेक्ट की प्रॉपर्टी की जाँच करते हैं तो एक ओवरहेड है। सरल का प्रयोग करें === undefined
रोबो रोबोक

12

Jquery के साथ मेरा सबसे आसान उपाय है:

$.ajax({
    url: "/scripts/advertisement.js", // this is just an empty js file
    dataType: "script"
}).fail(function () {
    // redirect or display message here
});

ads.js में कुछ भी नहीं है। जब कोई एडब्लॉक का उपयोग करता है, तो वह विफल हो जाता है और फ़ंक्शन को कॉल किया जाता है।


10

मुझे पता है कि पहले से ही पर्याप्त उत्तर हैं, लेकिन जब से यह सवाल Google पर आया है कि इस विषय पर "पता लगाएँ" के लिए खोज की गई है, मैं उस स्थिति में कुछ अंतर्दृष्टि प्रदान करना चाहता हूं जब आप विज्ञापन का उपयोग नहीं कर रहे हैं

विशेष रूप से, इस उदाहरण से आप यह पता लगा सकते हैं कि फ़ायरफ़ॉक्स एडब्लॉक द्वारा प्रदान की गई डिफ़ॉल्ट एडब्लॉक-सूची का उपयोग किया गया है या नहीं। यह लाभ उठाता है कि इस ब्लॉकलिस्ट में सीएसएस आईडी के साथ एक तत्व अवरुद्ध है #bottomAd। यदि मैं पृष्ठ में इस तरह के एक तत्व को शामिल करता हूं और इसकी ऊंचाई के लिए परीक्षण करता हूं, तो मुझे पता है कि एडब्लॉकिंग सक्रिय है या नहीं:

<!-- some code before -->
<div id="bottomAd" style="font-size: 2px;">&nbsp;</div>
<!-- some code after -->

शेष सामान्य jQuery संदिग्ध के माध्यम से किया जाता है:

$(document).ready( function() {
  window.setTimeout( function() {
    var bottomad = $('#bottomAd');
    if (bottomad.length == 1) {
      if (bottomad.height() == 0) {
        // adblocker active
      } else {
        // no adblocker
      }
    }      
  }, 1);
}

जैसा कि देखा जा सकता है, मैं setTimeout1ms के कम से कम समय के साथ उपयोग कर रहा हूं । मैंने इसे विभिन्न ब्राउज़रों पर परीक्षण किया है और अधिकांश समय, readyहमेशा वापस लौटे तत्व के लिए सीधे जाँच करता है ; कोई फर्क नहीं पड़ता कि एडब्लॉक सक्रिय था या नहीं। मुझे इस बारे में दो विचार आ रहे थे: या तो प्रतिपादन अभी तक नहीं किया गया था या एडब्लॉक ने अभी तक किक नहीं किया था। मैंने आगे जांच करने की जहमत नहीं उठाई।


मुझे वास्तव में यह उत्तर बहुत पसंद है क्योंकि इसमें अतिरिक्त अनुरोध करना शामिल नहीं है क्या नकली विज्ञापनों के बजाय इस दृष्टिकोण के लिए सहमति है?
JeroenVdb

लंबाई और ऊँचाई का परीक्षण करने के बजाय, क्या आप केवल ($ ("# निचला विज्ञापन") का उपयोग नहीं कर सकते। (('छिपा हुआ)') ...?
इवान लैंग्लोइस

@EvanLanglois, मुझे पता है कि आपने दो साल पहले पूछा था, लेकिन आपके सवाल ने वास्तव में मुझे दिलचस्पी दी, इसलिए मैं इस पर जानकारी के लिए गोताखोर गया। जाहिर है, यह .is(":hidden")जाँच इस बात पर निर्भर करती है कि ऊँचाई और चौड़ाई दोनों शून्य हैं। यदि आप अभी ऊंचाई 0 पर सेट करते हैं, लेकिन div अभी भी एक चौड़ाई रखता है, तो इसे jQuery द्वारा "छिपा हुआ" नहीं माना जाता है। इसलिए, चाहे आप कह सकते हैं, .is(":hidden")कुछ हद तक इस बात पर निर्भर करता है कि एडब्लॉकर कैसे सामग्री का आकार बदलने / छिपाने का निर्णय लेता है।
स्पेन्सर डी

10

मेरी सलाह है: यह मत करो!

कोई भी परिदृश्य जहां आप लोगों को "गलत काम" के रूप में मानते हैं, उन्हें वापस लड़ने का परिणाम मिलता है।

यहाँ मेरा प्रस्ताव है।

पाठ के साथ पृष्ठ के शीर्ष पर एक छोटा सा विनीत संदेश रखें (चाहे विज्ञापन अवरुद्ध हों) पाठ I *totally* respect your right to block adsऔर दूसरे पृष्ठ / पॉप-अप के लिंक के साथ Read more ...

दूसरे पृष्ठ पर, यह स्पष्ट करें कि आप समझते हैं कि यह उनका कंप्यूटर है और वे विज्ञापन अवरोधक का उपयोग करने के लिए स्वतंत्र हैं।

गैर-अभियोगात्मक तरीके से यह भी स्पष्ट करें कि इन ब्लॉकर्स का उपयोग आपके लिए महान सामग्री वितरित करना अधिक कठिन बना देता है (यह बताते हुए कि विस्तार से क्यों) और वह, जबकि आप अपनी साइट पर नहीं होने वाले विज्ञापन को अवरुद्ध करना पसंद करेंगे, यह पूरी तरह से उनका फैसला है। अवरोधन को बंद करने की सकारात्मकता पर ध्यान दें।

जो लोग विज्ञापनों का घोर विरोध कर रहे हैं, वे इस बात को नज़रअंदाज़ कर देंगे, लेकिन आप कभी भी उन्हें समझाने का मौका नहीं छोड़ेंगे। जो लोग उदासीन हैं वे आपकी अपील से भलीभांति प्रभावित हो सकते हैं क्योंकि आप पूरे नहीं कर रहे हैं "मुझे अपना रास्ता दिखाने दें या मैं अपनी गेंद ले जाऊंगा और घर जाऊंगा" बात यह है कि ईमानदारी से पांच साल के बच्चों का अनन्य डोमेन होना चाहिए।

याद रखें, किसी ने आपके सिर पर बंदूक नहीं रखी और आपको अपना सामान नेट पर डालने के लिए मजबूर किया। अपने पाठकों / उपयोगकर्ताओं के साथ सम्मान का व्यवहार करें और आप संभवतः उनमें से एक अच्छी संख्या पाएंगे।


1
कैसे के बारे में "ऐसा लगता है कि आप एक विज्ञापन अवरोधक का उपयोग करते हैं। यह अच्छा है! इसलिए हम करते हैं :) कृपया हमारे दोस्तों को हमारे बारे में बताकर एक्स का समर्थन करें!"
ADTC 8

3
हे कुछ इस तरह से मुद्रीकरण करने का प्रयास करें ... विज्ञापन नियमित भुगतान का तरीका है, इसलिए उपयोगकर्ता को भुगतान करना चाहिए
dev1223

एडब्लॉक चालू होने पर मेरे लेआउट के बारे में क्या है?
गोडबलेसस्ट्रॉबेरी

5
यदि कोई वेबसाइट मुझे अपने विज्ञापन अवरोधक को निष्क्रिय करने के लिए मजबूर करती है, तो मैं आगे बढ़ता हूं। वे हारते हैं, और मुझे परवाह नहीं है। मैं अभी Google की एक कैश्ड कॉपी खींचता हूं।
RayfenWindspear

1
@ टैल्बॉय, मेरे जवाब में कोई नैतिकता नहीं है। केवल उन दर्शकों की वास्तविकता है जिन्हें आप लक्षित करने का प्रयास कर रहे हैं। और, हालांकि आपके इरादे के अनुसार वर्णन किया जा सकता है, प्रश्न का फिर से पढ़ना आपको दिखाएगा कि यह विशेष रूप से उपयोगकर्ता को विज्ञापनों की अनुमति देने के लिए था, लेआउट या कुछ इस तरह की सफाई नहीं करने के लिए। यह वह सवाल था जिसका मैं जवाब दे रहा था, कुछ अन्य सवाल पर आधा दशक बाद की परिकल्पना की गई थी :-)
paxdiablo

9

वे इस तथ्य का उपयोग कर रहे हैं कि Google का विज्ञापन कोड आईडी "iframe" के साथ एक iframe बनाता है। तो जब तक आपके पास पहले से ही उस आईडी के साथ आपके पेज पर कुछ नहीं है, यह आपके लिए भी काम करेगा।

<p id="ads">
<script type="text/javascript"><!--
google_ad_client = "their-ad-code-here";
/* 160x600, droite */
google_ad_slot = "their-ad-code-here";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

</p>

<script type="text/javascript"><!--
if(document.getElementsByTagName("iframe").item(0) == null)
{
    document.write("<div style='width:160px; height:600px; padding-top: 280px; margin-left:5px;border:1px solid #000000; text-align:center; font-family:century gothic, arial, helvetica, sans serif;padding-left:5px;padding-right:5px;'>Advertising seems to be blocked by your browser.<br /><br /><span style='font-size:10px'>Please notice that advertising helps us to host the project.<br /><br />If you find these ads intrusive or inappropriate, please contact me.</span><img src='http://www.playonlinux.com/images/abp.jpg' alt='Adblock Plus' /></div>");
}
--></script>

9

बस अपनी साइट पर छोटी स्क्रिप्ट जोड़ें:

var isAdsDisplayed = true;

नाम adsbygoogle.js के साथ

फिर निम्नलिखित करें:

<script src="/js/adsbygoogle.js"></script>
<script>
if(window.isAdsDisplayed === undefined ) {
  // AdBlock is enabled. Show message or track custom data here
}
</script>

इसका समाधान यहां मिला


यह बहुत बढ़िया आदमी है, बहुत बहुत धन्यवाद 💓
जोडशोप

8

मैंने देखा कि पिछली टिप्पणियाँ परीक्षण के उद्देश्य के रूप में Google adsense का उपयोग करती हैं। कुछ पृष्ठ adsense का उपयोग नहीं करते हैं, और परीक्षण के रूप में adsense ब्लॉक का उपयोग करना वास्तव में एक अच्छा विचार नहीं है। क्योंकि adsense block आपके SEO को नुकसान पहुंचा सकता है। यहाँ उदाहरण है कि मैं कैसे adblocker सरल अवरुद्ध वर्ग द्वारा पता लगाता हूँ:

एचटीएमएल:

<div class="ad-placement" id="ablockercheck"></div>
<div id="ablockermsg" style="display: none"></div>

jQuery:

$(document).ready(function()
{
   if(!$("#ablockercheck").is(":visible"))
   {
     $("#ablockermsg").text("Please disable adblocker.").show();
   }
});

"ablockercheck" एक आईडी है जो एडब्लॉकर को ब्लॉक करता है। इसलिए यह जाँचने पर कि यह दिखाई दे रहा है कि आप पता लगा सकते हैं कि एडब्लॉकर चालू है या नहीं।


7

AdBlock AdSense (आदि) जावास्क्रिप्ट फ़ाइलों को लोड करने से रोकता है। इसलिए, यदि आप ऐडसेंस विज्ञापनों के अतुल्यकालिक संस्करण का उपयोग कर रहे हैं, तो आप देख सकते हैं कि adsbygoogleक्या ए Array। एसिंक्रोनस लिपि है ... अतुल्यकालिक के बाद से यह कुछ सेकंड के बाद जाँच की जानी चाहिए। यहाँ एक मोटी रूपरेखा है :

window.setTimeout(function(){
    if(adsbygoogle instanceof Array) {
        // adsbygoogle.js did not execute; probably blocked by an ad blocker
    } else {
        // adsbygoogle.js executed
    }
}, 2000);

स्पष्ट करने के लिए, यहाँ एक उदाहरण है कि ऐडसेंस अतुल्यकालिक विज्ञापन कोड कैसा दिखता है:

<!-- this can go anywhere -->
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

<!-- this is where the ads display -->
<ins class="adsbygoogle" ...></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

ध्यान दें कि adsbygoogleएक ऐरे के रूप में इनिशियलाइज़ किया गया है। adsbygoogle.jsपुस्तकालय में इस सरणी में परिवर्तन Object {push: ...}जब वह निष्पादित। एक निश्चित समय के बाद चर के प्रकार की जाँच करना आपको बता सकता है कि क्या स्क्रिप्ट भरी हुई थी।


यह ज्यादातर समय काम करेगा लेकिन क्या होगा यदि उपयोगकर्ता के पास धीमा कनेक्शन है (मोबाइल उपकरणों के बारे में सोचें)?
लुका स्टेब

6

यह दृष्टिकोण मैं अपनी साइट पर उपयोग करता हूं, शायद आपको यह मददगार लगे। मेरी राय में, यह सबसे सरल है उपाय है।

डेवलपर कंसोल में किसी भी अवरुद्ध विज्ञापनों के इन चयनकर्ताओं का निरीक्षण करके AdBlocker विशिष्ट वर्गों और HTML तत्वों को ब्लॉक करता है (आप सभी सूचीबद्ध हैं) आप देख सकते हैं कि कौन से तत्व हमेशा अवरुद्ध रहेंगे।

जैसे कि स्टैकओवरफ़्लो पर इस प्रश्न पृष्ठ का निरीक्षण करें और आपको अवरुद्ध विज्ञापनों का गुच्छा दिखाई देगा।

उदाहरण के लिए, bottom-adवर्ग वाला कोई भी तत्व स्वचालित रूप से अवरुद्ध है।

  1. मैंने bottom-adकक्षा के साथ एक गैर-रिक्त div तत्व बनाया : <div class="bottom-ad" style="width: 1px; height: 1px;">HI</div>
  2. पृष्ठ लोड होने के बाद बस जांचें कि क्या यह तत्व छिपा हुआ है। मैंने jQuery का उपयोग किया, लेकिन जावास्क्रिप्ट का उपयोग करने के लिए स्वतंत्र महसूस करें: $('.bottom-ad').css('display') == "none"या उपयोग करके भी बेहतर$('.bottom-ad').is(':visible')

यदि मान है true, तो AdBlocker सक्रिय है।


6

आपको अतिरिक्त HTTP अनुरोध की आवश्यकता नहीं है, आप बस एक नकली ऐड की ऊंचाई की गणना कर सकते हैं।

वैसे, यहां उन तत्वों से मिलान करने वाली एक पूरी सूची है जो एडब्लॉकर रेंडरिंग से बचते हैं।

window.adBlockRunning = function() {
    return (getComputedStyle(document.getElementById("detect"))["display"] == "none") ? true : false;
  }()

console.log(window.adBlockRunning);
#detect {
  height: 1px;
  width: 1px;
  position: absolute;
  left: -999em;
  top: -999em
}
<div id="detect" class="ads ad adsbox doubleclick ad-placement carbon-ads"></div>


6

सुरक्षित तरीका यह है कि अपने विज्ञापनों को अंदर लपेटें <div>और ऊँचाई की जाँच करें

<div id="check-ab">
/* your ads code */
</div>

setTimeout(function(){
  if(document.getElementById("check-ab").offsetHeight === 0){
    console.log("ads blocked");
  }
  else{
    console.log("ads running");
  }
}, 100);

यह एडब्लॉक प्लस और ब्लूहेल फ़ायरवॉल के साथ काम करता है।


6

अगर कोई एडब्लॉक है, तो यह जांचने का एक प्रभावी तरीका है: यदि Google विज्ञापनों के URL को ट्रिगर करने का प्रयास करके एडब्लॉक सक्षम किया गया है तो बस जांचें। यदि हाँ, तो कॉलबैक_हेस_डब्लॉक चलाएँ, यदि नहीं तो कॉलबैक_नो_डब्लॉक चलाएँ। इस समाधान में एक अनुरोध अधिक खर्च होता है लेकिन कम से कम यह काम करता है:

var hasAdBlock = function (callback_has_adblock, callback_no_adblock) {

    $.getScript( "https://pagead2.googlesyndication.com/pagead/show_ads.js" )
        .done(function( script, textStatus ) {
            callback_no_adblock();
        })
        .fail(function( jqxhr, settings, exception ) {
            callback_has_adblock();
    });
};

यह समाधान सभी प्रकार के विज्ञापनों के लिए काम करता है, न कि केवल गूगल एडसेंस के लिए।


कुछ एडब्लॉकर jQuery को ब्लॉक करते हैं, फिर स्क्रिप्ट नहीं चलती है क्योंकि "$ परिभाषित नहीं है"। बेहतर शुद्ध जीएस का उपयोग करें।
nyx

3

इस सवाल की उम्र के बावजूद, मैंने हाल ही में इसे बहुत उपयोगी पाया और इसलिए केवल यह मान सकता है कि अन्य अभी भी इसे देख रहे हैं। यहाँ और दूसरी जगहों पर देखने के बाद, मैंने देखा कि एक मुख्य अवरोधक का पता लगाने के लिए मुख्य तीन ग्राहक पक्ष जाँच के लिए थे, जो निम्न थे div:img , अवरुद्धiframe और अवरोधित संसाधनों (जावास्क्रिप्ट फ़ाइलें)।

हो सकता है कि यह शीर्ष या विरोधाभास पर हो, लेकिन यह विज्ञापन अवरोधक प्रणालियों के लिए शामिल है जो चयन में से केवल एक या दो को रोकते हैं और इसलिए कवर नहीं किया गया हो सकता है कि आपने केवल एक चेक किया था।

पृष्ठ पर आपके द्वारा जोड़े जा रहे चेक जोड़े जा रहे हैं: (मैं jQuery का उपयोग कर रहा हूँ)

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="advertisement.js"></script>
<script type="text/javascript" src="abds.js"></script>

और पृष्ठ पर कहीं और निम्नलिखित जोड़ें:

<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>

मैंने टेक्स्ट नाम के साथ बाहरी रूप से होस्ट की गई छवि के साथ "एडवर्ट" और AdSense द्वारा उपयोग किए गए आयामों (प्लेसहोल्ड के लिए धन्यवाद!) के साथ एक डिव का उपयोग किया।

में advertisement.jsआप दस्तावेज़ जो हम बाद के लिए जाँच कर सकते हैं के लिए कुछ संलग्न करना होगा। हालाँकि ऐसा लगता है कि आप पहले की तरह ही कर रहे हैं, आप वास्तव में फ़ाइल ( advertisement.js) के लिए ही लोड हो रहे हैं, आउटपुट नहीं।

$(document).ready(
{

    $("body").append("<div id=\"myTestAd2\">check</div>");

});

और फिर विज्ञापन अवरोधक पहचान स्क्रिप्ट जो सब कुछ जोड़ती है

$(document).ready(function()
{
    var ifr = '<iframe id="adServer" src="http://ads.google.com/adserver/adlogger_tracker.php" width="300" height="300"></iframe>';
    $("body").append(ifr);
});

$(window).on("load",function()
{

    var atb = $("#myTestAd");
    var atb2= $("#myTestAd2");
    var ifr = $("#adServer");

    setTimeout(function()
    {

        if( (atb.height()==0) ||
            (atb.filter(":visible").length==0) ||
            (atb.filter(":hidden").length>0) ||
            (atb.is("hidden")) ||
            (atb.css("visibility")=="hidden") ||
            (atb.css("display")=="none") ||
            (atb2.html()!="check") ||
            (ifr.height()!=300) ||
            (ifr.width()!=300) )
        {
            alert("You're using ad blocker you normal person, you!");
        }

    },500);

});

जब दस्तावेज़ तैयार हो जाता है , अर्थात मार्कअप लोड हो जाता है, तो हम दस्तावेज़ में iframe भी जोड़ते हैं। फिर, जब विंडो लोड हो जाती है , अर्थात सामग्री झुकाव। चित्र आदि लोड किए गए हैं, हम जांचते हैं:

  • पहले टेस्ट डिव के आयाम और दृश्यता।
  • कि दूसरे टेस्ट डिव का कंटेंट "चेक" है, जैसा कि अगर advertimsent.jsऐसा नहीं होता ब्लॉक ।
  • आयाम (और मैं दृश्यता का अनुमान लगाता हूं, क्योंकि एक छिपी हुई वस्तु की कोई ऊंचाई या चौड़ाई नहीं है?)

और शैलियों:

div#myTestAd, iframe#adServer
{
    display: block;
    position: absolute;
    left: -9999px;
    top: -9999px;
}

div#myTestAd2
{
    display: none;
}

उम्मीद है की यह मदद करेगा


3

यदि नए AdSense कोड का उपयोग कर रहे हैं, तो आप सामग्री या सीएसएस चेक का सहारा लेकर एक आसान चेक कर सकते हैं।

अपने विज्ञापनों को अपने मार्कअप में सामान्य रखें:

<ins class="adsbygoogle" style="display: block;"
   data-ad-client="ca-pub-######"
   data-ad-slot="#######"
   data-ad-format="auto"></ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>

फिर आप अपने पृष्ठ के निचले भाग में adsense कोड को कॉल करें ( स्क्रिप्ट को कॉल करते समय ध्वज का उपयोग करें ):"async"adsbygoogle.js

<script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

फिर नीचे दिए गए कोड के इस छोटे स्निपिट को जोड़ें:

<script>
if (!adsbygoogle.loaded) {
   // do something to alert the user
}
</script>

ऐडसेंस हमेशा बनाता है / ध्वज सेट adsbygoogle.loadedकरने के लिए trueजब विज्ञापन लोड किए गए हैं, आप कुछ सेकंड से जांच में देरी करने के लिए एक setTimeout सुविधा में जाँच लगा सके।


2
यह पाठ्यक्रम इस बात पर निर्भर करता है कि विज्ञापन कैसे अवरुद्ध किए गए। यदि आपका एडब्लॉकिंग सॉफ़्टवेयर AdSense को पूरी तरह से लोड करने से रोक रहा है, तो यह काम करेगा। लेकिन अगर आपका एडब्लॉकिंग सॉफ़्टवेयर सीएसएस डिस्प्ले प्रॉपर्टी को "कोई नहीं" या संबंधित डिव की ऊंचाई को 0 पर सेट करने जैसा कुछ कर रहा है, तो यह काम नहीं कर सकता है।
बैंकाकियन

सच। मुझे नहीं लगता कि सभी विज्ञापनों के 100% को पकड़ने का एक आसान तरीका है, लेकिन कम से कम आप उनमें से कुछ को पकड़ सकते हैं।
ट्रॉय मोरहाउस

3

अधिकांश एडब्लॉकर तत्व के लिए HTTP अनुरोध को रद्द ads.jsकर 0pxदेता है लेकिन कुछ समय के लिए एडब्लॉकर ने DOM को हटा दिया , और ऊपर का कुछ उत्तर विफल हो जाएगा क्योंकि तत्व के अस्तित्व की जांच नहीं की जाती है।

उपयोग करना setTimeout()अच्छा अभ्यास है क्योंकि इसके बिना, स्क्रिप्ट को एडब्लॉकर के साथ जोड़ देगा।

नीचे दी गई लिपि यह जांच करेगी कि डोम मौजूद है या नहीं और offsetHeightअगर किसी तत्व की मौजूदगी है तो उसकी जांच करेगा ।

setTimeout(function() {
  var a = document.querySelector('.showads'),
    b = a ? (a.offsetHeight ? false : true) : true;
  console.log('ads blocked?', b)
}, 200); // don't too fast or will make the result wrong.
<div class="ads showads">
  Lorem ipsum dolor sit amet, consectetur adipisicing elit.
</div>


2

उपरोक्त सभी उत्तर मान्य हैं, हालांकि अधिकांश डीएनएस-स्तरीय विज्ञापन अवरुद्ध करने के लिए काम नहीं करेंगे।

DNS- स्तरीय विज्ञापन ब्लॉकर्स (जैसे पाई-होल) ) मूल रूप से विज्ञापन अवरुद्ध करने वाले डोमेन की सूची के लिए NXDOMAIN (डोमेन मौजूद नहीं है) (जैसे कि जब यह करता है तो telemetry.microsoft.com "अस्तित्व में नहीं" होगा)।

इसे दरकिनार करने के कुछ तरीके हैं:

विधि A : IP पते द्वारा विज्ञापनों के लिए अनुरोध, डोमेन नहीं।

यह विधि थोड़ी कष्टप्रद है क्योंकि आपको आईपी पते का ध्यान रखना होगा। यदि आपका कोड नियमित रूप से रखरखाव या अद्यतन नहीं किया गया है तो यह समस्याग्रस्त होगा।

विधि B : क्लाइंट के NXDOMAIN की रिपोर्ट करने पर भी विफल रहने वाले सभी अनुरोध ब्लॉक करें ।

अगर यह "वैध" NXDOMAIN है तो यह उपयोगकर्ताओं के लिए बहुत कष्टप्रद होगा।


1
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>var adb=true;</script>
<script src="./getbanner.cfm?"></script>
<script>
$(document).ready(function(){if(adb)alert('AdBlock!');});
</script>

और getbanner.cfm फ़ाइल में:

adb = false;

मुझे लगता है कि यह एडब्लॉक का पता लगाने का सबसे आसान तरीका है।


अन्य अवरुद्ध फ़ाइलें: easylist-downloads.adblockplus.org/easylist.txt यह डिफ़ॉल्ट
ऐडब्लॉक

adb trueहमेशा लगता है
Deb

1

इसी से मेरा काम बना है:

function isAdBlocked() {
     return (typeof(window.google_jobrunner) === "undefined") ? true : false;
}

$(document).ready(function(){
    if(isAdBlocked()) {
       alert('Y U NO LIKE ADS?');
    }
});

बस यही कोशिश की; काम नहीं करता। जब कोई विज्ञापन अवरोधक सॉफ़्टवेयर स्थापित नहीं होता है तब भी हमेशा सही रहता है।
इक्नेप्सनाई 21

ध्यान रखें कि यह केवल उस पृष्ठ पर काम करेगा जहाँ आप AdSense का उपयोग कर रहे हैं। अन्यथा यह हमेशा सही वापस आएगा क्योंकि यह सही प्रतिक्रिया है - window.google_jobrunner किसी भी और सभी पृष्ठों में पता नहीं लगाया जाएगा। केवल वही जो Google AdSense का उपयोग कर रहे हैं। आप वास्तव में मेरी साइट पर काम कर रहे इस कोड को देख सकते हैं: ruddl.com
jesal

दिलचस्प है कि आपका तरीका उसी संदेश का उपयोग करने के लिए होता है जैसा कि HowToGeek द्वारा उपयोग किया जाता है । रिकॉर्ड के लिए, एक संदेश बॉक्स प्रदर्शित करना आपकी साइट के खिलाफ गुस्सा और खट्टा उपयोगकर्ताओं के अलावा कुछ नहीं करता है; अधिकांश साइटें एक संदेश को इन-पेज प्रदर्शित करने का विकल्प चुनती हैं (HTG दोनों करने की कोशिश करती है, लेकिन केवल कष्टप्रद पॉप-अप कार्य करता है)।
सिंटेक

1

मुझे पता है कि यह पहले से ही उत्तर दिया गया है, लेकिन मैंने सुझाए गए नमूना साइट को देखा, और मुझे लगता है कि वे इसे इस तरह करते हैं:

<script type="text/javascript">
if(document.getElementsByTagName("iframe").item(0) == null) {
    document.write("<div style="width: 160px; height: 600px; padding-top: 280px; margin-left: 5px; border: 1px solid #666666; color: #FFF; background-color: #666; text-align:center; font-family: Maven Pro, century gothic, arial, helvetica, sans-serif; padding-left: 5px; padding-right: 5px; border-radius: 7px; font-size: 18px;">Advertising seems to be blocked by your browser.<br><br><span style="font-size: 12px;">Please notice that advertising helps us to host the project.<br><br>If you find these ads intrusive or inappropriate, please contact me.</span><br><img src="http://www.playonlinux.com/images/abp.png" alt="Adblock Plus"></div>");
};
</script>

1

टाइमआउट और DOM सूँघने की कोई ज़रूरत नहीं है। बस लोकप्रिय विज्ञापन नेटवर्क से स्क्रिप्ट लोड करने का प्रयास करें, और देखें कि क्या विज्ञापन अवरोधक ने HTTP अनुरोध को रोक दिया है।

/**
 * Attempt to load a script from a popular ad network. Ad blockers will intercept the HTTP request.
 *
 * @param {string} url
 * @param {Function} cb
 */
function detectAdBlockerAsync(url, cb){
    var script = document.createElement('script');

    script.onerror = function(){
        script.onerror = null;
        document.body.removeChild(script);
        cb();
    }

    script.src = url;
    document.body.appendChild(script);
}

detectAdBlockerAsync('http://ads.pubmatic.com/AdServer/js/gshowad.js', function(){
    document.body.style.background = '#c00';
});

1

इसे हल करने के लिए बस अपना "प्लगइन" बनाया और यह वास्तव में अच्छी तरह से काम करता है:

adBuddy + jsBuddy:

ADBuddy JSBuddy GitHub

मैंने मोबाइल संगतता और jsBlocking का पता लगाया। सॉफ़्टवेयर ; साथ ही इसे उत्तरदायी बनाया।

यह कॉफ़ीवेयर लाइसेंस के तहत खोला गया है


प्रयास की सराहना करते हैं, लेकिन यह adblock के साथ काम करने के लिए नहीं लगता है ... कम से कम इस टिप्पणी को लिखने के रूप में।
arunskrish

यह adBlock के साथ काम करता है, एक साइट जहां मैंने इस प्लगइन को लागू किया है वह है calyphrox.net, जहां कोई भी वास्तव में प्लगइन कार्यों को सत्यापित कर सकता है।
ज्मलेविक

3
लिंक डेड है ... क्या हम इसे हटा सकते हैं?
इवान लैंग्लिस

2
कृपया लिंक को अपडेट करें, यह एक बुरा जवाब बना रहा है।
यज़ान रावशदेह

0

मैं आपके तनाव को समझता हूं और आप जांच सकते हैं कि क्या तत्व स्क्रिप्ट द्वारा बनाया गया है या तत्व छिपा हुआ है। और अगर हम विज्ञापन-अवरोधन के बारे में बोलते हैं तो आप केवल तत्व दृश्यता पर भरोसा कर सकते हैं, तत्व उपस्थिति पर नहीं।

तृतीय-पक्ष स्क्रिप्ट के साथ बनाया गया तत्व कभी भी मौजूद नहीं होगा, कि अगर स्क्रिप्ट पल में उपलब्ध नहीं है (DNS त्रुटि, दूरस्थ वेब सर्वर त्रुटि, ऑफ़लाइन वेब पेज प्रीलोड, आदि), और आपको हमेशा गलत सकारात्मक मिलेगा।

चेक के साथ अन्य सभी उत्तर सही हैं, लेकिन इसे ध्यान में रखें।


0

timing's जवाब अच्छा लगता है, लेकिन कोई और अधिक काम नहीं कर रहा है, इसलिए मैंने js फ़ाइल का नाम 'adsense' से 'विज्ञापनों' में अपडेट किया है और यह एक आकर्षण की तरह काम कर रहा है!

यहाँ कोड है, शायद यह wil किसी की मदद करे:

<html>
      <head>
            <script src="/adsense.js"></script>
      </head>
             <body>
                   <script>
                           if( window.adblockDetecter === undefined ){
                           // Do anithing, adblocker detected!
                           alert('Adblocker Detected!');}
                   </script>
            </body>
</html>

Js फ़ाइल में बस यह लाइन डालें: var adblockDetecter = true;


0

अब AdBlock Detector नामक एक साधारण JS स्क्रिप्ट का उपयोग करने का एक बेहतर तरीका यह है कि इसका उपयोग
कैसे किया जाए: इसे
अपने <head>अनुभाग में जोड़ें :

<script type="text/javascript">
window.onload = function() {
var iframe = document.createElement('iframe'),
    randomDomain = Math.floor(Math.random() * (10000 - 100 + 1)) + 100,
    iframeLoaded = true;

iframe.src = "http://"+ randomDomain +".com/ads.html";
iframe.height = ".1px";
iframe.width = ".1px";
iframe.id = 'some-ad';
iframe.onload = function() {iframeLoaded = false;};

document.body.appendChild(iframe);

setTimeout(function() { 
    var someAd = document.getElementById('some-ad');
    if(!iframeLoaded ||
       someAd == null || 
       someAd.style.display == "none" || 
       someAd.style.display == "hidden" || 
       someAd.style.visibility == "hidden" || 
       someAd.offsetHeight == 0)
        document.getElementById('ab-message').style.display = 'block';
    someAd.remove();
}, 500);
};
</script>`<br>

अब आप उस ab-messageआईडी का उपयोग कर सकते हैं जहाँ आप AdBlock उपयोगकर्ताओं को संदेश दिखाना चाहते हैं:

<div id="ab-message" style="display: none">Your message here!</div>

मूल रूप से इसे छिपाने के लिए इनलाइन शैली पर ध्यान दें (बेशक, आप अपनी सीएसएस फ़ाइल से भी ऐसा कर सकते हैं)।
यह भी ध्यान दें कि इसमें 500ms लगते हैं, ऐसा इसलिए है क्योंकि इसके लिए एडब्लॉकर को अपना काम करना होगा या यह काम नहीं करेगा।

यह स्क्रिप्ट कैसे काम करती है, इसकी थोड़ी व्याख्या

सबसे पहले, यह एक बेतरतीब ढंग से उत्पन्न लिंक के स्रोत के साथ एक iframe जोड़ता है। (यह यादृच्छिक रूप से उत्पन्न होता है क्योंकि कुछ एडब्लॉक स्मार्ट होते हैं, कुछ बिंदु पर, उन्हें पता चलता है कि एक लिंक नकली है)।
फिर यह उस iframe (यदि इसे सफलतापूर्वक लोड किया गया था या यदि इसकी शैली को संशोधित किया गया था) पर कई चेक चलाता है। यदि इनमें से एक परीक्षण सत्य है, तो यह प्रदर्शित करता हैab-message उपयोगकर्ताओं को एडब्लॉक करने के लिए तत्व ।

यह स्क्रिप्ट अधिकांश (यदि सभी नहीं) विज्ञापन ब्लॉकर्स के लिए काम करती है।

अतिरिक्त

कोई मतलब नहीं, वास्तव में, बस एक जिस्ट बनाया जा सकता था, लेकिन इसके बजाय मैंने एक गितूब प्रोजेक्ट बनाया, लेकिन फिर भी, इसे जांचें और अगर यह आपकी मदद करता है, तो इसे स्टार करें।
abDetector: सरल वेनिला जावास्क्रिप्ट एडब्लॉक डिटेक्टर।
का आनंद लें।


खराब समाधान। एक बाहरी .js फ़ाइल आसानी से अवरुद्ध है।
10

@Bangkokian बस कॉपी करें और इसे अपने संदेश (या इसके लाइसेंस) को अपने संदेश में जावास्क्रिप्ट फ़ाइल या index.js (या जो कुछ भी) दिखा रहा है।
BlueEyesWhiteDragon

1
@BlueEyesWhiteDragon आप सही हैं। लेकिन यह बिल्कुल नहीं है कि ट्रॉय का मूल जवाब क्या था। अब इनलाइन स्क्रिप्ट दिखाने के लिए इसे 100% संपादित किया गया है। मेरी टिप्पणी खड़ी है। उनका मूल उत्तर विशेष रूप से एक बाहरी स्क्रिप्ट का उपयोग करने के लिए था। stackoverflow.com/posts/34738388/revisions
बैंकाकियन

@ बैंकोकेशियन वास्तव में, मैं यह उल्लेख करना भूल गया कि आपकी टिप्पणी के लिए मैंने एसओ दिशानिर्देशों का पालन करने के लिए अपना उत्तर संपादित किया और इसे इनलाइन स्क्रिप्ट बना दिया। धन्यवाद।
निक रामियो

0

आप यह पता लगा सकते हैं कि यह पता लगाने-एडब्लॉक करने में मदद कर सकता है

इसका जवाब समय पर लागू करना है

हेड टैग में किसी भी स्क्रिप्ट से पहले इसे जोड़ें:

<head>
    <title></title>
    <meta/>

    <!--adBlocker detection code - START-->
    <script src="//adblocker.fortiapp.com/ads.js"></script>
    <script>
        (function (i, o, g, r) {
            i[o] = (typeof i[o] == typeof undefined) ? g : r
        })(window, 'adblocker', true, false);
    </script>
    <!--adBlocker detection code - END-->

    // Other scripts

</head>

फिर बाद में इसका उपयोग करें:

if (adblocker) {
    // the add blocker is enabled
}else{
    // ad blocker is not enabled
}

यह काम नहीं करता है। यह हमेशा दिखा रहा है कि विज्ञापन अवरुद्ध है।
हिमांशु अग्रवाल

window.adblockerअपने ब्राउज़र कंसोल में मान की जाँच करें यदि यह वापस आता है trueतो एडब्लॉकर को सक्षम किया जाता है अन्यथा यह वापस आ जाएगा falseआप पूर्ण प्रलेखन का पता लगा
एडब्लॉकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.