想要以其他國家家庭使用者的真實視角檢視廣告投放和本地搜尋結果,最可靠的方法是在出口IP為當地運營商註冊的真實住宅地址的伺服器上執行無頭瀏覽器。IMIDC的原生住宅IP伺服器正是為此而設:每台伺服器附帶一整段 /24、共253個原生住宅IPv4,機房位於台北、吉隆坡、東京、首爾、約翰內斯堡或曼谷,月付 $2,188 起,每一次檢查都可以指定從某個本地家寬IP發出。
要點:使用者看到的內容很大程度取決於所在國家、語言和網路類型,因此驗證必須從同類連線發起。
搜尋引擎和廣告平台的本地化非常徹底。同一個關鍵詞,在台北用Google、在東京用Yahoo! JAPAN、在首爾用Naver,得到的自然排名、本地商家結果、購物廣告和廣告位都與在新加坡或美國搜尋不同。聯盟網路和電商網站更進一步,會根據訪客位置改變幣種、價格、促銷、Cookie提示,甚至展示哪一個優惠。
要點:很多廣告網路和網站會按IP類型給訪客分類,機房IP常被當作非真人或"託管"流量。
IP情報資料庫會把地址段標記為住宅、ISP/企業、移動或託管。廣告平台用這些標籤做反作弊過濾,部分網站用於防爬或內容決策。團隊從機房IP段檢查時常見的差異包括:更多驗證碼、廣告變少甚至不展示、顯示通用而非本地化內容、聯盟優惠被遮蔽或重定向。這些行為並不統一也沒有公開文件,正因如此,驗證視角應當與真實受眾一致:本地、家庭寬頻、註冊在國內運營商名下。
但這並不等於"隱形"或"絕對乾淨":IMIDC的住宅IP是有真實歷史的真實地址,不保證沒有過往信譽記錄,也不保證永遠不會被驗證攔截。它只是讓您使用與客戶相同類別的連線。
要點:VPN適合偶爾手動檢視,機房VPS適合延遲和可用性探測,而可重複的住宅視角取證需要住宅IP伺服器。
| 方法 | 網站通常識別的IP類型 | 固定、可知的出口IP | 同機自動化 | 視角數量 | 適用場景 |
|---|---|---|---|---|---|
| 消費級VPN | 多為機房IP,與大量使用者共享 | 否,每次會話輪換 | 有限,通常在本地電腦上 | 取決於服務商 | 快速手動抽查 |
| 機房VPS(如IMIDC日本VPS,$28/月起) | 託管/機房 | 是 | 是 | 一個或少量IP | 可用性、延遲、CDN與DNS探測 |
| IMIDC原生住宅IP伺服器 | 住宅,當地運營商 | 是,可按會話指定 | 是,無頭瀏覽器直接跑在伺服器上 | 每個國家最多253個IP | 可重複、可留證的廣告、SEO與價格驗證 |
要點:每項檢查分配一個專用出口IP,在伺服器上執行Playwright,每次執行都儲存截圖和HTML。
Chromium本身不能繫結源地址,最簡單的做法是為每個視角IP起一個本地SOCKS5監聽,出口分別繫結到253個地址中的一個。下面示例用文件保留段 203.0.113.0/24 代替您的真實IP段。
# 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
廣告會輪播、排名會波動,單張截圖說明不了什麼;而同一個本地IP的一系列帶時間戳截圖能體現規律。把證據目錄同步到自己的儲存,向廣告網路或聯盟夥伴反饋問題時,附上截圖、HTML快照以及採集時的IP和時間。100Mbps埠對這種規模的頁面載入和上傳完全足夠。
要點:只做驗證,不做操縱;控制頻率,遵守各平台條款。
要點:只在確實需要驗證的市場購買住宅視角。
IMIDC提供原生住宅IP伺服器,附帶253個註冊在當地運營商名下的原生住宅IPv4,機房覆蓋台北、東京、首爾,以及吉隆坡、曼谷和約翰內斯堡。台北 $2,188/月起,所有方案均可線上訂購。
廣告平台和網站經常把IP段分為託管或住宅,並可能對託管流量進行過濾、取消本地化或要求驗證。從目標國家的住宅IP檢查更接近真實本地使用者的視角,但結果仍會受個性化和廣告輪播影響。
搜尋引擎在條款中限制自動化查詢,因此應優先使用官方工具和API,瀏覽器檢查保持低頻,並只針對自己的關鍵詞和頁面。自動化之前請先查閱各平台最新條款。
大多數團隊每個市場只需要少量IP,每個場景或廣告組一個即可。/24 中其餘的地址可在同一台伺服器下用於測試、本地化服務或自有店鋪運營。
想以本地使用者的視角檢視自己的廣告投放?在目標市場訂購原生住宅IP伺服器,或聯絡IMIDC銷售定製IP數量和國家。現有客戶可提交工單,獲取按IP配置瀏覽器檢查的協助。