世界を動かす技術を、日本語で。

広告ブロッカーが検出されませんでした

概要

  • インターネット広告 の問題点と低い報酬について解説
  • uBlock Origin などの推奨アドブロッカーの案内メッセージ実装方法
  • JavaScriptとCSS を使った非侵襲的な通知の仕組み説明
  • 技術的な詳細 とユーザー体験向上の工夫を紹介
  • 寄付による支援 の重要性を強調

インターネット広告とアドブロッカー推奨メッセージの実装

  • インターネット広告 はユーザーの時間を浪費し、ウェブ体験を悪化させる要因
  • 広告収入 は非常に低く、サイト運営者は内容の薄い広告だらけのサイト運営を強いられる現状
  • 作者支援 には広告閲覧よりも直接的な寄付が有効
  • 多くの人が広告をインターネットの一部と捉えているため、 アドブロッカー の利用を促すメッセージを表示
  • uBlock Origin のような信頼できる拡張機能を推奨
    • 商用アドブロッカーは信頼性が低く、場合によっては詐欺的なものも存在
    • 広告で宣伝されるアドブロッカーはユーザーから収益を得る目的が強い

メッセージ表示の技術的仕組み

  • ページ内に div要素 を設置し、 nativeads.js というスクリプトを読み込む構成
    • <script defer src="/nativeads.js"></script>
    • <div id="ad-note-hidden" class="多数の広告風クラス名"> <p id="ad-note-content-wrapper"> </p> </div>
  • nativeads.js の動作概要
    • クッキーでメッセージ表示履歴を管理
    • 初回のみ「アドブロッカー未検出。uBlock Originの利用を推奨」という内容を表示
    • 閉じるボタン (Click here to close)が機能し、クリックで非表示&クッキー記録
  • CSS によるデザイン調整
    • 画面サイズが十分なときのみ右下に固定表示
    • コンテンツを覆わず、邪魔にならない配置
  • アドブロッカー がdivやスクリプトをブロックした場合、メッセージは表示されない設計
    • uBlock Origin Liteのようなネットワークリクエストのみをブロックするタイプにも対応
  • DNSベースのブロック は検出不可
    • 実際の広告を読み込む以外に検出手段がないため、控えめな通知設計を採用

ユーザー体験への配慮

  • JavaScript非対応ブラウザ ではメッセージ非表示
    • そもそもアドブロッカー不要なケース
  • CSS非対応ブラウザ での動作も考慮
    • ただし、実際にJSのみ対応でCSS非対応なブラウザはほぼ存在しない
  • 通知は一度だけ表示 され、再表示防止のためクッキーを利用
  • 他サイトのアイデア (Stefan Bohacek氏)を参考に、誤検出を減らし、クッキーの作用範囲も明確化

寄付による支援の重要性

  • 広告収入 よりも 直接的な寄付 の方が作者の支援に役立つ
  • 1ドルの寄付 でも広告閲覧より大きな貢献
  • サイト利用者に対し、 寄付という支援方法 を積極的に提案

Hackerたちの意見

このサイトを訪れる人と、まだ広告ブロッカーを使ってない人の重なりってどのくらいなんだろう?でも、広告が画面にべったり貼られてる開発者も見たことあるし、彼らが意識的にそうしてると信じたいな。

広告ブロッカーをインストールしてないから、そういうのはよく見かけるよ。広告ブロッカーの代わりに、ユーザーに優しくないサイトを覚えておいて、そういうサイトは避けるようにしてる。広告が多いサイトは時間の無駄だから、どこにでもある自動再生の動画があると、別のところに行くサインになっちゃうね。

考えてみると、プロのYouTuberがブラウザを見せると、広告ブロックしてないことが多いよね。でも、プロのYouTuberなら広告ブロックのことは知ってるはず。彼らは本当に広告を意図的に見てるのかな、プライベートでも?それとも、視聴者にアイデアを与えないために動画のためだけに広告ブロッカーをオフにしてるのかな、広告収入を失わないために。

ブラウザがページのonload後にJavaScriptを無効にする方法を提供してくれたらいいのに。ユーザーが何かをクリックしたときだけJavaScriptが有効になるとか。

それに同意だわ。昔はIEのストップボタンがこれをやってると思ってた。

古いOpera(Chromiumシェルになった前のやつ)は、メニューに簡単にJSのオンオフを切り替えるトグルがあったけど、読み込み時だけだったか、すぐに効いたかは覚えてない。

