【PukiWiki編】広告ブロッカーからサイトコンテンツと収益を守る!

レンタルサーバを借り、独自ドメインでウェブサイトを運営していると、PV数の割に収益が出ていないことはないだろうか?
本稿では主にPukiWikiを利用したウェブサイト運営者向けに、広告ブロッカーを排除してサイトコンテンツと収益を守るする方法を解説するが、利用するスクリプトは汎用なので、PukiWikiに限らずWordPressやその他のCMS(またはCMSを使っていないウェブサイト)にも応用可能だ。
なお、広告ブロッカーとそれを排除する是非と広告ブロッカーの仕組みや、広告ブロッカーを排除するテスト条件については、次の記事を参照のこと。

BlockAdblockスクリプトを設定して取得する

WordPressの場合はCHP Ads Block Detectorプラグインを導入してお手軽に広告ブロッカーを排除出来たが、PukiWikiを含むWordPress以外のCMSや、そもそもCMSを使っていないウェブサイトの場合はこの手が使えない。
広告ブロッカーの仕組みは分かっているので、最悪はPukiWiki用に広告ブロッカーを排除するJavaScriptのプラグインを開発したろか?とも考えたが、世界には私なんかより遥かに優秀で度量の広いプログラマは星の数ほどいるので、有り難くBlockAdblockスクリプトを利用させていただこうと思う。

※図をクリックするとサイトに飛びます

図はBlockAdblockスクリプトの配布サイトだが、英語のサイトだからと言って怯む必要はない

図のようにページを下にスクロールし、図赤枠Get the free BlockAdblock script」ボタンをクリックする。

すると、図のように「持ってけドロボー!」とばかりに基本的な広告ブロッカーを排除する基本スクリプトが表示される。
英語圏ならこのまま「チーーーッス! (*・ω・)ノ」と表示されたスクリプトをコピーして自分のサイトに貼り付けて終了なのだが、いかんせんメッセージが英語だし、そこは設定しなければ使えない
その辺も含め、ちゃんと分かっているのがこのサイトのエライところで、図赤枠BlockAdblock Configurator」ボタンをクリックする。

図のようにBlockAdblockスクリプトの構成オプションを設定するカスタマイズ画面に遷移するので、この画面で取得するスクリプトの設定を行う。

まず、広告ブロッカーを検出した際に表示される警告画面(以下、「ブロック画面」と呼称を統一)だが、図の通り初期値の「ブロックモード」で良いだろう。

次に「Block Screen Delay」をクリックし、ブロック画面が表示されるまでの時間を設定する。
デフォルト(初期値)では7秒となっているが、図のように画面のスライダを左に移動して3秒に設定することをオススメしておく。
色々と試してみたところ、7秒では長いが、3秒未満だとやや短すぎる。私は丁度良いのが3秒だと結論したが、この辺はお好みで設定して欲しい。

次に「Block Screen Text」をクリックし、ブロック画面のメッセージを日本語で設定する。
デフォルトでは図のような中学生でも理解出来る英語のメッセージになっているので、「面倒だし外人が見ても分かるからいいか」と思わなくもないが、日本人の英語アレルギーはITアレルギーの比ではないので、日本語を設定しておくべきだろう。

具体的には、太宰治真理教私設松本零士博物館PukiWiki改造普及活用計画(絶賛テスト運用中)では、図の通りのメッセージに設定している。
日本語のメッセージが長いので図では切れているが、次のテキストを設定しているから、参考にして欲しい。

広告ブロックを検出しました!
ブラウザの拡張機能を使用して広告をブロックしていることが検出されました
ブラウザの広告ブロッカー等の機能を無効にし、「更新」ボタンをクリックして下さい
更新

次に「Block Screen Display Options」をクリックし、ブロック画面の各種カラーを設定する。
この辺は完全に好みだし、ボタンをサイトカラーに設定する等、各々で設定して欲しい
本稿では図のデフォルト設定のカラーで説明する。

次に「BlockAdblock Branding」の設定だが、BlockAdblockスクリプトを使わせていただくので、デフォルトの設定のままで良いだろう。
たかだかバナーの2KBを節約して速度をナノ秒単位で節約したい、というワケでもあるまい。

次に「Legal Text Options」の設定だが、これはBlockAdBlock埋め込みスクリプトコードに含まれる法的免責事項のテキストで、別にサイト訪問者に表示されるモノではない。
ただし、サイト訪問者の中にはHTMLのソースコードを表示して内部を見ようとする、私のような技術者や変態は多いので、そういった技術者や変態が見て驚くような内容になっている。
私のテキトー日本語訳では、次のような内容の英文が埋め込まれる。

法的通知:このウェブサイトのコンテンツおよび関連するすべてのプログラムコードは、デジタルミレニアム著作権法によって保護されています。このコードを意図的に回避すると、DMCA違反となる可能性があります。

特に削除したり、設定したりする必要はないだろう(実際にはコメントとして埋め込まれるので、必要なければサイトに組み込む際に削除すれば良い)。

次に「Analytics Integration」の設定だが、これはBlockAdblockスクリプトで広告ブロッカーを検出した際にイベントを発生させ、それをGoogle Analyticsで追跡可能にする設定だ。
広告ブロッカーを利用しているユーザをGoogle Analyticsで追跡して分析する際に有効だが、私を含め一般人がそんなことまで分析したってしゃーないと思う。
Google Analyticsで分析したいならコードを追加すれば良いと思うが、本稿では設定しない。

