ホームページ > 記事 > ウェブフロントエンド > RemoveCookieWall、Firefox の拡張機能
Web サイトで流行しているサードパーティ Cookie やチェックアウトを許可するバナーにうんざりしていませんか?この投稿では、ほとんどのサイトで Firefox 拡張機能を回避するために、どのように Firefox 拡張機能を作成 (そして公開) したかについて説明します
この拡張機能のコードは、https://github.com/jagedn/removecookiewall-addon で公開されています。 https://addons.mozilla.org/es/firefox/addon/removecookiewall/
から Firefox (モバイルでも) にインストールできます。数か月間、ヨーロッパの要件により (おそらく)、ほとんどの Web サイトでは、最初にアクセスするときにバナーが表示され、次のいずれかを決定するまで続行できません。
あなたのブラウザに何千ものサードパーティ Cookie を配置し、あなたの閲覧内容を監視します
私が支払わないようにチェックアウトに行ってお金を払ってください
これらのライブラリのほとんどは、ページがロードされるとすぐに Cookie を読み取る JavaScript を実行します。あなたがチェックアウトしていないことがわかると、HTML ダイアログが表示され、本文をブロックしてスタイルを「ブロック」(または同様のもの) に変更します
このダイアログでは、その下にあるものを読み取ることはできませんが、それでも HTML の DOM 要素であるため、ブラウザーを使用すると開発コンソールを開いて HTML を検査できるため、次のアイデアを思いつきました。ダイアログを手動で削除して (「検査」をクリックし、定義されている HTML を検索して「削除」をクリックするだけです)、チンポンすると、ダイアログが消えます。次に、「body」宣言を探し、style 属性をダブルクリックして、それをブロックしているプロパティを削除すると、スクロールできるようになります。
ちょっとした魔法。
それでは何が起こっているのでしょうか? JavaScript コードは、どのボタンが押されたかを通知するユーザー イベントが到着するのを待ち続けるだけですが、これらのボタンはもう存在しないため、到着することはなく、サードパーティ Cookie もインストールされません。
わかりましたが、ページを更新したらどうなりますか?もう一度始めましょう... したがって、これは新しいブラウザ拡張機能が私に代わって行うのに最適です。
Firefox 拡張機能は、簡単に言うと、対話できる JavaScript コードが実行されるブラウザの予約メモリ領域です。
(ユーザーが許可を与えている場合) アクセスしたページにコードを挿入したり、タブを開いたり閉じたり、リモート サービスと通信したりすることができます...
RemoveCookieWall は、ユーザーがアクセスするすべてのページにブラウザーが小さな JavaScript コードを挿入すること「のみ」を行う Firefox 拡張機能です。
この JavaScript は、ページがロードされると、使用されていると私が調査した DOM 要素のいずれかに一致する DOM 要素があるかどうかを検査します。検出すると、標準の Javascript 関数を使用して削除します。
コードの実行後 (ミリ) 秒後にバナーが表示される場合があるため、スクリプトは数秒間検索を繰り返します。この時間が経過してもバナーが表示されない場合、拡張機能はページに CookieWall がないとみなして終了します
これですべてです。残っているのは、コードをパッケージ化し、拡張機能に必要な権限を示すマニフェスト ファイルを追加して、Firefox で公開するだけです
JS コードは基本的に次のとおりです:
var readyStateCheckInterval; var counter = 0; function sanitizeBody() { document.body.style.overflow = "unset" document.body.classList.remove('sxnlzit') document.body.classList.remove('didomi-popup-open') document.body.parentNode.classList.remove('sp-message-open') } function removeMe(element) { element.remove(); sanitizeBody(); } readyStateCheckInterval = setInterval(function() { if (document.readyState === "complete") { counter++; const removeParent = ['div.pmConsentWall']; //elpais [...removeParent].forEach(s => { var divs = document.body.querySelectorAll(s); [...divs].forEach(element => { removeMe(element.parentNode); }); }); const removeThis = [ 'div[data-nosnippet="data-nosnippet"]', '#mrf-popup', '#didomi-popup', '[id^="sp_message_container_"]', '#cl-consent', 'dialog.cookie-policy' ]; [...removeThis].forEach(s => { var divs = document.body.querySelectorAll(s); [...divs].forEach(element => { removeMe(element); }); }); if (counter > 30) { clearInterval(readyStateCheckInterval); } } }, 100);
コードがページに挿入されるとすぐに、100 ミリごとに間隔が開始されます
スクリプトは、document.body.querySelectorAll が #mrf-popup、#didomi-popup などの要素を見つけたかどうかを確認します。見つかった場合は、element.remove()
で削除するだけです。数回試行すると、間隔が削除されてしまいます
すべての拡張機能にはマニフェスト ファイルが必要です。この拡張機能の拡張子は次のとおりです:
{ "description": "Remove CookieWall", "manifest_version": 2, "name": "RemoveCookieWall", "version": "0.11", "homepage_url": "https://github.com/jagedn/removecookiewall-addon", "icons": { "48": "icons/border-48.png" }, "content_scripts": [{ "matches": [ "*://*/*" ], "js": ["removeCookieWall.js"] }], "browser_specific_settings": { "gecko": { "id": "remove-cookiewall@aguilera.soy" } } }
ご覧のとおり、content_scripts はすべてのページに js を挿入することを示しています。他の拡張子はサイトのみを示すことができ、他の拡張子はバックグラウンドで JavaScript を実行します。…
Firefox で公開するには、拡張機能に必要なすべてのファイルを含む zip を提供するだけです。簡単にするために、zip を実行するだけの build.sh を作成しました。
zip -r -FS ../remove-cookiewall.zip * --exclude '.git' --exclude 'build.sh'
Firefox での拡張機能の公開は複雑なことはなく、無料です。拡張機能が最初のレビューに合格する必要がある唯一のことは、1 日 (または数日) かかる場合があります
以上がRemoveCookieWall、Firefox の拡張機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。