Skip to content

About

広告ブロックしてるとアフィも開けないので開いてくれる処理

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

link-unblocker (adlinkJumper)

DNSブロックしているアド/アフィリエイトリンク(hb.afl.rakuten.co.jp など)を、 一時的に開きたいときのための302リダイレクト解決アプリ。

URLを渡すと、そのURLへリクエストして最終的な着地先URL(実際の商品ページなど)まで リダイレクトを複数ホップたどり、ブラウザをそこへ直接ジャンプさせる。DNSブロックしている 中間ドメインへのアクセスはサーバー側(Cloudflare/自宅サーバー)から行うため、ローカルの DNSブロックの影響を受けない。

着地後のURLからは utm_* や gclid / fbclid / 楽天・A8.net等のアフィリエイト クリックIDといった、成果報酬の紐づけにのみ使われるパラメータを自動で除去してから リダイレクトする(先方の広告主・ASPに成果を発生させない)。

また、URL中に pc= などのパラメータとして遷移先の完全なURLが既に埋め込まれている 場合(楽天のアフィリエイトリンク等でよくある)は、ASPサーバーへの通信自体を省略して そこから直接たどる。応答が遅いASPサーバーを経由しなくなるため高速化でき、そもそも ASP側にアクセスしないので成果が発生する余地もなくなる。

セットアップ(初回のみ)

実際のドメイン名が入る以下の2ファイルはgit管理対象外($.gitignore$)になっている。 サンプルファイルをコピーして、自分のドメインに書き換えて使う。

cp worker/wrangler.toml.example worker/wrangler.toml
cp docker/Caddyfile.example docker/Caddyfile

コピー後、ln.example.com / ad.example.com の部分を実際に使うドメインへ置き換える。

使い方

2通りの入力方法に対応。以下は例として ln.example.com / ad.example.com を使う場合。

  1. フォーム入力: https://ln.example.com/ を開き、入力欄にURLを貼り付けて送信

  2. URL追記方式: https://ad.example.com/ の後ろに直接ターゲットURLを付ける (http:// / https:// は省略可。ただし xxx.xxx/... のようにドット区切りの ドメイン形式+スラッシュで始まる必要がある。それ以外のパス、例えば bot/クローラーが探索してくる /assets/js/auth.js のようなものは404を返す)

    https://ad.example.com/https://hb.afl.rakuten.co.jp/hgc/xxxxx/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fxxxx
    https://ad.example.com/hb.afl.rakuten.co.jp/hgc/xxxxx/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fxxxx
    

    または ?url= クエリパラメータでも可(URLエンコード推奨)

    https://ad.example.com/?url=https%3A%2F%2Fhb.afl.rakuten.co.jp%2F...
    

ln.example.com と ad.example.com はどちらも同じアプリで、動作は同一(用途別に使い分けるための 2つのホスト名)。

構成

  • worker/ — Cloudflare Workers版(推奨・無料・サーバーレス)
    • wrangler.toml.example — サンプル設定(git管理対象)
    • wrangler.toml — 実際のドメインを書いた実運用設定(git管理対象外、初回コピーで作成)
  • docker/ — 自宅サーバー等でセルフホストする場合のDocker版
    • Caddyfile.example — サンプル設定(git管理対象)
    • Caddyfile — 実際のドメインを書いた実運用設定(git管理対象外、初回コピーで作成)

どちらも同じロジック(最大10ホップまでリダイレクトを追跡、8秒タイムアウト、 プライベートIP/localhostへのアクセスはSSRF対策としてブロック、着地URLからトラッキング/ アフィリエイトパラメータを除去)。

埋め込みURLの検出(高速化)

worker/src/index.js と docker/server.js それぞれの EMBEDDED_URL_PARAM_PRIORITY に 優先度順で定義。以下のいずれかのクエリパラメータに http(s):// から始まる値があれば、 ASPサーバーへは通信せずそこから直接たどる。

