カスタムブラウザフィンガープリント:サイトが読み取る信号を制御する
Specialist in Anti-Bot Strategies
TL;DR:
- ブラウザフィンガープリントは、サイトがブラウザを特定するために読み取る信号のセットです — ユーザーエージェント、プラットフォーム、画面、タイムゾーン、言語、キャンバスおよびWebGL。これらが互いに矛盾すると、自動化がフラグされます。
- Scrapeless Scraping Browserを使用すると、フィンガープリントを明示的に設定できます。
fingerprintオブジェクトを渡すと、クラウドブラウザはその値を正確に報告し、内部で一貫性を保ちます。 - オーバーライドは本物であり、見かけだけのものではありません。 ライブ実行では、
navigator.userAgent、navigator.platform(Win32)、解決されたタイムゾーン(Asia/Hong_Kong)、およびnavigator.languageが設定された値として返ってきました — 下に検証済み。 - 一貫性が重要です。 香港のタイムゾーンとデータセンターIPを持つ米国ユーザーエージェントは、ボット対策システムが探すミスマッチです;フィンガープリントと出口を設定して、一貫したストーリーを伝えます。
- 標準のPuppeteer接続を使用します。 フィンガープリントはWebSocketエンドポイントのクエリパラメータであり、ナビゲーションコードは変更されません。
- 無料で始められます。 新しいScrapelessアカウントには無料のScraping Browserランタイムが含まれています — app.scrapeless.comでサインアップしてください。
はじめに:ブラウザがあなたを暴露しています
読み込むすべてのページは、あなたがどのようなクライアントであるかを決定するために一連の信号を読み取ります:ユーザーエージェント文字列、プラットフォーム、画面サイズ、言語とタイムゾーン、キャンバスやWebGLフィンガープリントなどの深い値。実際のブラウザはこれらを一貫して報告します — 米国設定のChromeがWindowsで、米国のタイムゾーン、一致するプラットフォーム、通常の画面を持っています。自動化は異なるストーリーを漏らす傾向があります:こちらはヘッドレスデフォルト、あちらはミスマッチしたタイムゾーン、そして人間のブラウザが設定しないnavigator.webdriverフラグ。
Scrapeless Scraping Browserは、そのストーリーを意図的に設定させます。セッションを開くときにfingerprintオブジェクトを渡し、クラウドブラウザは正確にそれらの値を一貫して報告します。ガイドでは、フィンガープリントフィールド、標準のPuppeteer接続を介してそれらを設定する方法、オーバーライドが実際に効果を持つかどうかの確認をカバーします。
制御できる内容
- ユーザーエージェント — ブラウザが報告する完全なUA文字列。
- プラットフォーム —
Windows、macOS、またはLinux、navigator.platformに反映されます。 - スクリーン — 報告された
幅と高さ。 - ローカリゼーション —
タイムゾーンと言語の順序付きリスト。 - 起動引数 — ウィンドウサイズなどのChromiumフラグ。
値は内部的に一貫性が保たれているので、ブラウザはmacOSユーザーエージェントを持つWindowsプラットフォームを報告しません。
なぜScrapeless Scraping Browserなのか
Scrapeless Scraping Browserは、ウェブクローラーとAIエージェント向けに設計されたカスタマイズ可能なアンチ検出クラウドブラウザです。特にフィンガープリント制御のために、以下の機能を提供します:
- 明示的フィンガープリントフィールド — ユーザーエージェント、プラットフォーム、スクリーン、タイムゾーン、および言語をセッションごとに設定。
- 内部的一貫性 —
navigator.webdriverの手がかりはなく、設定した値が互いに一致します。 - 195カ国以上の住宅用プロキシ — フィンガープリントの地域と一致する出口とペアリングして、2つの信号を一致させます。
- 標準のPuppeteer接続 —
puppeteer.connect()は通常のBrowserを返します;フィンガープリントはエンドポイントURLに設定されます。
app.scrapeless.comの無料プランでAPIキーを取得してください。
前提条件
- Node.js 18以上
- ScrapelessアカウントとAPIキー — app.scrapeless.comでサインアップ
- Puppeteerに関する基本的な知識
インストール
bash
npm install puppeteer-core
bash
export SCRAPELESS_API_KEY="your_api_token_here"
フィンガープリントを設定する
フィンガープリントオブジェクトを構築し、URLエンコードしてWebSocketエンドポイントのfingerprintクエリパラメータとして渡します。他のすべては通常のPuppeteerセッションです:
javascript
import puppeteer from 'puppeteer-core';
const fingerprint = {
userAgent:
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
platform: 'Windows',
screen: { width: 1280, height: 1024 },
localization: { languages: ['en-US', 'en'], timezone: 'Asia/Hong_Kong' },
args: { '--window-size': '1280,1024' },
};
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: '180',
proxyCountry: 'ANY',
fingerprint: encodeURIComponent(JSON.stringify(fingerprint)),
});
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://browser.scrapeless.com/api/v2/browser?${params}`,
});
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
await browser.close();
オーバーライドが効果を持つことを確認する
ページ内から信号を読み取り、それらが設定した値と一致することを確認します:
javascript
const reported = await page.evaluate(() => ({
userAgent: navigator.userAgent,
platform: navigator.platform,
タイムゾーン: Intl.DateTimeFormat().resolvedOptions().timeZone,
言語: navigator.language,
}));
console.log(reported);
// {
// ユーザーエージェント: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) … Chrome/134.0.0.0 Safari/537.36",
// プラットフォーム: "Win32",
// タイムゾーン: "Asia/Hong_Kong",
// 言語: "en-US"
// }
ライブ実行では、これら4つすべてがフィンガープリントの値として返されました — ユーザーエージェントはそのまま、プラットフォームはWin32(platform: 'Windows'から)、解決されたタイムゾーンはAsia/Hong_Kong、言語はen-USでした。オーバーライドは、リクエストヘッダーだけでなく、ページが実際に読み取るJavaScript環境に届きます。
無料プランでAPIキーを取得できます: app.scrapeless.com
信号を一致させる
フィンガープリントは、その構成要素が一つのストーリーを語るときにのみ役立ちます。セッションがフラグされる一般的な不一致:
- タイムゾーン vs. IP — 香港のタイムゾーンの背後にある米国のエグレスは、一貫性がないとみなされます。
proxyCountryを、タイムゾーンや言語と一致する地域に設定するか、タイムゾーンをエグレスに合わせて設定します。タイムゾーンの扱いはIntl.DateTimeFormat APIによるIANAゾーンに従います。 - プラットフォーム vs. ユーザーエージェント — macOSのUA文字列を持つ
Windowsプラットフォームは矛盾しています。プラットフォームフィールドとUAのOSトークンを一致させてください; UAの文法はHTTPセマンティクス仕様で定義されています。 - 言語 vs. 地域 — その地域のユーザーが使う順序で
languagesを配置し、主要なロケールを最初にしてください。 - スクリーン vs. ウィンドウ —
screenの寸法と--window-size引数が、模倣しているデバイスに対して妥当であるようにしてください。
これらの信号は、OWASP自動脅威プロジェクトにカatalogedされた自動クライアントの手がかりの種類です — それらの間の一貫性は本物のブラウザが持つものであり、不注意なボットにはありません。
高度なパターン
セッション間でフィンガープリントを回転させ、1つのセッション内では変えない。 ビジットの途中でストーリーが変わらないように、セッションの期間中はフィンガープリントを安定させておき、セッション間で変化を付けます。
エグレスをフィンガープリントの地域に固定する。 選択したタイムゾーンや言語に一致するように、proxyCountry(必要に応じてproxyState/proxyCityも)を設定します。
プロファイルでアイデンティティを永続化する。 実行間で同じアイデンティティが必要な場合、フィンガープリントをブラウザプロファイルと対にして、クッキーやストレージを引き継ぐようにします。
それを信じられるものに保つ。 実際のデバイスが生成しないフィンガープリントは、デフォルトのものと同じくらい疑わしい — 実際に存在するブラウザを説明する値を使用してください。
結論: 一貫したアイデンティティ
カスタムフィンガープリントは単なる一つのトリックではありません — それは、一貫したアイデンティティを報告するブラウザと、自己矛盾するブラウザの違いです。ユーザーエージェント、プラットフォーム、スクリーン、タイムゾーン、言語を一緒に設定し、一致するようにエグレスを固定し、サイトが読み取る値が本物のブラウザのように一致します。これをScraping Browserセッションコントロールや住宅用エグレスと組み合わせて、IPレピュテーションが重要な理由を確認し、ドキュメントがすべてのフィールドを網羅しています。
AI駆動のデータパイプラインを構築する準備はできましたか?
私たちのコミュニティに参加して、無料プランを請求し、検出対策ワークフローを構築している開発者とつながりましょう: Discord · Telegram。
無料のScraping Browserランタイムにサインアップし、価格をスケールのために確認してください。
よくある質問
Q: ブラウザフィンガープリントとは何ですか?
サイトがあなたのブラウザを識別するために読み取る信号のセット — ユーザーエージェント、プラットフォーム、画面サイズ、タイムゾーン、言語、そしてキャンバスやWebGLのようなより深い値。サイトはそれらを識別子に組み合わせて、本物のデバイスに見えない組み合わせをフラグします。
Q: フィンガープリントを設定すると、ページが実際に見る内容が変わりますか?
はい。ライブ実行では、navigator.userAgent、navigator.platform、解決されたタイムゾーン、navigator.languageはすべてセッションに設定された値を返しました — オーバーライドはリクエストヘッダーだけでなく、JavaScript環境にも及びます。
Q: タイムゾーンはプロキシ国と一致するべきですか?
はい。出口IPの地域と矛盾するタイムゾーンは一般的なフラグです。proxyCountryを指紋のタイムゾーンと言語に一致させるか、タイムゾーンを出口に一致させてください。
Q: フィンガープリントをローテーションできますか?
セッション間でローテーションしてください。一つのセッション内でフィンガープリントが変わるのはそれ自体がシグナルです;セッションごとに安定させて、セッション間で変化させてください。
Q: これにAIエージェントやSDKが必要ですか?
いいえ。フィンガープリントは標準のPuppeteer WebSocketエンドポイントのクエリパラメーターであり — プレーンなpuppeteer.connect()、エージェントは必要ありません。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