画面を図のように下へスクロールし、図赤枠I’m ready! Genarate my custom BlockAdblock code!」をクリックすれば、設定が反映されたJavaScriptコードを取得する画面に遷移する。
その上に書いてある赤背景文字の「Impotant(重要)」の内容は、広告ブロッカーとそれを防衛する技術はイタチごっこなので、「メールアドレスを入力してくれたら最新の広告ブロッカーの防御の更新をお知らせしますよ」といった内容である。
私個人は「広告ブロッカーの仕組みは大きく変わらない」と思っているので、別にメールアドレスを入力してまで最新情報を受け取ろうとは思わないが、この辺の考えは人それぞれだろう。

ともあれ、図の画面に遷移して設定が反映されたJavaScriptコードが取得可能になる。
コード部分をクリックし、[Ctrl]キー+[A]で全選択状態にした上で[Ctrl]キー+[C]でコピーし、テキストエディタか何かにコードをペーストしておこう。

ちなみに画面を下にスクロールすると、図の画面が表示されている。
これはBlockAdblockスクリプト本体とはまた別のコードオプションで、早い話が「JavaScriptがブロックされている(JavaScriptが無効に設定されている)場合」のコードオプションだ。
広告ブロッカーはフロントエンド側のJavaScriptでなければ検出できないし、ここまで解説しているのも正にそのJavaScriptの設定である。
当然、JavaScriptを有効にしていないブラウザでアクセスされては、広告ブロッカーを排除出来ないどころか、それ以前にGoogle AdSenseそのものが機能しない。
広告はGoogle AdSenseだけではないし、そういった場合の広告も表示されないが、そもそもJavaScriptを無効にしている(スクリプトをブロックしている)場合はどうするか?という話である。
そう考えるとSEでプログラマな私は考え込んでしまうが、2000年~2010年代前半ならいざ知らず、今どきJavaScriptを無効にしていてはロクにウェブサイトの閲覧が出来ないのは常識だし、そこまで想定してJavaScriptの無効を検出し、ページを表示しないといった排除をする必要もないだろうと思う。
図のコードオプションで示されている内容も、JavaScriptが無効になっている場合に「このページを表示するには、アドブロックとスクリプトブロッカーを無効にしてください」と表示するだけの例でしかないのだ。

BlockAdblockスクリプトの組み込み

上述までの手順で、広告ブロッカーを排除してブロック画面のメッセージを日本語にした最軽量のJavaScriptが得られたワケだが、コレを運用しているPukiWikiにブチ込む。
得られたコードは次の通りなので、いちいち上述の英語サイトで日本語メッセージその他を設定するのが面倒だと思う横着な人は、次のコードをコピーすれば足りるだろう。
本来ならスクリプト部分を別JSファイルとして保存し、そのJSファイルを組み込む方法で説明すべきだが、本稿では便宜上、その説明の仕方はしない(後述)。

設定して取得したBlockAdblockスクリプト