url, u, dest, destination, redirect_url, redirect, redir, target, goto, link, pc, m

pc / m は楽天afl系リンクのPC/モバイル向け遷移先パラメータ。誤検出が心配な場合や 新しいASPの埋め込みパラメータ名を追加したい場合は、このリストを編集する (worker版とdocker版の両方に同じ内容を反映すること)。埋め込みURLが見つからない場合は 従来通りリダイレクトチェーンを実際にたどって解決する。

除去対象パラメータ

worker/src/index.js と docker/server.js それぞれの TRACKING_PARAM_EXACT に定義。

  • utm_ で始まるもの全て(完全一致ではなくプレフィックス一致)
  • 広告クリックID: gclid, gclsrc, dclid, gbraid, wbraid, fbclid, igshid, ttclid, twclid, msclkid, yclid
  • メール/CRM系: mc_cid, mc_eid, _hsenc, _hsmi, hsctatracking
  • リファラ系: ref, ref_src, ref_url, referrer, spm, scm
  • ASP/アフィリエイト系: a8mat, a8ejp, a8sub(A8.net)、scid, sc_i, sc_e_p, s_pn(楽天)、vc_url(バリューコマース)、banner_id, adid

新しいASPのパラメータを追加したくなったら、このSetに項目を足すだけでよい (worker版とdocker版の両方に同じ内容を反映すること)。

デプロイ: Cloudflare Workers(無料)

前提: 使用するドメインがCloudflareで管理されているゾーンであること。 worker/wrangler.toml が未作成なら、先に「セットアップ」の手順でコピー・編集しておく。

cd worker
npm install
npx wrangler login
npx wrangler deploy

デプロイ後、Cloudflareダッシュボード → 対象Worker → Settings > Domains & Routes から実際のドメインをカスタムドメインとして追加する(Freeプランで問題なく利用可能)。

wrangler.toml に記載した routes 設定でCLIから追加することも可能。

ローカル動作確認:

npm run dev
# http://localhost:8787/ で動作確認

デプロイ: 自宅サーバー(Docker)

docker/Caddyfile が未作成なら、先に「セットアップ」の手順でコピー・編集しておく。

cd docker
docker compose up -d --build
  • docker-compose.yml は link-unblocker コンテナ(本体)と caddy(リバースプロキシ + Let's Encrypt自動TLS)の2サービス構成
  • 事前に使用するドメインのA/AAAAレコードを自宅のグローバルIPに向けておくこと (ルーターで80/443番ポートを転送)

単体のコンテナだけ動かしたい場合(TLS終端を別途持っている場合など):

cd docker
docker build -t link-unblocker .
docker run -d -p 8080:8080 --name link-unblocker link-unblocker

注意点

  • 公開URLとして稼働させるため、任意のURLへのアクセスを許可する簡易プロキシになる。 プライベートIP/localhostへのアクセスは既にブロック済みだが、悪用が気になる場合は Cloudflare Access等でBasic認証をかけることを推奨
  • リダイレクト先がJavaScriptによるクライアントサイドリダイレクト(meta refreshやJS)の 場合は解決できない(HTTPレベルの3xxリダイレクトのみ対応)
  • トラッキングパラメータの除去は着地後の最終URLに対してのみ行う(リダイレクトの途中経路の URLは、必要な追跡パラメータをASP側が要求しているケースがあるため変更しない)
  • /favicon.ico と /robots.txt は専用レスポンスを即座に返す
  • パス連結方式は「http(s):// で始まる」か「xxx.xxx/... のようなドメイン形式 (ドット区切り + スラッシュ)で始まる」場合のみターゲットURLとして扱う。 /assets/js/auth.js や /bot-connect.js のような、bot/クローラーが探索してくる 無関係なパスは404を返す(外部への無駄なfetchをせず、ログに無関係なリクエストが 積み上がるのを防ぐ)

About

広告ブロックしてるとアフィも開けないので開いてくれる処理

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages