カスタムフィンガープリント
はじめに
ブラウザフィンガープリントは、ブラウザとデバイスの設定情報を利用して、ほぼ一意の「デジタルフィンガープリント」を作成します。これは、Cookie を使用せずにオンラインアクティビティを追跡するために使用できます。良いニュースは、スクレイピングブラウザではフィンガープリントの設定はオプションであるということです。ブラウザのフィンガープリントに対して、ブラウザのユーザーエージェント、タイムゾーン、言語、画面解像度などのコアパラメータのような高度なカスタマイズ機能を提供しています。機能はカスタムスタートアップパラメータを通じて拡張できます。これは、マルチアカウント管理、データ収集、プライバシー保護などのシナリオに適しており、Scrapeless の独自開発の Chromium ブラウザを使用して検出を完全に回避します。デフォルトでは、当社のスクレイピングブラウザサービスを使用すると、セッションごとにランダムなフィンガープリントが生成されます。
コア機能と制限事項
ユーザーエージェント制御
- 機能: HTTPリクエストヘッダーのユーザーエージェント文字列のカスタマイズをサポートし、ブラウザエンジンバージョンとオペレーティングシステムの種類を定義できます。
- 制限: 現在、レンダリングエンジンの詳細(例:WebGLレンダリング機能)を変更することはできません。
画面解像度マッピング
- 機能:
screen.width
とscreen.height
の戻り値のカスタマイズをサポートし、基本的なデバイスの画面サイズをシミュレートします(物理的なアスペクト比に準拠する必要があります)。 - 制限: 現在、デバイスピクセル比(DPR)またはRetinaスクリーンの特性を偽造することはできません。
プラットフォーム属性の固定
- 機能:
navigator.platform
の固定された戻り値を設定できます(Windows/macOS/Linuxのみサポート)。これは、ブラウザの機能検出ロジックに影響します。 - 制限: 現在、オペレーティングシステムのバージョン番号またはハードウェアアーキテクチャ情報を変更することはできません。
その他の制限事項:
この機能は、ブラウザによってネイティブに公開されている標準化されたパラメータへの限定的な調整のみをサポートしています。ハードウェアレベルのフィンガープリントまたは高度な動作マスキングは含まれていません。
アプリケーションシナリオ
- 基本的なマルチアカウント分離: ユーザーエージェントと画面解像度を区別することで、単純なアカウント関連付け検出を回避します。
- 簡易データ収集: 主流のブラウザ環境(Windows + Chrome)をシミュレートして、ターゲットWebサイトの基本的なアンチスクレイピング戦略(例:ユーザーエージェントブラックリスト)を回避します。
- 互換性テスト: さまざまなオペレーティングシステム(Windows/macOS)と画面サイズでのWebサイトの基本的なレンダリングロジックを確認します。
操作ガイド
フィンガープリントパラメータの説明
パラメータ名 | タイプ | 説明 |
---|---|---|
user_agent | string | ブラウザのHTTPリクエストヘッダー内のユーザーエージェント文字列を定義します。ブラウザエンジン、バージョン番号、オペレーティングシステムなどの重要な識別情報が含まれています。Webサイトはこの値を使用してクライアント環境を識別し、コンテンツの適応と機能に影響を与えます。デフォルト値:ブラウザに従います |
platform | enum | JavaScript の navigator.platform プロパティの戻り値を指定し、実行環境のオペレーティングシステムの種類を示します。「Windows」、「macOS」、または「Linux」がオプションです。このパラメータは、機能検出とシステム関連機能の有効化判定に使用されます。デフォルト値:Windows |
screen | object | ブラウザによって報告されるディスプレイデバイスの物理的特性パラメータを定義し、JavaScript の window.screen オブジェクトに直接マッピングされます。 |
screen.width | number | 物理的な画面幅(ピクセル)。screen.width プロパティにマッピングされ、メディアクエリとレスポンシブレイアウトに影響します。デフォルト値:ランダムなフィンガープリントに従います。最小値640。 |
screen.height | number | 物理的な画面高さ(ピクセル)。screen.height プロパティにマッピングされ、幅と共にデバイスの解像度特性を決定します。デフォルト値:ランダムなフィンガープリントに従います。最小値480。 |
localization | object | ブラウザのローカリゼーション環境設定を制御します。言語、地域、タイムゾーンパラメータが含まれ、表示形式とコンテンツのローカリゼーション動作に影響します。 |
localization.based_on_ip | boolean | IPに基づいてタイムゾーンと言語を自動的に設定するかどうか。 |
localization.timezone | string | IANAタイムゾーンデータベース形式に準拠したタイムゾーン識別子(例:「Asia/Shanghai」)。JavaScriptのDateオブジェクトとIntl.DateTimeFormat の出力のデフォルトのタイムゾーン動作を制御します。タイムゾーンフィンガープリントの重要なコンポーネントです。デフォルト値:America/New_York |
localization.languages | [string] | ブラウザがサポートする言語の優先順位リスト。navigator.languages プロパティと HTTP の Accept-Language リクエストヘッダーにマッピングされ、Webサイトのコンテンツ言語選択ロジックを決定します。デフォルト値:“en”, “en-US” |
user_agent
タイプ: string
説明: ブラウザのHTTPリクエストヘッダー内のユーザーエージェント文字列を定義します。ブラウザエンジン、バージョン番号、オペレーティングシステムなどの重要な識別情報が含まれています。Webサイトはこの値を使用してクライアント環境を識別し、コンテンツの適応と機能に影響を与えます。
例:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.83 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.83 Safari/537.36
platform
タイプ: enum
説明: JavaScript の navigator.platform
プロパティの戻り値を指定し、実行環境のオペレーティングシステムの種類を示します。このパラメータは、機能検出とシステム関連機能の有効化判定に使用されます。
使用可能な値の例:
値 | 説明 |
---|---|
”Windows” | Windows オペレーティングシステム、デフォルト値 |
”macOS” | macOS オペレーティングシステム |
”Linux” | Linux オペレーティングシステム |
screen
タイプ: object
説明: ブラウザによって報告されるディスプレイデバイスの物理的特性パラメータを定義し、JavaScript の window.screen
オブジェクトに直接マッピングされます。
screen.width: 物理的な画面幅(ピクセル)。メディアクエリとレスポンシブレイアウトに影響します。最小値640。 screen.height: 物理的な画面高さ(ピクセル)。幅と共にデバイスの解像度特性を決定します。最小値480。
例:
width | height |
---|---|
1920 | 1080 |
1366 | 768 |
1280 | 720 |
768 | 1280 |
localization
タイプ: object
説明: ブラウザのローカリゼーション環境設定を制御します。言語、地域、タイムゾーンパラメータが含まれ、表示形式とコンテンツのローカリゼーション動作に影響します。
localization.based_on_ip: IPに基づいてタイムゾーンと言語を自動的に設定するかどうか。
localization.timezone: IANAタイムゾーンデータベース形式に準拠したタイムゾーン識別子。JavaScriptのDateオブジェクトとIntl.DateTimeFormat
の出力のデフォルトのタイムゾーン動作を制御します。タイムゾーンフィンガープリントの重要なコンポーネントです。
例:
America/New_York
Asia/Shanghai
Europe/London
localization.languages: ブラウザがサポートする言語の優先順位リスト。navigator.languages
プロパティと HTTP の Accept-Language
リクエストヘッダーにマッピングされ、Webサイトのコンテンツ言語選択ロジックを決定します。
例:
["fr-FR", "en-US", "zh-CN"]
["en-US", "es-ES", "de-DE"]
コード例
const { ScrapelessClient } = require('@scrapeless-ai/sdk');
const puppeteer =require('puppeteer-core');
const client = new ScrapelessClient({ apiKey: 'API Key' });
// custom browser fingerprint
const fingerprint = {
user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.1.2.3 Safari/537.36',
platform: 'Windows',
screen: {
width: 1280, height: 1024
},
localization: {
languages: ['zh-HK', 'en-US', 'en'], timezone: 'Asia/Hong_Kong',
}
}
// Create browser session and get WebSocket endpoint
const { browserWSEndpoint } = client.browser.create({
session_name: 'sdk_test',
session_ttl: 180,
proxy_country: 'US',
session_recording: true,
fingerprint,
});
(async () => {
const browser = await puppeteer.connect({browserWSEndpoint});
const page = await browser.newPage();
await page.goto('https://www.scrapeless.com');
const info = await page.evaluate(() => {
return {
screen: {
width:screen.width,
height:screen.height,
},
userAgent:navigator.userAgent,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
languages:navigator.languages
};
});
console.log(info);
await browser.close();
})();
エシカルステートメント
責任あるフィンガープリントのカスタマイズを提唱します。
- 法的に許可されたシナリオ(企業データコンプライアンスの収集、内部リスク管理テストなど)のみ。
- 偽造されたフィンガープリントを使用してオンライン詐欺に関与したり、ユーザーのプライバシーを侵害したりすることは禁止されています。