カスタムフィンガープリント
はじめに
ブラウザフィンガープリントは、ブラウザとデバイスの設定情報を使用して、ほぼ固有の「デジタルフィンガープリント」を作成し、クッキーなしでもオンラインアクティビティを追跡するために使用できます。朗報として、スクレイピングブラウザではフィンガープリントの設定はオプションです。ブラウザのユーザーエージェント、タイムゾーン、言語、画面解像度などのコアパラメーターを含むブラウザフィンガープリントの深いカスタマイズ機能を提供します。機能はカスタム起動パラメーターを介して拡張できます。これは、マルチアカウント管理、データ収集、プライバシー保護などのシナリオに適しており、Scrapelessの自社開発Chromiumブラウザを使用して検出を完全に回避します。デフォルトでは、当社のスクレイピングブラウザサービスを使用すると、セッションごとにランダムなフィンガープリントが生成されます。
コア機能と制限
User-Agent制御
- 機能: HTTPリクエストヘッダーのUser-Agent文字列のカスタマイズをサポートし、ブラウザエンジンのバージョンとオペレーティングシステムタイプを定義できます。
- 制限: 現在、レンダリングエンジンの詳細(例: WebGLレンダリング機能)を変更することはできません。
画面解像度マッピング
- 機能:
screen.widthおよびscreen.heightの戻り値のカスタマイズをサポートし、基本的なデバイス画面サイズをシミュレートできます(物理的なアスペクト比に準拠する必要があります)。 - 制限: 現在、デバイスピクセル比(DPR)やRetina画面の特性を偽装することはできません。
プラットフォーム属性ロック
- 機能:
navigator.platformの固定戻り値の設定を許可します(Windows/macOS/Linuxのみサポート)、これはブラウザの機能検出ロジックに影響します。 - 制限: 現在、オペレーティングシステムバージョン番号またはハードウェアアーキテクチャ情報を変更することはできません。
その他の制限:
この機能は、ブラウザによってネイティブに公開されている標準化されたパラメーターへの限定的な調整のみをサポートしています。ハードウェアレベルのフィンガープリントや高度な行動マスキングは含まれません。
アプリケーションシナリオ
- 基本的な複数アカウントの分離: User-Agentと画面解像度を区別することで、簡単なアカウント関連付け検出を回避します。
- 軽量データ収集: 主要なブラウザ環境(Windows + Chrome)をシミュレートして、ターゲットウェブサイトの基本的なアンチスクレイピング戦略(例: User-Agentブラックリスト)をバイパスします。
- 互換性テスト: 異なるオペレーティングシステム(Windows/macOS)および画面サイズでのウェブサイトの基本的なレンダリングロジックを検証します。
操作ガイド
フィンガープリントパラメーターの説明
| パラメーター名 | 型 | 説明 |
|---|---|---|
| userAgent | string | ブラウザのHTTPリクエストヘッダー内のUser-Agent文字列を定義し、ブラウザエンジン、バージョン番号、オペレーティングシステムなどの主要な識別情報を含みます。ウェブサイトはこの値を使用してクライアント環境を識別し、コンテンツの適応と機能に影響を与えます。デフォルト値: ブラウザに従う |
| 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.basedOnIp | boolean | タイムゾーンと言語をIPに基づいて自動的に設定するかどうか。 |
| localization.timezone | string | IANAタイムゾーンデータベース形式に準拠したタイムゾーン識別子(例: 「Asia/Shanghai」)。JavaScriptの日付オブジェクトとIntl.DateTimeFormat出力のデフォルトのタイムゾーン動作を制御します。これはタイムゾーンフィンガープリントの主要なコンポーネントです。デフォルト値: America/New_York |
| localization.languages | [string] | ブラウザがサポートする言語の優先順位リスト。navigator.languagesプロパティおよびHTTP Accept-Languageリクエストヘッダーにマッピングされ、ウェブサイトのコンテンツ言語選択ロジックを決定します。デフォルト値: “en”, “en-US” |
| args | object | コマンドラインスイッチ(例: --window-size、--proxy-bypass-listなど、詳細はこちら)でブラウザを実行します。次の引数はサポートされていないことに注意してください: --load-extension, --user-data-dir, --fonts-dir, --remote-debugging-port |
userAgent
型: string
説明: ブラウザのHTTPリクエストヘッダー内のUser-Agent文字列を定義し、ブラウザエンジン、バージョン番号、オペレーティングシステムなどの主要な識別情報を含みます。ウェブサイトはこの値を使用してクライアント環境を識別し、コンテンツの適応と機能に影響を与えます。
例の値:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.83 Safari/537.36Mozilla/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.basedOnIp: タイムゾーンと言語をIPに基づいて自動的に設定するかどうか。
localization.timezone: IANAタイムゾーンデータベース形式に準拠したタイムゾーン識別子。JavaScriptの日付オブジェクトとIntl.DateTimeFormat出力のデフォルトのタイムゾーン動作を制御します。これはタイムゾーンフィンガープリントの主要なコンポーネントです。
例の値:
America/New_YorkAsia/ShanghaiEurope/London
localization.languages: ブラウザがサポートする言語の優先順位リスト。navigator.languagesプロパティとHTTP Accept-Languageリクエストヘッダーにマッピングされ、ウェブサイトのコンテンツ言語選択ロジックを決定します。
例の値:
["fr-FR", "en-US", "zh-CN"]["en-US", "es-ES", "de-DE"]
args
型: object
説明: コマンドラインスイッチでブラウザを実行します(詳細はこちら)。次の引数はサポートされていないことに注意してください: --load-extension, --user-data-dir, --fonts-dir, --remote-debugging-port
例の値:
- proxy bypass:
'--proxy-bypass-list': 'example.com' - set windows size:
'--window-size': '1280,1024', it is recommended to set the same as thescreenfingerprint
サンプルコード
const { ScrapelessClient } = require('@scrapeless-ai/sdk');
const puppeteer =require('puppeteer-core');
const client = new ScrapelessClient({ apiKey: 'API Key' });
// カスタムブラウザフィンガープリント
const fingerprint = {
userAgent: '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',
},
args: {
'--proxy-bypass-list': 'example.com',
'--window-size': '1280,1024' // 画面フィンガープリントと同じウィンドウサイズを設定
}
}
// Create browser session and get WebSocket endpoint
const { browserWSEndpoint } = client.browser.create({
sessionName: 'sdk_test',
sessionTTL: 180,
proxyCountry: 'US',
sessionRecording: 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();
})();倫理的声明
私たちは責任あるフィンガープリントのカスタマイズを提唱します。
- 法的に許可されたシナリオ(企業のデータコンプライアンス収集、内部リスク管理テストなど)のみ。
- 偽造されたフィンガープリントを使用してオンライン詐欺を行ったり、ユーザーのプライバシーを侵害したりすることは禁止されています。