<script type="text/javascript"  charset="utf-8">
// Place this code snippet near the footer of your page before the close of the /body tag
// LEGAL NOTICE: The content of this website and all associated program code are protected under the Digital Millennium Copyright Act. Intentionally circumventing this code may constitute a violation of the DMCA.
                            
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}(';q O=\'\',27=\'1Z\';1O(q i=0;i<12;i++)O+=27.X(C.J(C.N()*27.G));q 2A=8,2i=4i,2h=58,2U=4j,2D=D(t){q i=!1,o=D(){z(k.1g){k.2L(\'2Q\',e);F.2L(\'1S\',e)}R{k.2J(\'2R\',e);F.2J(\'24\',e)}},e=D(){z(!i&&(k.1g||4k.2O===\'1S\'||k.2M===\'2P\')){i=!0;o();t()}};z(k.2M===\'2P\'){t()}R z(k.1g){k.1g(\'2Q\',e);F.1g(\'1S\',e)}R{k.2S(\'2R\',e);F.2S(\'24\',e);q n=!1;2V{n=F.4m==4n&&k.1W}2Y(r){};z(n&&n.2W){(D a(){z(i)H;2V{n.2W(\'13\')}2Y(e){H 4h(a,50)};i=!0;o();t()})()}}};F[\'\'+O+\'\']=(D(){q t={t$:\'1Z+/=\',4o:D(e){q a=\'\',d,n,i,c,s,l,o,r=0;e=t.e$(e);1e(r<e.G){d=e.16(r++);n=e.16(r++);i=e.16(r++);c=d>>2;s=(d&3)<<4|n>>4;l=(n&15)<<2|i>>6;o=i&63;z(37(n)){l=o=64}R z(37(i)){o=64};a=a+10.t$.X(c)+10.t$.X(s)+10.t$.X(l)+10.t$.X(o)};H a},11:D(e){q n=\'\',d,l,c,s,r,o,a,i=0;e=e.1q(/[^A-4q-4r-9\\+\\/\\=]/g,\'\');1e(i<e.G){s=10.t$.1L(e.X(i++));r=10.t$.1L(e.X(i++));o=10.t$.1L(e.X(i++));a=10.t$.1L(e.X(i++));d=s<<2|r>>4;l=(r&15)<<4|o>>2;c=(o&3)<<6|a;n=n+S.T(d);z(o!=64){n=n+S.T(l)};z(a!=64){n=n+S.T(c)}};n=t.n$(n);H n},e$:D(t){t=t.1q(/;/g,\';\');q n=\'\';1O(q i=0;i<t.G;i++){q e=t.16(i);z(e<1z){n+=S.T(e)}R z(e>4s&&e<4t){n+=S.T(e>>6|4u);n+=S.T(e&63|1z)}R{n+=S.T(e>>12|2n);n+=S.T(e>>6&63|1z);n+=S.T(e&63|1z)}};H n},n$:D(t){q i=\'\',e=0,n=4v=1m=0;1e(e<t.G){n=t.16(e);z(n<1z){i+=S.T(n);e++}R z(n>4w&&n<2n){1m=t.16(e+1);i+=S.T((n&31)<<6|1m&63);e+=2}R{1m=t.16(e+1);2k=t.16(e+2);i+=S.T((n&15)<<12|(1m&63)<<6|2k&63);e+=3}};H i}};q a=[\'4p==\',\'4f\',\'47=\',\'4e\',\'3Z\',\'41=\',\'42=\',\'43=\',\'44\',\'45\',\'3Y=\',\'46=\',\'48\',\'49\',\'4a=\',\'4b\',\'4c=\',\'4d=\',\'4x=\',\'4g=\',\'4y=\',\'4S=\',\'4U==\',\'4V==\',\'4W==\',\'4X==\',\'4Y=\',\'4Z\',\'4T\',\'51\',\'53\',\'54\',\'55\',\'56==\',\'57=\',\'59=\',\'5a=\',\'52==\',\'5b=\',\'4I\',\'4Q=\',\'4B=\',\'4C==\',\'4D=\',\'4E==\',\'4F==\',\'4G=\',\'4A=\',\'4H\',\'4J==\',\'4K==\',\'4L\',\'4M==\',\'4N=\'],p=C.J(C.N()*a.G),w=t.11(a[p]),Y=w,M=1,W=\'#4O\',r=\'#4P\',g=\'#4z\',b=\'#3X\',A=\'\',y=\'広告ブロックを検出しました!\',f=\'ブラウザの拡張機能を使用して広告をブロックしていることが検出されました\',v=\'ブラウザの広告ブロッカー等の機能を無効にし、「更新」ボタンをクリックして下さい\',s=\'更新\',i=0,u=0,n=\'3H.3V\',l=0,Q=e()+\'.2t\';D h(t){z(t)t=t.1K(t.G-15);q i=k.2j(\'39\');1O(q n=i.G;n--;){q e=S(i[n].1H);z(e)e=e.1K(e.G-15);z(e===t)H!0};H!1};D m(t){z(t)t=t.1K(t.G-15);q e=k.3d;x=0;1e(x<e.G){1l=e[x].1o;z(1l)1l=1l.1K(1l.G-15);z(1l===t)H!0;x++};H!1};D e(t){q n=\'\',i=\'1Z\';t=t||30;1O(q e=0;e<t;e++)n+=i.X(C.J(C.N()*i.G));H n};D o(i){q o=[\'3l\',\'3p==\',\'3q\',\'3s\',\'2B\',\'3r==\',\'3t=\',\'3n==\',\'3m=\',\'3j==\',\'3i==\',\'3g==\',\'3h\',\'3f\',\'3e\',\'2B\'],r=[\'2w=\',\'3c==\',\'3b==\',\'3a==\',\'3o=\',\'3v\',\'3J=\',\'3U=\',\'2w=\',\'3T\',\'3S==\',\'3R\',\'3Q==\',\'3P==\',\'3O==\',\'3N=\'];x=0;1Q=[];1e(x<i){c=o[C.J(C.N()*o.G)];d=r[C.J(C.N()*r.G)];c=t.11(c);d=t.11(d);q a=C.J(C.N()*2)+1;z(a==1){n=\'//\'+c+\'/\'+d}R{n=\'//\'+c+\'/\'+e(C.J(C.N()*20)+4)+\'.2t\'};1Q[x]=21 23();1Q[x].1T=D(){q t=1;1e(t<7){t++}};1Q[x].1H=n;x++}};D Z(t){};H{33:D(t,r){z(3L k.K==\'3K\'){H};q i=\'0.1\',r=Y,e=k.1a(\'1w\');e.14=r;e.j.1k=\'1I\';e.j.13=\'-1h\';e.j.V=\'-1h\';e.j.1b=\'2a\';e.j.U=\'3I\';q d=k.K.2o,a=C.J(d.G/2);z(a>15){q n=k.1a(\'28\');n.j.1k=\'1I\';n.j.1b=\'1u\';n.j.U=\'1u\';n.j.V=\'-1h\';n.j.13=\'-1h\';k.K.3w(n,k.K.2o[a]);n.1c(e);q o=k.1a(\'1w\');o.14=\'2d\';o.j.1k=\'1I\';o.j.13=\'-1h\';o.j.V=\'-1h\';k.K.1c(o)}R{e.14=\'2d\';k.K.1c(e)};l=3F(D(){z(e){t((e.1V==0),i);t((e.1X==0),i);t((e.1R==\'2E\'),i);t((e.1F==\'2l\'),i);t((e.1J==0),i)}R{t(!0,i)}},26)},1N:D(e,c){z((e)&&(i==0)){i=1;F[\'\'+O+\'\'].1B();F[\'\'+O+\'\'].1N=D(){H}}R{q v=t.11(\'3E\'),u=k.3D(v);z((u)&&(i==0)){z((2i%3)==0){q l=\'3B=\';l=t.11(l);z(h(l)){z(u.1P.1q(/\\s/g,\'\').G==0){i=1;F[\'\'+O+\'\'].1B()}}}};q p=!1;z(i==0){z((2h%3)==0){z(!F[\'\'+O+\'\'].36){q d=[\'3x==\',\'3u==\',\'3y=\',\'3z=\',\'3A=\'],m=d.G,r=d[C.J(C.N()*m)],a=r;1e(r==a){a=d[C.J(C.N()*m)]};r=t.11(r);a=t.11(a);o(C.J(C.N()*2)+1);q n=21 23(),s=21 23();n.1T=D(){o(C.J(C.N()*2)+1);s.1H=a;o(C.J(C.N()*2)+1)};s.1T=D(){i=1;o(C.J(C.N()*3)+1);F[\'\'+O+\'\'].1B()};n.1H=r;z((2U%3)==0){n.24=D(){z((n.U<8)&&(n.U>0)){F[\'\'+O+\'\'].1B()}}};o(C.J(C.N()*3)+1);F[\'\'+O+\'\'].36=!0};F[\'\'+O+\'\'].1N=D(){H}}}}},1B:D(){z(u==1){q L=32.4R(\'2K\');z(L>0){H!0}R{32.6O(\'2K\',(C.N()+1)*26)}};q h=\'6M==\';h=t.11(h);z(!m(h)){q c=k.1a(\'6K\');c.1Y(\'6J\',\'6I\');c.1Y(\'2O\',\'1f/6H\');c.1Y(\'1o\',h);k.2j(\'6G\')[0].1c(c)};6F(l);k.K.1P=\'\';k.K.j.17+=\'P:1u !19\';k.K.j.17+=\'1t:1u !19\';q Q=k.1W.1X||F.34||k.K.1X,p=F.6D||k.K.1V||k.1W.1V,a=k.1a(\'1w\'),M=e();a.14=M;a.j.1k=\'2p\';a.j.13=\'0\';a.j.V=\'0\';a.j.U=Q+\'1y\';a.j.1b=p+\'1y\';a.j.2f=W;a.j.1U=\'6s\';k.K.1c(a);q d=\'<a 1o="6Q://6C.6B"><2z 14="2y" U="2q" 1b="40"><2u 14="2x" U="2q" 1b="40" 6A:1o="6z:2u/6y;6x,6w+6v+6u+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+6t+6P+6E/6R/6Z/74/5d/76+/73/78+79/7a+71/6X/77/6U/6V/6Y/6S+72/7b+75+70+6T+6W+6r/5N+6p/5x+5y/5z+5A+5B+5C+5w/5D+5F/5G/5H/5I+5J+6q/5K+5E+5u+5m+E+5t/5f/5g/5h/5i/5j/+5k/5e++5l/5n/5o+5p/5q+5r+5s==">;</2z></a>\';d=d.1q(\'2y\',e());d=d.1q(\'2x\',e());q o=k.1a(\'1w\');o.1P=d;o.j.1k=\'1I\';o.j.1x=\'1M\';o.j.13=\'1M\';o.j.U=\'5v\';o.j.1b=\'5M\';o.j.1U=\'2c\';o.j.1J=\'.6\';o.j.2g=\'2e\';o.1g(\'69\',D(){n=n.6b(\'\').6c().6d(\'\');F.2T.1o=\'//\'+n});k.1E(M).1c(o);q i=k.1a(\'1w\'),Z=e();i.14=Z;i.j.1k=\'2p\';i.j.V=p/7+\'1y\';i.j.6f=Q-6g+\'1y\';i.j.6a=p/3.5+\'1y\';i.j.2f=\'#6h\';i.j.1U=\'2c\';i.j.17+=\'I-1v: "6j 6k", 1n, 1s, 1r-1p !19\';i.j.17+=\'6l-1b: 6n !19\';i.j.17+=\'I-1j: 6o !19\';i.j.17+=\'1f-1C: 1A !19\';i.j.17+=\'1t: 6i !19\';i.j.1R+=\'2N\';i.j.38=\'1M\';i.j.68=\'1M\';i.j.5W=\'2v\';k.K.1c(i);i.j.5P=\'1u 5R 5S -5T 5U(0,0,0,0.3)\';i.j.1F=\'2C\';q Y=30,w=22,x=18,A=18;z((F.34<35)||(5O.U<35)){i.j.2I=\'50%\';i.j.17+=\'I-1j: 5V !19\';i.j.38=\'5X;\';o.j.2I=\'65%\';q Y=22,w=18,x=12,A=12};i.1P=\'<2H j="1i:#5Y;I-1j:\'+Y+\'1D;1i:\'+r+\';I-1v:1n, 1s, 1r-1p;I-1G:5Z;P-V:1d;P-1x:1d;1f-1C:1A;">\'+y+\'</2H><2X j="I-1j:\'+w+\'1D;I-1G:61;I-1v:1n, 1s, 1r-1p;1i:\'+r+\';P-V:1d;P-1x:1d;1f-1C:1A;">\'+f+\'</2X><62 j=" 1R: 2N;P-V: 0.2Z;P-1x: 0.2Z;P-13: 2b;P-2G: 2b; 2s:66 6N #3W; U: 25%;1f-1C:1A;"><p j="I-1v:1n, 1s, 1r-1p;I-1G:2r;I-1j:\'+x+\'1D;1i:\'+r+\';1f-1C:1A;">\'+v+\'</p><p j="P-V:5Q;"><28 67="10.j.1J=.9;" 6m="10.j.1J=1;"  14="\'+e()+\'" j="2g:2e;I-1j:\'+A+\'1D;I-1v:1n, 1s, 1r-1p; I-1G:2r;2s-6e:2v;1t:1d;5L-1i:\'+g+\';1i:\'+b+\';1t-13:2a;1t-2G:2a;U:60%;P:2b;P-V:1d;P-1x:1d;" 6L="F.2T.5c();">\'+s+\'</28></p>\'}}})();F.2F=D(t,e){q n=3M.3G,i=F.3C,a=n(),o,r=D(){n()-a<e?o||i(r):t()};i(r);H{3k:D(){o=1}}};q 2m;z(k.K){k.K.j.1F=\'2C\'};2D(D(){z(k.1E(\'29\')){k.1E(\'29\').j.1F=\'2E\';k.1E(\'29\').j.1R=\'2l\'};2m=F.2F(D(){F[\'\'+O+\'\'].33(F[\'\'+O+\'\'].1N,F[\'\'+O+\'\'].4l)},2A*26)});',62,446,'|||||||||||||||||||style|document||||||var|||||||||if||vr6|Math|function||window|length|return|font|floor|body|||random|fjGvpVSQuUis|margin||else|String|fromCharCode|width|top||charAt|||this|decode||left|id||charCodeAt|cssText||important|createElement|height|appendChild|10px|while|text|addEventListener|5000px|color|size|position|thisurl|c2|Helvetica|href|serif|replace|sans|geneva|padding|0px|family|DIV|bottom|px|128|center|DjgjFvexmy|align|pt|getElementById|visibility|weight|src|absolute|opacity|substr|indexOf|30px|PVHLXDvKEA|for|innerHTML|spimg|display|load|onerror|zIndex|clientHeight|documentElement|clientWidth|setAttribute|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789||new||Image|onload||1000|YdzKlaVaCY|div|babasbmsgx|60px|auto|10000|banner_ad|pointer|backgroundColor|cursor|sIibSxGEYa|OucWWZvNgq|getElementsByTagName|c3|none|CRJjpFMAug|224|childNodes|fixed|160|300|border|jpg|image|15px|ZmF2aWNvbi5pY28|FILLVECTID2|FILLVECTID1|svg|HhKNrpjwNv|cGFydG5lcmFkcy55c20ueWFob28uY29t|visible|jkVRVSurCZ|hidden|RjhBXyRgVE|right|h3|zoom|detachEvent|babn|removeEventListener|readyState|block|type|complete|DOMContentLoaded|onreadystatechange|attachEvent|location|LzEcWYplOS|try|doScroll|h1|catch|5em|||sessionStorage|BDrwumpPDS|innerWidth|640|ranAlready|isNaN|marginLeft|script|NzIweDkwLmpwZw|NDY4eDYwLmpwZw|YmFubmVyLmpwZw|styleSheets|YXMuaW5ib3guY29t|YWRzYXR0LmVzcG4uc3RhcndhdmUuY29t|YWRzLnp5bmdhLmNvbQ|YWRzYXR0LmFiY25ld3Muc3RhcndhdmUuY29t|YWRzLnlhaG9vLmNvbQ|cHJvbW90ZS5wYWlyLmNvbQ|clear|YWRuLmViYXkuY29t|Y2FzLmNsaWNrYWJpbGl0eS5jb20|YWR2ZXJ0aXNpbmcuYW9sLmNvbQ|c2t5c2NyYXBlci5qcGc|YWQubWFpbC5ydQ|anVpY3lhZHMuY29t|YS5saXZlc3BvcnRtZWRpYS5ldQ|YWQuZm94bmV0d29ya3MuY29t|YWdvZGEubmV0L2Jhbm5lcnM|Ly93d3cuZ3N0YXRpYy5jb20vYWR4L2RvdWJsZWNsaWNrLmljbw|MTM2N19hZC1jbGllbnRJRDI0NjQuanBn|insertBefore|Ly93d3cuZ29vZ2xlLmNvbS9hZHNlbnNlL3N0YXJ0L2ltYWdlcy9mYXZpY29uLmljbw|Ly9hZHZlcnRpc2luZy55YWhvby5jb20vZmF2aWNvbi5pY28|Ly9hZHMudHdpdHRlci5jb20vZmF2aWNvbi5pY28|Ly93d3cuZG91YmxlY2xpY2tieWdvb2dsZS5jb20vZmF2aWNvbi5pY28|Ly9wYWdlYWQyLmdvb2dsZXN5bmRpY2F0aW9uLmNvbS9wYWdlYWQvanMvYWRzYnlnb29nbGUuanM|requestAnimationFrame|querySelector|aW5zLmFkc2J5Z29vZ2xl|setInterval|now|moc|468px|YWRjbGllbnQtMDAyMTQ3LWhvc3QxLWJhbm5lci1hZC5qcGc|undefined|typeof|Date|YWR2ZXJ0aXNlbWVudC0zNDMyMy5qcGc|d2lkZV9za3lzY3JhcGVyLmpwZw|bGFyZ2VfYmFubmVyLmdpZg|YmFubmVyX2FkLmdpZg|ZmF2aWNvbjEuaWNv|c3F1YXJlLWFkLnBuZw|YWQtbGFyZ2UucG5n|Q0ROLTMzNC0xMDktMTM3eC1hZC1iYW5uZXI|kcolbdakcolb|CCC|FFFFFF|YWQtY29udGFpbmVyLTE|YWQtaW1n||YWQtaW5uZXI|YWQtbGFiZWw|YWQtbGI|YWQtZm9vdGVy|YWQtY29udGFpbmVy|YWQtY29udGFpbmVyLTI|YWQtZnJhbWU|QWQzMDB4MTQ1|QWQzMDB4MjUw|QWQ3Mjh4OTA|QWRBcmVh|QWRGcmFtZTE|QWRGcmFtZTI|YWQtaGVhZGVy|YWRCYW5uZXJXcmFw|QWRGcmFtZTQ|setTimeout|118|169|event|VeHxWDlOua|frameElement|null|encode|YWQtbGVmdA|Za|z0|127|2048|192|c1|191|QWRGcmFtZTM|QWRMYXllcjE|adb8ff|YmFubmVyaWQ|YWRiYW5uZXI|YWRBZA|YmFubmVyYWQ|IGFkX2JveA|YWRfY2hhbm5lbA|YWRzZXJ2ZXI|YWRzbG90|YmFubmVyX2Fk|cG9wdXBhZA|YWRzZW5zZQ|Z29vZ2xlX2Fk|b3V0YnJhaW4tcGFpZA|c3BvbnNvcmVkX2xpbms|EEEEEE|777777|YWRCYW5uZXI|getItem|QWRMYXllcjI|RGl2QWQy|QWRzX2dvb2dsZV8wMQ|QWRzX2dvb2dsZV8wMg|QWRzX2dvb2dsZV8wMw|QWRzX2dvb2dsZV8wNA|RGl2QWQ|RGl2QWQx||RGl2QWQz|Z2xpbmtzd3JhcHBlcg|RGl2QWRB|RGl2QWRC|RGl2QWRD|QWRJbWFnZQ|QWREaXY||QWRCb3gxNjA|QWRDb250YWluZXI|YWRUZWFzZXI|reload|aa2thYWHXUFDUPDzUOTno0dHipqbceHjaZ2dCQkLSLy|e8xr8n5lpXyn|SRWhNsmOazvKzQYcE0hV5nDkuQQKfUgm4HmqA2yuPxfMU1m4zLRTMAqLhN6BHCeEXMDo2NsY8MdCeBB6JydMlps3uGxZefy7EO1vyPvhOxL7TPWjVUVvZkNJ|CGf7SAP2V6AjTOUa8IzD3ckqe2ENGulWGfx9VKIBB72JM1lAuLKB3taONCBn3PY0II5cFrLr7cCp|UIWrdVPEp7zHy7oWXiUgmR3kdujbZI73kghTaoaEKMOh8up2M8BVceotd|BNyENiFGe5CxgZyIT6KVyGO2s5J5ce|14XO7cR5WV1QBedt3c|QhZLYLN54|u3T9AbDjXwIMXfxmsarwK9wUBB5Kj8y2dCw|0t6qjIlZbzSpemi|Kq8b7m0RpwasnR|uJylU|dEflqX6gzC4hd1jSgz0ujmPkygDjvNYDsU0ZggjKBqLPrQLfDUQIzxMBtSOucRwLzrdQ2DFO0NDdnsYq0yoJyEB0FHTBHefyxcyUy8jflH7sHszSfgath4hYwcD3M29I5DMzdBNO2IFcC5y6HSduof4G5dQNMWd4cDcjNNeNGmb02|Uv0LfPzlsBELZ|3eUeuATRaNMs0zfml|gkJocgFtzfMzwAAAABJRU5ErkJggg|MjA3XJUKy|1HX6ghkAR9E5crTgM|160px|UADVgvxHBzP9LUufqQDtV|BKpxaqlAOvCqBjzTFAp2NFudJ5paelS5TbwtBlAvNgEdeEGI6O6JUt42NhuvzZvjXTHxwiaBXUIMnAKa5Pq9SL3gn1KAOEkgHVWBIMU14DBF2OH3KOfQpG2oSQpKYAEdK0MGcDg1xbdOWy|iqKjoRAEDlZ4soLhxSgcy6ghgOy7EeC2PI4DHb7pO7mRwTByv5hGxF|I1TpO7CnBZO|QcWrURHJSLrbBNAxZTHbgSCsHXJkmBxisMvErFVcgE|h0GsOCs9UwP2xo6|UimAyng9UePurpvM8WmAdsvi6gNwBMhPrPqemoXywZs8qL9JZybhqF6LZBZJNANmYsOSaBTkSqcpnCFEkntYjtREFlATEtgxdDQlffhS3ddDAzfbbHYPUDGJpGT|uI70wOsgFWUQCfZC1UI0Ettoh66D|j9xJVBEEbWEXFVZQNX9|szSdAtKtwkRRNnCIiDzNzc0RO|kmLbKmsE|pyQLiBu8WDYgxEZMbeEqIiSM8r|x0z6tauQYvPxwT0VM1lH9Adt5Lp|F2Q|E5HlQS6SHvVSU0V|background|40px|KmSx|screen|boxShadow|35px|14px|24px|8px|rgba|18pt|borderRadius|45px|999|200||500|hr||||1px|onmouseover|marginRight|click|minHeight|split|reverse|join|radius|minWidth|120|fff|12px|Arial|Black|line|onmouseout|normal|16pt|0nga14QJ3GOWqDmOwJgRoSme8OOhAQqiUhPMbUGksCj5Lta4CbeFhX9NN0Tpny|bTplhb|uWD20LsNIDdQut4LXA|9999|sAAADMAAAsKysKCgokJCRycnIEBATq6uoUFBTMzMzr6urjqqoSEhIGBgaxsbHcd3dYWFg0NDTmw8PZY2M5OTkfHx|sAAADr6|1BMVEXr6|iVBORw0KGgoAAAANSUhEUgAAAKAAAAAoCAMAAABO8gGqAAAB|base64|png|data|xlink|com|blockadblock|innerHeight|fn5EREQ9PT3SKSnV1dXks7OsrKypqambmpqRkZFdXV1RUVHRISHQHR309PTq4eHp3NzPz8|clearInterval|head|css|stylesheet|rel|link|onclick|Ly95dWkueWFob29hcGlzLmNvbS8zLjE4LjEvYnVpbGQvY3NzcmVzZXQvY3NzcmVzZXQtbWluLmNzcw|solid|setItem|enp7TNTUoJyfm5ualpaV5eXkODg7k5OTaamoqKSnc3NzZ2dmHh4dra2tHR0fVQUFAQEDPExPNBQXo6Ohvb28ICAjp19fS0tLnzc29vb25ubm1tbWWlpaNjY3dfX1oaGhUVFRMTEwaGhoXFxfq5ubh4eHe3t7Hx8fgk5PfjY3eg4OBgYF|http|Ly8vKysrDw8O4uLjkt7fhnJzgl5d7e3tkZGTYVlZPT08vLi7OCwu|0idvgbrDeBhcK|1FMzZIGQR3HWJ4F1TqWtOaADq0Z9itVZrg1S6JLi7B1MAtUCX1xNB0Y0oL9hpK4|VOPel7RIdeIBkdo|HY9WAzpZLSSCNQrZbGO1n4V4h9uDP7RTiIIyaFQoirfxCftiht4sK8KeKqPh34D2S7TsROHRiyMrAxrtNms9H5Qaw9ObU1H4Wdv8z0J8obvOo|YbUMNVjqGySwrRUGsLu6|oGKmW8DAFeDOxfOJM4DcnTYrtT7dhZltTW7OXHB1ClEWkPO0JmgEM1pebs5CcA2UCTS6QyHMaEtyc3LAlWcDjZReyLpKZS9uT02086vu0tJa|wd4KAnkmbaePspA|v792dnbbdHTZYWHZXl7YWlpZWVnVRkYnJib8|CXRTTQawVogbKeDEs2hs4MtJcNVTY2KgclwH2vYODFTa4FQ|MgzNFaCVyHVIONbx1EDrtCzt6zMEGzFzFwFZJ19jpJy2qx5BcmyBM|EuJ0GtLUjVftvwEYqmaR66JX9Apap6cCyKhiV|b29vlvb2xn5|PzNzc3myMjlurrjsLDhoaHdf3|qdWy60K14k|v7|Lnx0tILMKp3uvxI61iYH33Qq3M24k|ejIzabW26SkqgMDA7HByRAADoM7kjAAAAInRSTlM6ACT4xhkPtY5iNiAI9PLv6drSpqGYclpM5bengkQ8NDAnsGiGMwAABetJREFUWMPN2GdTE1EYhmFQ7L339rwngV2IiRJNIGAg1SQkFAHpgnQpKnZBAXvvvXf9mb5nsxuTqDN|cIa9Z8IkGYa9OGXPJDm5RnMX5pim7YtTLB24btUKmKnZeWsWpgHnzIP5UucvNoDrl8GUrVyUBM4xqQ|ISwIz5vfQyDF3X|RUIrwGk'.split('|'),0,{}));
</script>

