Настройка обнаружения блокировщика рекламы у пользователя
При заходе пользователя на страницу, партнеру (площадке) необходимо определить наличие или отсутствие AdBlock-приложения у пользователя. Рекомендуется сделать это с помощью готового решения (скрипта) от Яндекса.
Скрипт — автономный детектор блокировщика рекламы с минимальной функциональностью. При запуске он загружает расширенную версию библиотеки. Библиотека обнаруживает множество блокировщиков с помощью разных методов.
Плюсы использования готового решения от Яндекса
-
Наличие загружаемой и автоматически обновляемой библиотеки — больше не надо самостоятельно периодически менять код обнаружения блокировщика на страницах вашей площадки.
-
Более гибкая настройка обнаружения для каждого домена (на основе написанных для него правил).
-
Если ссылка с расширенной версией библиотеки будет заблокирована, скрипт-загрузчик все равно поймет, что у пользователя установлен блокировщик рекламы, и проставит cookie наличия AdBlock-приложения.
-
Скрипт-загрузчик может самостоятельно проставлять cookie наличия AdBlock-приложения, TTL и имя cookie.
-
В случае обнаружения факта отключения AdBlock-приложения, cookie автоматически удаляется при следующих действиях: закрытие браузера, переход на другую страницу, закрытие вкладки.
Встраивание скрипта в код партнера
Скрипт необходимо встраивать в код одним из способов:
-
методом
inline
в теле страницы: спрятать код среди кода другого важного скрипта, вставленного таким же образом; -
методом
inline
в один из своих скриптов, загружаемых по ссылке.
Внимание
Скрипт, который маскирует скрипт-загрузчик, должен обладать важной логикой, тогда AdBlock-приложению будет сложно заблокировать такой скрипт без ущерба для сайта. В качестве скрипта для маскировки не подходят скрипты Яндекс.Метрики или Google Analytics.
!function(){var x,r,v=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",n=["C2vSzG==","DgfNCW==","y2fSBgjHy2S=","mI4XlJa=","yMLUza==","rNvUy3rPB24=","w29IAMvJDcbbCNjHEv0=","z2v0uMvZCg9UC2vizwfKzxi=","zxzLBNruExbL","C2XPy2u=","D2L0AenYzwrLBNrPywXZ","zNjVBunOyxjdB2rL","y29UDgv4Da==","C2v0sxrLBq==","yNjVD3nLCG==","y29TlNrY","Bg9HzgLUzW==","Bg9JyxrPB24=","sgvHzgvYigXLBMD0AcbKB2vZBID0ig1HDgnO","vw5RBM93BG==","C2vUza==","CMvTB3zLrxzLBNrmAxn0zw5LCG==","zgv2AwnL","zxzLBNrFzgv0zwn0x0LoteLorq==","zg9TywLU","weHsignVBNn0CNvJDg9YigvYCM9Y","ywfIx2rLDgvJDa==","oYbtyw1Lu2L0zt1oB25LoYbZzwn1CMu=","yMvLCMTH","DMfSDwu=","AwmTBw9UlNLHBG==","DgLTzq==","AgfZt3DUuhjVCgvYDhK=","weHsiefou1DfuG==","Aw5MCMfTzq==","Aw4UDwe=","Dg9gAxHLza==","y3LJywrH","y29TlMDL","Aw5KzxHpzG==","C3rHy2S=","weHsifjfuvvfu1q=","yKHwA1KYrt0=","sLnptG==","C2v0vgLTzw91Da==","u3rYAw5N","ywrKrxzLBNrmAxn0zw5LCG==","Dg9vventDhjPBMC=","u3rHDhvZoIa=","weHsihjLCxvLC3qGzxjYB3i=","C3bSAxq=","r0vu","Bg9JywXtDg9YywDL","yMXVy2TLCG==","Ahr0Chm6lY9ZDgf0","B25LCNjVCG==","CMvHzhLtDgf0zq==","C2vUzejLywnVBG==","re9difjfqurz","su5msu5f","veLnru9vva==","CNq/CM5Kpte=","zgv0zwn0x0LoteLorq==","werVBwfPBLjLCxvLC3q=","C3rLChm=","ChvZAa==","DMvYC2LVBG==","we1mshr0CfjLCxvLC3q=","Dg9tDhjPBMC=","oYbWyxrOps87igrVBwfPBJ0U","yMX0C3i=","BMfTzq==","Ag9ZDg5HBwu=","zg9JDw1LBNrnB2rL","y29UDgvUDc1Szw5NAhq=","yMvMB3jLDw5SB2fK","y29TCgXLDgu=","Dg9W","C2vYDMLJzq==","zgf0yq==","Dhj1C3rLza==","oYbLEhbPCMvZpq==","ywrKAxrPB25HBa==","C3rYAw5NAwz5","u1rbuLq=","zg9ty3jVBgW=","AM9PBG==","ic0G","tNvTyMvY","BgfIzwXZ","zg9JDw1LBNrfBgvTzw50","AgfUzgXLrxzLBNq=","BwvZC2fNzq==","DgLTzw91Da==","y2XLyxjuAw1LB3v0","y29VA2LL","CgfNzwHPzgu=","vu5ltK9xtG==","vgLTzw91Da==","ChjVDg90ExbL","CMvZCg9UC2vuzxH0","zxzLBNroyw1L","zxzLBNq=","zxHWAxjLCW==","ue9tva==","y28UAwW=","tK9ux0jmt0nlruq=","rgf0zq==","z2v0q29TChv0zwrtDhLSzq==","BhvKy2e=","y2fSBa==","zNvUy3rPB24=","CgLK","AhjLzG==","vfjvu1rfrcbysfiGqu5tv0vs","weHsievsuKjbq0S=","zgv4lM5LDc9HzhzL","y29TlMfT","yNrVyq==","B3bLBG==","re9nieXpqurfra==","zwXLBwvUDa==","re9nq29UDgvUDeXVywrLza==","weHsigz1BMn0Aw9UCYb3zxjLihjLyxnZAwDUzwq=","DgLTzxn0yw1W","C3rHDhvZvgv4Da==","rxjYB3iGD2HPBguGC3vIC2nYAwjPBMCGre9nq29UDgvUDeXVywrLza==","y2HHCKnVzgvbDa==","rw1WDhKGy29UzMLNlNnYyW==","Aw5PDa==","BMf2AwDHDg9Y","C3jJ","B25SB2fK","yMXVy2TLza==","BgvUz3rO","BxnRlNj1","C3bIlNj1"];x=n,r=331,function(r){for(;--r;)x.push(x.shift())}(++r);var f=function(x,r){var t=n[x-=0];if(void 0===f.fjMWDF){f.WQNDVb=function(x){for(var r,n,f=function(x){for(var r,n,f=String(x).replace(/=+$/,""),t="",a=0,L=0;n=f[L++]||"";~n&&(r=a%4?64*r+n:n,a++%4)?t+=v[(255&r>>(-2*a&6))-32]:0)n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(n);return t}(x),t=[],a=0,L=f.length;a<L;a++)t+="%"+("00"+(r=f,n=a,v.indexOf(r[n])+32).toString(16)).slice(-2);return decodeURIComponent(t)},f.tLLiBy={},f.fjMWDF=!0}var a=f.tLLiBy[x];return void 0===a?(t=f.WQNDVb(t),f.tLLiBy[x]=t):t=a,t};!function(x,r,v){var n=f,t={};for(var a in v)v[n("0x70")](a)&&(t[a]=v[a]);var L=[n("0x5f"),n("0x76"),n("0x3c"),n("0x30"),n("0x4e"),n("0x4f"),n("0x73")],e=x[n("0x6")]||x[n("0xa")],z=n("0x4a"),u=n("0x17"),w=n("0x26"),i=n("0x6f"),c=n("0x5c"),y=n("0x52"),B=n("0x75"),g=n("0x6c"),D=n("0x34"),o=n("0x7a"),C=[n("0x86"),n("0x6e"),n("0x3b"),n("0x4")][n("0x1d")]("");t[w]=t[w]||n("0xd");try{({})[n("0xb")][n("0x35")](t[w])!==n("0x56")&&(t[w]=[t[w]])}catch(x){}t[i]=t[i]||336,t[c]=t[c]||{};var h=t[y];if(t[y]=K,t[z]){var M=t[z],j=t[u],A=[],N=T();try{if(!s(x[n("0x7e")])||!s(x[n("0x33")])||!s(x[n("0x55")][n("0x2a")][n("0x54")])||r[n("0x10")]&&r[n("0x10")]<=10){var b={};return b[n("0x4c")]=!1,b[n("0x85")]=n("0x31"),void K(b)}}catch(x){}var d,q,H,U,l,Y=null;t[n("0x24")]&&(d=function(){var x=n;G(x("0x3")),X(x("0x29"))},q=2e4,H=T(),U=null,l=!1,function r(){var v=f;l||(T()-H>=q?d():U=x[v("0x7c")]((function(){r()}),100))}(),Y=function(){l=!0,x[f("0x25")](U)}),function(x){var v=n;if(G(v("0x1b")),r[v("0x88")]===v("0x13")||r[v("0x88")]!==v("0x60")&&!r[v("0x21")][v("0x1c")])G(v("0x1")),x();else try{var f={};f[v("0x22")]="",r[v("0x7e")](v("0x41"),f),r[v("0x7e")](v("0x41"),(function n(){var f=v;G(f("0x3f")),r[f("0x65")](f("0x41"),n),x()}))}catch(x){G(v("0x45")),X(x&&x[v("0x78")])}}((function(){var v=n;try{var f=T();G(v("0x79")),W(M,(function(n){var f=v;try{Y&&Y(),G(f("0x71"));var a=x[f("0x1f")](n[f("0x57")](f("0x11"))),L=n[f("0x2b")][f("0x4d")];if(!a||a<32e3||a!==L)return X(f("0x62"),a+f("0x1e")+L);new(x[f("0x55")])(n[f("0x2b")])[f("0x35")](t[c]),t[c][f("0x48")](x,r,t)}catch(x){X(x&&x[f("0x23")])}}),(function(x,r){var n=v;try{if(Y&&Y(),G(n("0x3a")),T()-f<2e3)j?W(j,(function(){G(n("0x39")),X(x,r)}),(function(){var x=n,r={};r[x("0x4c")]=!1,r[x("0x85")]=x("0x31"),K(r)})):X(x,r);else{var t={};t[n("0x4c")]=!1,t[n("0x85")]=n("0x31"),K(t)}}catch(x){X(x&&x[n("0x23")])}}))}catch(x){X(x&&x[v("0x78")])}}))}else X(n("0x47"));function G(x){var r=n,v={};v.d=x,v.t=T()-N,A[r("0x8")](v)}function s(x){return typeof x===n("0x36")}function T(){var r=n;return x[r("0x1f")](new(x[r("0x32")]))}function V(r,v,f){var t,a,L=n;try{if(x[L("0x84")]){if(f){var e=(t=n,a=24e5,((T()/a)[t("0x74")]()*a)[t("0xb")](36)[t("0x59")](0,10));v=x[L("0x3d")](e)+o+x[L("0x3d")](function(r,v){for(var f=n,t=[],a=0;a<r[f("0x4d")];a++){var L=r[f("0x46")](a)^v[f("0x46")](a%v[f("0x4d")]);t[f("0x8")](x[f("0x7d")][f("0x5b")](L))}return t[f("0x1d")]("")}(v,e))}x[L("0x84")][L("0x5d")](r,v)}}catch(x){}}function K(x){var r=n("0x53");h&&h(x,r),V(g,r)}function P(x,r){var v=n;return r?x[v("0x82")](".")[v("0x59")](-r)[v("0x1d")]("."):x}function X(v,f){var a=n,z=T(),u=new(x[a("0x32")])(z+36e5*t[i])[a("0x7f")](),c=[],y=P(x[a("0x61")][a("0xf")],2);function g(){for(var x=a,v=0;v<c[x("0x4d")];v++){var n=c[v];r[x("0x26")]=n[x("0xe")]+"="+n[x("0x6d")]+x("0x18")+n[x("0x2e")]+x("0xc")+n[x("0x68")]+x("0x6b")}}-1!==L[a("0x77")](y)&&(y=P(x[a("0x61")][a("0xf")],3));for(var o=t[w],h=0;h<o[a("0x4d")];h++){var M={};M[a("0xe")]=o[h],M[a("0x6d")]=1,M[a("0x2e")]=u,M[a("0x68")]=y,c[a("0x8")](M)}var j,N=function(x){for(var v=n,f=r[v("0x26")][v("0x82")]("; "),t=0;t<f[v("0x4d")];t++){var a=f[t][v("0x82")]("=");if(a[0]===x)return a[v("0x59")](1)[v("0x1d")]("=")}return null}(B);if(N){r[a("0x26")]=B+"="+N+a("0xc")+y+a("0x6b");var b={};b[a("0xe")]=B,b[a("0x6d")]=N,b[a("0x2e")]=new(x[a("0x32")])(0)[a("0x7f")](),b[a("0x68")]=y,c[a("0x8")](b)}try{var d={};d[a("0x22")]="",x[a("0x7e")](a("0x12"),d),x[a("0x7e")](a("0x12"),g),x[a("0x7e")](a("0x27"),g)}catch(x){g()}try{(function(r,v){var f=n,t={};t[f("0x9")]=f("0x53"),t[f("0x40")]=r,t[f("0x19")]=v,t[f("0x72")]=x[f("0x14")]!==x[f("0x50")],t[f("0x7")]=A;var a={};a[f("0x5e")]=f("0x63"),a[f("0x66")]=f("0x63"),a[f("0x85")]=f("0x2"),a[f("0x37")]=f("0x63"),a[f("0x40")]="i0",a[f("0x9")]="1";var L={};L[f("0x67")]=1;var z={};z[f("0x16")]=t,z[f("0x20")]=a,z[f("0x51")]=L,z[f("0x61")]=x[f("0x61")][f("0x38")],z[f("0x43")]=T(),z[f("0x15")]=f("0x6a"),z[f("0x2c")]=f("0x5"),z[f("0x58")]=f("0x2d"),z[f("0x6d")]=1,z[f("0x9")]="1";var u=z,w=x[f("0x7b")][f("0x1a")](u);if(s(x[f("0x49")][f("0x0")]))x[f("0x49")][f("0x0")](C,w);else{var i=new e;i[f("0x3e")](f("0x2f"),C,!0),i[f("0x64")](w)}})(v,f=f||""),V(D,[(new(x[a("0x32")]))[a("0x7f")](),a("0x28"),v,f,(j=n,x[j("0x61")]?typeof x[j("0x61")][j("0xb")]===j("0x36")?x[j("0x61")][j("0xb")]():x[j("0x61")][j("0x38")]||"":"")][a("0x1d")]("\n"),!0)}catch(x){}var q={};q[a("0x4c")]=!0,q[a("0x85")]=a("0x28"),K(q)}function W(x,r,v){var f=n,t=new e;if(0!==t[f("0x88")])throw new Error(f("0x69"));if(t[f("0x3e")](f("0x83"),x,!0),1!==t[f("0x88")]||t[f("0x64")]!==e[f("0x2a")][f("0x64")])throw new Error(f("0x42"));t[f("0x5a")]=!0,t[f("0x4b")]=function(){r(t)},t[f("0x87")]=function(){var x=f;v(x("0x81"),x("0x80")+t[x("0x44")])},t[f("0x64")]()}}(window,document,{
src: "https://static-mon.yandex.net/static/main.js?pid=<PARTNER-ID>",
cookie: "somecookie",
callback: aab
})}();
function aab(result) {
if (result.blocked === true) {
// AdBlocker present.
} else {
// No AdBlocker.
}
};
Параметры скрипта
Параметр |
Обязательность |
Описание |
|
Да |
Ссылка на расширенную версию библиотеки, которую необходимо загрузить. Ссылка всегда остается неизменной, меняется только значение query-параметра |
|
Да |
Уникальный идентификатор партнера. Выдается в процессе подключения. |
|
Нет |
Имя или массив имен cookie, которая устанавливается при наличии AdBlock-приложения. Значение по умолчанию: имя — |
|
Нет |
Флаг. Устанавливается, если нужно защитить |
|
Нет |
Callback-функция, которая вызывается после определения наличия или отсутствия блокировщика рекламы. В функцию передается результат работы скрипта — объект Примечание Время обнаружения блокировщика рекламы может быть длительным (процесс обнаружения не блокирует основной поток работы браузера), потому что часть блокировщиков начинают работу не сразу или блокируют только определенные ресурсы. |
Использование совместно с Content Security Policy (CSP)
Если вы используете какие-либо ограничения, заданные с помощью CSP, то запрос расширенной версии библиотеки может блокироваться CSP-политиками (например, директивой connect-src
). В таком случае добавьте домен static-mon.yandex.net
в список доверенных.