setTimeout(() => { // 未来の全てのJavaScriptをぶっ壊す setTimeout = setInterval = requestAnimationFrame = () => {}; Element.prototype.appendChild = () => { throw new Error("ブロックされた"); }; document.addEventListener = () => {}; window.addEventListener = () => {}; Object.defineProperty(document, "readyState", { get: () => { throw new Error("JSなし"); } }); document.write = () => {}; // canvasをぶっ壊す if(window.HTMLCanvasElement) HTMLCanvasElement.prototype.getContext=()=>null; // webglをぶっ壊す if(window.WebGLRenderingContext) window.WebGLRenderingContext.prototype.getParameter=function(){e=>{throw new Error("ブロックされた")}}; // webgl2をぶっ壊す if(window.WebGL2RenderingContext) window.WebGL2RenderingContext.prototype.getParameter=function(){e=>{throw new Error("ブロックされた")}}; // websocketsをぶっ壊す window.WebSocket=function(){e=>{throw new Error("ブロックされた")}}; window.EventSource=function(){e=>{throw new Error("ブロックされた")}}; // ポップアップをぶっ壊す window.open=()=>null; // ... }, 500);

それか、マウスオーバーね。

NoScriptアドオンを使ってしばらくブラウジングしてみたけど、ほとんどページが読み込まれないから、訪れるほぼすべてのページをホワイトリストにしないといけなくて、目的が達成できないんだよね。どこか別のところでJSを実行して、スクリーンショットやレンダリングされたHTMLを送ってくれるようなレンダープロキシがあればいいなって考えてる。もしくは、LLMを活用して、膨れ上がったJSのゴミを探してる実際の情報に変換できるかも。

もしかしたら変わったかもしれないけど、広告スクリプトは document.write() を使ってて、これがすぐに実行されるんだよね(onLoadとかの前に)。これが遅い大きな理由の一つ。

でも外部CSSを使うと、リクエストが失敗してスタイルが適用されないページになるのは結構普通だよ。 それ、かなりおかしな発言だね。CSSスタイルシートが読み込まれないことって、どれくらいの頻度で見るの?ほとんどのサイトはスタイルシートがないと全く使えないし、最後にスタイルシートが読み込まれなかったのを見たのはいつだったか思い出せないよ。

過去数年で一度だけそんなことがあったけど、簡単にリフレッシュしたら直ったよ。普通だと言うのは大げさだね。

CSSスタイルシートの読み込みが失敗することはどのくらいある? しょっちゅうだね。多分、広告ブロックの設定が関係してるかも… > ほとんどのサイトはスタイルシートなしでは完全に使えない そういうサイトは基本的にクソだよね。

月に数回かな。(Comcastと、Linux上のQualcomm NFA765、あと広告ブロックの組み合わせが影響してる。多分、二つ目が主な理由だね。)

FBIも、広告ブロッカーが詐欺師が人を悪意のあるサイトに誘導するのを防ぐっていい主張をしてるよ。 https://techcrunch.com/2022/12/22/fbi-ad-blocker/ https://web.archive.org/web/20230219020056/https://www.ic3.g...

何年も前から言ってるけど、今の時代、広告ブロッカーが一番のアンチウイルスだよ。

プロキシがURLの「/ads/」を検出して、自動で接続を切ったのが面白かったな。もちろん、広告ブロッカーが検出可能だってことを強調すると、残念ながら猫とネズミのゲームがさらにエスカレートするだけなんだけどね。全ページのコンテンツを「JavaScriptが検出されました。このコンテンツを表示するには無効にして、セキュリティを向上させてください。」ってメッセージに置き換えるスクリプトを広めることも考えたことがある。

皮肉なことに、後者は多分前者のようなツールによって猫とネズミのブロック対象になるだろうね。

広告ブロッカーが検出されませんでした。時間と帯域幅を節約するためにuBlock Originのような拡張機能を使うことを検討してください。注意力やプライバシーもね。この通知はいいアイデアだと思う。「いいね」を外すかもしれないけど、「uBlock Origin」は良いけど、他のは疑わしいものや、まったくのマルウェアもあるからね。ところで、リンクされているublockorigin.comのウェブサイトは、uBlock Originのリーダーであるレイモンド・ヒルのものではないから注意してね。意図は良さそうだけど、UXはきれいに整ってるけど、ヒルの管理下にないようだから、注意した方がいいよ(それは非常に価値のあるマルウェアの潜在的な妥協点になるかもしれない)。ヒルはhttps://github.com/gorhill/uBlockから運営しているみたい。見るのにあまり悪くないリンクはhttps://github.com/gorhill/uBlock/blob/master/README.md。まあまあだけど悪くないリンクはhttps://github.com/gorhill/uBlock/wiki。

オンライン広告からは完全に遮断されてて、もう10年くらいそうだね。たまに広告ブロッカーがないデバイスでブラウジングしなきゃいけない時があるけど、ほとんどの場合、インストールすらできない。広告がたくさん載っててSEO最適化されたウェブサイトを見ると、まるで薬物中毒者の巣に入った気分になる。これが大多数のユーザーにとって普通の体験だっていうのは悲しいね。

なんでこんなに攻撃的な広告ブロックが普通じゃないのか、90%以上になってるのに理解できない。誰かが全然気にしない様子だと、何かおかしいんじゃないかって心配になる。最近、YouTubeの広告ブロックが一時的に効かなくて、ちょっとした家事をしてる間に流れてくる広告の量には驚かされたし、イライラした。まるで静かな図書館にいるのに、30秒ごとに誰かが突然叫び出すみたいで、周りの半分の人が「別に気にしないよ」って反応してる感じ。

面白い考えだけど、ウェブユーザーと薬物使用者の交差点では、広告ブロックの利用率が全ウェブユーザーより高いんじゃないかな。

数百万ドルを使って広告ブロッカーを宣伝して、GoogleやMetaに対するショートポジションを正当化できるか考えてみた。

迷ってるなぁ。広告があんまり好きじゃないし、今の広告ネットワークにはあまり敬意を持ってない。でも、ウェブサイトがデータをホストして、その上でトラッキングや広告をブロックしてタダ乗りする文化も、ちょっと見苦しいよね。ここには暗黙の社会契約があると思う。ウェブサイトは広告のためにオーディエンスを引き寄せるために、たくさんのコンテンツをホストして整理してるんだ。タダ乗りする人が多すぎると、サービスはコンテンツをホストしなくなるし、その過程でタダ乗りしてる人たちは、権利を主張するような形でシステムから搾取してるだけだよね(もし彼らの目的が使ってるサービスを壊すことなら、それはそれで一貫性があっていいけど)。もし人々がこの契約を受け入れないなら、それでもいいよ。 enforcementはいつも名誉のシステムだったからね。でも、戦略的にそのサービスの社会契約が合わないなら、そのサービスを使うべきじゃないよ。結局、ただその獣に餌を与えてるだけだから。自分たちでサービスを作るか、他のプラットフォームを探すべきだと思う。

広告自体は問題じゃないんだよね。問題はトラッキングなんだ。もし広告がクッキーなしで、トラッキングなしで、ただの静止画のgifで配信されたら、もっと受け入れられると思う。でもトラッキングなしだと、2008年か9年頃、不動産バブル崩壊前に、シンプソンズがモーゲージを売るための踊るカウボーイの広告を引用してたんだよね。これが、家を買った後にすぐに高騰する調整型モーゲージだったんだ。

あなたが言ってるウェブサイトは、私のハードウェアやソフトウェアが手の中で動作する時に何をするかを決める権利はないよ。彼らのコンテンツは私のユーザーエージェントへの提案であって、破れない法律じゃない。もし彼らがそれを気に入らないなら、完全に閉鎖すべきだね。

これは、インターネットで自分の考えをシェアして、サーバー代を稼ごうとしている独立したブロガーにとっては良い社会契約だと思う。でも、数十年も個人データを吸い上げてきたメガ企業は人間じゃない。彼らとの社会契約は存在しない。彼らはただデータを売るだけだよ。もし彼らが何をしているか知っていて、それをブロックする方法を知っているのに拒否するなら、世界を悪化させることに加担していることになる。企業は、あなたが言ってるような敬意を持って扱うべき存在じゃないよ。

私の見解では、基本的な契約は良かったけど、広告主が他の違反でその合意を破ったんだ。例えば、* 事前に帯域幅を奪う自動再生動画。 * スピーカーを予期せず占拠して他のことを中断させる自動再生音声。 * タブやウィンドウの制御を混乱させるポップアップの形。 * 自分のブラウジング習慣を集約して追跡しようとするシステムに監視されること。 * マルウェアやフィッシングサイトのほとんど責任を問われないベクター。 * ページがコンテンツの1部に対して、3部が点滅したり変化したりする広告で、イディオクラシーも赤面するような本当にひどい体験。彼らは顧客の抵抗が最も無邪気で物議を醸さない広告表示に対するものだと装おうとするけど、それは真実じゃないし、何十年もそうじゃなかった。

情報をネットに載せたくてウェブサイトを運営してるだけで、広告収入が目的じゃないんだよね。

ちょっと待って。君のコメントは公平だけど、文脈を考慮しないといけない。文脈としては、裁判所がGoogleがオンライン広告技術市場で2つの違法な独占を持っていると認定したことがあるんだよね。その解決策はまだ決まってないし。さらに、司法省がMetaを同じ理由で訴えていて、その裁判も進行中だ。君はどうかわからないけど、私にとっては、相手が契約を破ったら、その契約は無効だと思う。社会契約も同じで、誰かが私を殺そうとしたり、強盗しようとしたら、どんな社会契約があったとしても無効だよ。幸いなことに、私が知る限りGoogleやMetaは誰かを狙ってはいないけど、オンライン広告の市場を作っている連中は、完全に有罪判決を受けた犯罪者か、政府に訴えられている人たちなんだ。私たちにはこの状況を尊重する社会契約なんてないと思う。違法な悪用が是正されるまで、オンライン広告の存在に反対するのは正しいし、正義だと思う。もし裁判所がGoogleが法律を破っていると判断したなら、彼らの広告技術ビジネスを止めるように命じる仮処分を出すべきじゃない?なんでこんなに甘いの?犯罪者に何かを貸す必要なんてないし、私もそう思う。これはケチになるとか、公平な取引を壊すことじゃなくて、アメリカのビジネスや社会の中で法と秩序が回復されることを求めることなんだ。この社会の意味は何なのか、もしそれが最も強力な者を守るために自分の法律を破り続けるなら、どんな道徳的な正当性があるのか。残念ながら、出版社(ウェブサイト)がこの争いに巻き込まれてしまっているけど、私が「問題が解決するまで全てのオンライン広告に反対すべきだ」と言ったら、彼らは同意しないかもしれない。でも、彼らはGoogleやMetaに損をさせられていて、正義が実現するのを見たいと思っているはずだよ。

問題は、商業広告を支えるウェブサイトが、検索結果やDiscord、SNS、ブログのアフィリエイトリンクなど、あらゆるオンラインスペースに押し寄せてくることなんだ。彼らがそうするのを止める唯一の方法は、収入源を奪うこと。もし広告が利益を生まなければ、どのキッチンナイフを買うかの検索結果が出ないなんてことはないし、もっと良い、武器化されていない、関連性の高い結果が見つかるはずだよ。広告をブロックしなければ、広告が増えてコンテンツが減る世界に直接貢献していることになる。

サイトが広告を使って競争を妨げてるせいで、価格で競えない状況になってる。だって彼らの価格は$0なんだから。ユーザーが使うことでお金をもらえるサイトが出てきてもおかしくないと思うんだけど、そういうビジネスモデルは100%成立するからね。人々は自分の注意がどれだけ価値があるかを理解してないし、ほとんどの人は広告の影響をあまり受けてないと思ってる。サイトはこれを利用して競争を妨げてるんだ。こんな状況が終わるのを見ても全然悲しくないよ。

広告が流れてるときに画面を見ないで済むなら、最初から再生しない権利もあるべきだよね。視聴者には道徳的な義務なんてないんだから。広告は投資なんだよ。誰かが何かを放送するためにお金を払って、その認知度を上げようとしてる。投資は失敗することも許されるべきだよ。

新聞にあるような静的な広告には全然問題ないよ。このスレッドの別の回答では、広告主がやったことがリストアップされてるけど、それがトラッカーブロッカーが作られた理由なんだよね。広告主がやりすぎて、今は制御を失って泣いてる。私のプライバシーや注意、デジタルセキュリティは、あの欲深くて規制のない人たちのために犠牲にする価値はないよ。ブログがスポンサーコンテンツのために静的な画像を使うのを妨げるものは何もないのに、誰もやらないんだよね。

Orionではメッセージが表示されないし、広告ブロッカーもインストールしてないよ。ジェリーフィッシュの豆知識も教えてもらってないし。

内蔵の広告ブロッカーを無効にした?

アイロニックなことに、iOSのSafariのコンテンツブロッカーがこのページの読み込みを全くブロックしてるみたい。URLに/ads/が含まれてるからだと思う。コンテンツブロッカーを無効にした後、iOSでその通知は見なかったけど、スペースが足りないとか、横にオフになってる制約のせいかもね。