さて、上記スクリプトをPukiWikiのどこにブチ込むか?だが、PukiWikiの場合は「skin」フォルダの「pukiwiki.skin.php」の</body>タグの直前にコピー&ペーストして保存し、サーバにFTPすれば良い。
これはPukiWikiに限らず、WordPressやその他のCMSの場合でも同じだし、CMSを使っていないウェブサイトでも同じで、</body>タグの直前に上記スクリプトをコピー&ペーストすれば良いのである。
特にWordPressの場合は、プラグインを導入すると手軽かつ簡単で良い反面、プラグインの導入はオーバーヘッドになるため、ページの表示速度を重視する場合はCHP Ads Block Detectorプラグインを導入するよりも、上記スクリプトを</body>タグの直前にコピペして導入する方が、スピードアップが図れる上に広告ブロッカーを排除する効果も同様に得られる。
この辺はサイトを運営する管理者の好みなので、良いと思う方法を勘案した上で導入して欲しい。

BlockAdblockスクリプトの動作と改造

検証環境に上述のスクリプトをブチ込み、広告ブロッカーのテストが出来るようにしてみた。

ブラウザの機能拡張で広告ブロッカーを設定し、上記検証環境にアクセスすると、

図のブロック画面が表示されるハズだ。
広告ブロッカーを利用している閲覧者はサイトから離脱するか、広告ブロッカー(またはブラウザの広告ブロック機能)を無効にしてブロック画面の「更新ボタンをクリックするしかない。
ちなみに画面の配色は、上述の「Block Screen Display Options」設定画面のデフォルト値で、それ以外の部分「広告ブロックを検出しました!」の枠線と「ブラウザの拡張機能を使用して広告を~」のテキストの背景色、中途半端な水平線(区切り線)等は、ウェブサイト(この場合は検証環境)のCSSの値がベースになっている。
検証環境のCSSは、PukiWiki1.5.2のCSSを私が独自にレスポンシブデザインに改造した以外はほぼオリジナルのCSSで、それは現在最新のPukiWiki1.5.3とほぼ同じであるが、そう考えてもこのブロック画面はイマイチだ。
そこで、検証環境とほぼ同じCSSのPukiWiki改造普及活用計画では、上記のBlockAdblockスクリプトに手を加えている。

