「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > RemoveCookieWall、Firefox の拡張機能

RemoveCookieWall、Firefox の拡張機能

2024 年 11 月 8 日に公開
ブラウズ:804

RemoveCookieWall, una extension de 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 もインストールされません。

わかりました。でも、ページを更新したらどうなりますか?そうですね、もう一度始めてください... したがって、これは新しいブラウザ拡張機能が私に代わって行うのに最適です。

RemoveCookieWall 拡張機能

Firefox 拡張機能は、簡単に言えば、対話できる JavaScript コードが実行されるブラウザの予約メモリ領域です。

(ユーザーが許可を与えている場合)アクセスしたページにコードを挿入したり、タブを開いたり閉じたり、リモート サービスと通信したりすることができます…

RemoveCookieWall は Firefox 拡張機能で、必要なのは、ブラウザーがユーザーがアクセスするすべてのページに小さな JavaScript コードを挿入すること「のみ」です。

この 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": "[email protected]"
        }
    }
}

ご覧のとおり、content_scripts はすべてのページに js を挿入することを示しています。他の拡張子はサイトのみを示すことができ、他の拡張子はバックグラウンドで JavaScript を実行します。…

構築して公開する

Firefox で公開するには、拡張機能に必要なすべてのファイルを含む zip を提供するだけです。簡単にするために、zip:

を実行するだけの build.sh を作成しました。

zip -r -FS ../remove-cookiewall.zip * --exclude '.git' --exclude 'build.sh'

Firefox での拡張機能の公開には複雑な手続きはなく、無料です。拡張機能が最初のレビューに合格する必要がある唯一のことは、1 日 (または数日) かかる場合があります

リリースステートメント この記事は次の場所に転載されています: https://dev.to/jagedn/removecookiewall-una-extension-de-firefox-1pab?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3