他国の家庭ユーザーが実際に見ている広告掲載やローカル検索結果をそのまま確認する最も確実な方法は、送信元IPが現地ISPに登録された本物の住宅用アドレスであるサーバー上でヘッドレスブラウザを動かすことです。IMIDCのネイティブ住宅IPサーバーはまさにそのための製品で、台北・クアラルンプール・東京・ソウル・ヨハネスブルグ・バンコクのいずれかに、253個のネイティブ住宅IPv4を含む /24 が1ブロック付属し、月額 $2,188 から。チェックごとに現地の家庭用ブロードバンドIPを選んで送信できます。
ポイント:ユーザーに表示される内容は国・言語・接続ネットワークの種類で大きく変わるため、検証も同種の接続から行う必要があります。
検索エンジンや広告プラットフォームはローカライズを徹底しています。台北のGoogle、東京のYahoo! JAPAN、ソウルのNaverで同じキーワードを検索すると、自然検索順位、ローカル枠、ショッピング広告、広告枠がシンガポールや米国からの検索とは異なります。アフィリエイトネットワークやECサイトはさらに踏み込み、訪問者の所在地に応じて通貨、価格、キャンペーン、Cookieバナー、さらには表示するオファー自体を変えることがあります。
ポイント:多くの広告ネットワークやサイトはIPの種類で訪問者を分類しており、データセンターIPは非人間的な「ホスティング」トラフィックとして扱われがちです。
IPインテリジェンスのデータベースは、アドレス帯を住宅・ISP/法人・モバイル・ホスティングなどに分類しています。広告プラットフォームはこれを不正対策のフィルタに使い、一部のサイトはボット対策やコンテンツ判定に使います。データセンターIPからチェックしたときによく報告される違いは、CAPTCHAの増加、広告がほとんど出ない、ローカライズされていない汎用コンテンツ、アフィリエイトオファーの非表示やリダイレクトなどです。これらは一律でも公開仕様でもないからこそ、検証の視点は実際の顧客と同じ「現地・家庭用ブロードバンド・国内ISP登録」に揃えるべきです。
ただし、これは「見えなくなる」「完全にクリーン」という意味ではありません。IMIDCの住宅IPは実際の履歴を持つ実在のアドレスで、過去のレピュテーションがないことや、確認画面が一切出ないことは保証されません。顧客と同じ種類の接続を使える、というだけです。
ポイント:たまの手動確認ならVPN、遅延や稼働監視ならデータセンターVPSで十分ですが、再現性のある住宅視点の証跡には住宅IPサーバーが必要です。
| 手法 | サイト側から見えるIP種別 | 固定・既知の送信元IP | 同一サーバーで自動化 | 視点の数 | 適した用途 |
|---|---|---|---|---|---|
| 一般向けVPN | 主にデータセンター、多数ユーザーで共有 | いいえ、セッションごとに変動 | 限定的、通常は手元PC上 | 事業者次第 | 手早い手動スポットチェック |
| データセンターVPS(例:IMIDC 日本VPS $28/月から) | ホスティング/データセンター | はい | はい | 1つまたは少数のIP | 稼働・遅延・CDN・DNSの監視 |
| IMIDC ネイティブ住宅IPサーバー | 住宅、現地ISP | はい、セッションごとに選択 | はい、サーバー上でヘッドレスブラウザを実行 | 1か国あたり最大253 IP | 証跡付きで再現可能な広告・SEO・価格検証 |
ポイント:チェックごとに専用の送信元IPを割り当て、サーバー上でPlaywrightを実行し、毎回スクリーンショットとHTMLを保存します。
Chromium自体は送信元アドレスをバインドできないため、最も簡単なのは視点IPごとに小さなローカルSOCKS5リスナーを立て、それぞれの送信元を253個のアドレスの1つに固定する方法です。以下の例では実際のブロックの代わりにドキュメント用の 203.0.113.0/24 を使っています。
# 1) Confirm the server holds the /24 and test one source IP
ip -4 addr show dev eth0 | grep 203.0.113.
curl -s --interface 203.0.113.21 https://example.com/ip
# 2) One tiny SOCKS5 listener per vantage IP (microsocks, -b = bind/egress address)
microsocks -i 127.0.0.1 -p 1081 -b 203.0.113.21 & # check A
microsocks -i 127.0.0.1 -p 1082 -b 203.0.113.22 & # check B
次に、Playwrightの各ブラウザコンテキストを目的のIPのリスナーに向け、ロケールとタイムゾーンを対象市場に合わせて、現地ブラウザと同じ条件でページを描画させます。
# adcheck.py - Playwright, one browser context per source IP
import asyncio, datetime, pathlib
from playwright.async_api import async_playwright
CHECKS = [
{"name": "tw-google", "port": 1081, "locale": "zh-TW", "tz": "Asia/Taipei",
"url": "https://www.google.com.tw/search?q=example+keyword&hl=zh-TW&gl=tw"},
{"name": "tw-landing", "port": 1082, "locale": "zh-TW", "tz": "Asia/Taipei",
"url": "https://example.com/offer?utm_source=affiliate"},
]
async def run(check, browser):
ctx = await browser.new_context(
proxy={"server": f"socks5://127.0.0.1:{check['port']}"},
locale=check["locale"], timezone_id=check["tz"],
viewport={"width": 1366, "height": 900})
page = await ctx.new_page()
await page.goto(check["url"], wait_until="networkidle", timeout=60000)
ts = datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ")
out = pathlib.Path("/srv/evidence") / check["name"]
out.mkdir(parents=True, exist_ok=True)
await page.screenshot(path=str(out / f"{ts}.png"), full_page=True)
(out / f"{ts}.html").write_text(await page.content(), encoding="utf-8")
await ctx.close()
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
for c in CHECKS: # sequential on purpose: low, polite volume
await run(c, browser)
await browser.close()
asyncio.run(main())
より強い分離が必要なら、視点IPごとに独立したLinuxネットワーク名前空間を作ります(ip netns add tw01 でそのIPを持つmacvlanインターフェースを移し、ip netns exec tw01 でブラウザを起動)。これでセッション内の通信が別のアドレスから出ることはなく、Cookieやキャッシュもチェックごとに分かれます。
ポイント:控えめで定期的なスケジュールなら、大量の自動トラフィックを生まずに傾向データと証拠を残せます。
# crontab -e : run every 6 hours, keep a log, prune evidence after 90 days
0 */6 * * * /usr/bin/python3 /opt/adcheck/adcheck.py >> /var/log/adcheck.log 2>&1
30 3 * * * find /srv/evidence -type f -mtime +90 -delete
広告はローテーションし、順位も変動するため、1枚のスクリーンショットではほとんど何も証明できません。同じ現地IPからのタイムスタンプ付きキャプチャを継続的に集めることで傾向が見えます。証跡フォルダを自社ストレージに同期し、広告ネットワークやアフィリエイトパートナーに問題を報告する際は、スクリーンショット、HTMLスナップショット、取得時のIPと時刻を添えましょう。この規模のページ読み込みとアップロードなら100Mbpsポートで十分です。
ポイント:検証にとどめ、操作はしない。頻度を抑え、各プラットフォームの規約に従います。
ポイント:住宅IPの視点は、実際に検証が必要な市場だけで購入しましょう。
IMIDCは、現地ISPに登録された253個のネイティブ住宅IPv4を備えたネイティブ住宅IPサーバーを、台北・東京・ソウルのほかクアラルンプール・バンコク・ヨハネスブルグで提供しています。台北は $2,188/月からで、全プランをオンラインで注文できます。
広告プラットフォームやサイトは、IP帯をホスティングか住宅かで分類し、ホスティングからの通信をフィルタしたり、ローカライズを外したり、確認画面を出したりすることがあります。対象国の住宅IPからチェックすると現地ユーザーの視点に近づきますが、パーソナライズや広告ローテーションによる変動は残ります。
検索エンジンは規約で自動クエリを制限しているため、公式ツールやAPIを優先し、ブラウザチェックは低頻度で自社のキーワードとページに限定してください。自動化の前に各プラットフォームの最新規約を確認しましょう。
多くのチームでは、検証用に必要なのは市場ごとに数個、シナリオや広告グループごとに1つ程度です。/24 の残りのアドレスは、同じサーバーでQA、ローカライズサービス、自社ストア運営などに活用できます。
現地ユーザーと同じ視点で自社キャンペーンを確認しませんか。必要な市場のネイティブ住宅IPサーバーを注文するか、IP数や国のカスタマイズはIMIDC営業窓口までご相談ください。既存のお客様は、IP別ブラウザチェックの設定についてサポートチケットからお問い合わせいただけます。