ブラウザの機能拡張で広告ブロッカーを設定し、上記PukiWiki改造普及活用計画にアクセスすると、

図のブロック画面が表示されるハズだ。
検証環境のブロック画面と比較すると、こちらの方が良いと思うが、どうだろう。
BlockAdblockスクリプトは難読化されている上に圧縮されているし、画面の良し悪しは人それぞれ感じ方が違うため、本稿で改造の説明はしない。
ただ、「スクリプトを改造したかったら自力で頑張れ」と突き放すのもアレなので、改造前(検証環境)と改造後(PukiWiki改造普及活用計画)のスクリプトをダウンロードページにアップロードし、「BlockAdblockスクリプトの組み込み」の章で「後述」とした組み込み方法をオンラインサロン会員向けに公開する。

簡単なドキュメントは書いておくので、質問等があればオンラインサロンまで問い合わせをお願いしたい。

おわりに

PukiWiki関連開発に関しては、これまで開発したライブラリとプラグイン(以下、「開発成果物」と略)をワンパッケージにし、元々は「私家版のディストリビューションとして無料で公開」する予定で考えていた。
実際に無理矢理に太宰治真理教私設松本零士博物館サイトをオープンし、自分で開発した開発成果物を利用してウェブサイトを運営してみると、思いもしない不具合やら問題やら改善点が見えて来るもので、バージョンアップ開発をして本サイトの記事で発信し、なるべく無料で開発成果物とそのノウハウを発信して来たのであるが、それもネットの性善説では限界が見えた。
これはもう、ある意味「PukiWikiと心中」するつもりでやらないと中途半端になってしまうし、Wikiシステムはブログと違った特性があり、それは今もこれからも有効であると思っているので、自分なりにやり抜くしかない。
今年の正月にそう考え、ファンビジネスに乗り出したが、結局は自分でやりたいようにやるには、ファンビジネスそのものを自前で構築する必要から、今思えば色々と遠回りを経ねばならなかった。
それと私個人が開発して来た開発成果物もそうだが、PukiWiki公式が次バージョンをいつ、どんな機能を盛り込んで公開するか分からない。
とすると、私が開発している部分と、バージョンアップされるPukiWiki本体部分を明確に分けなければ、私独自の開発成果物の保守・メンテナンスとPukiWiki本体のバージョンアップとで整合性が取れなくなる。このままでは私の保守開発工数が増大するだけでなく、それを利用している利用者にとっても負担でしかない
ゆえに、今までの開発成果物に対して大幅に「仕組み」から手を入れる必要があり、それはそれで私にとっては1円にもならないし、新規プラグイン開発といった、単純な機能拡張によるメリットが得られるワケでもないので、なかなか大変なのである。
それだけではなく今までの経緯は説明できないモノも沢山あるし、開発にはそういった複雑怪奇な背景が色々とあるため、「PV数の割にGoogle AdSenseの収益が出ていない」のは2年近く前から気付いていた上に、対策も何となく分かっていた。非常に簡単に言えば、単に優先順位を下げて後回しにして来たに過ぎない。
ところが、先日の8月31日に運営しているサイト全部に広告ブロッカーを排除する仕組みを導入してみたところ(まだ1週間ほどだからザックリとしたことしか言えないが)、ある事実が判明した。
本稿をここまで読んでくれた読者には特別に、大きな声では言えない事実をソッと伝えておこう。
1日当たりのPV数は少し減ったが、アドセンス収益が単純に5割も増えました!ギャフン!
色々な意味で、これはこれで私にとって衝撃的な事実なのだが、とりあえず最低1ヶ月は様子を見ないと断定的なことは何とも言えないものの、広告ブロッカーを利用している(もしくはブラウザ標準機能で広告を知らずにブロックしている)人は私の想像より遥かに多かった、ということだ。
日によってはアドセンス収益が従来の倍以上なんて日が何日かあるから、改めてシャレにならんな、と思っている。

関連記事


Warning: strpos() expects parameter 1 to be string, array given in /home/eware/dajya-ranger.com/public_html/wp-includes/compat.php on line 473

Warning: preg_match_all() expects parameter 2 to be string, array given in /home/eware/dajya-ranger.com/public_html/wp-includes/shortcodes.php on line 155
Array

この記事が気に入ったら
いいね ! をお願いします


ITで何かお手伝い出来ることはありませんか?

CTA-IMAGE

本サイトでは、外部サービスと連携して「ITの困った」を解決します!

PukiWikiカテゴリの最新記事