Scarnox · Blog

スクレイパー向けにブラウザフィンガープリントを解説

ブラウザフィンガープリントとは、Cookieやアカウントではなく、ブラウザの複数の特徴を組み合わせて訪問者を識別する手法です。サイトは、再訪問者の識別、不正検知、自動化の認識のためにこれを使います。Webをスクレイピングするなら、いずれ必ず遭遇します。このガイドでは、何が測定されるのか、なぜ1つの不一致がトラブルになるのか、そして公開データを集めるために一貫性があり行儀のよいプロファイルをどう保つのかを説明します。また、フィンガープリントの調整でできることと、すべきでないことの限界も扱います。

フィンガープリントの構成要素

1つの値だけではブラウザを特定できませんが、多くの小さな値を組み合わせると、ほとんどの場合特定できてしまいます。主な入力は次のとおりです。

フィンガープリントのスクリプトは、これらを組み合わせてハッシュやスコアにします。安定していて珍しいシグナルが多いほど、識別力が高くなります。

不一致が目立つ理由

実際のブラウザは内部的に一貫しています。OSはフォントと合っており、タイムゾーンは言語設定と合っており、画面サイズはそのデバイスと合っています。スクレイパーは、意図せずにこの一貫性を壊してしまうことがよくあります。

どの不一致も小さなシグナルです。それらが合わさると、リクエストは「普通の訪問者」から「もう少し詳しく見る必要がある」へと移ることがあります。

ステップ1:自分の環境を測定する

ページがクライアントについて何を知るかは、自分が管理しているフィンガープリントのテストページや、ローカルで動かす診断ページを読み込めば確認できます。値を見て、それが1台の一貫したマシンを表しているかを考えてください。次は、いくつかの値を表示する最小限のPlaywrightの例です。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context(locale="en-GB", timezone_id="Europe/London")
    page = context.new_page()
    page.goto("https://example.com")  # 自分が管理するページに置き換えること
    print(page.evaluate("""() => ({
        language: navigator.language,
        timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
        platform: navigator.platform,
        viewport: [innerWidth, innerHeight]
    })"""))
    browser.close()

ステップ2:プロファイルごとにIDを1つに保つ

最も役立つ習慣は、スクレイピングのIDを1つのプロファイルとして扱うことです。1組の特徴を決めて、その寿命の間ずっと保ちます。

リクエストごとにどれかを変えると、一定に保つよりも怪しく見えます。一貫性こそが、プロファイルを普通に見せるものです。

ステップ3:訪問者のようなペースでプロファイルを動かす

フィンガープリントは入力の1つにすぎません。サイトは、1つのプロファイルがどれだけ速くサイトを移動するかも見ています。1分間に商品ページを200ページ読み込むプロファイルは、フィンガープリントが何と言おうと人間ではありません。リクエストを分散し、結果をキャッシュし、ページが止まるように示したら止まってください。ペーシングの詳細はスクレイピングでブロックされないためのチェックリストで扱っています。

ステップ4:限界を知る

フィンガープリントの調整によって、自動化されたプロファイルを、そこにいない人のように見せることはできません。フィンガープリントに依存するサイトは、通常、レート制限、アカウントのチェック、そして場合によってはcaptchaと組み合わせています。captchaが出たら、フィンガープリントをいじり続けるのではなく、ソルバーからトークンを取得する必要があります。Scarnoxでライブのcaptchaの種類はPopularCaptchaです。リクエストの例はPythonでPopularCaptchaを解くガイドにあります。ウィジェットの全体像については、captchaの種類の解説を読んでください。

さらに重要なのは、フィンガープリントの回避は、サイトのルールを無視してよいという許可ではないことです。サイトの運営者が自動化されたアクセスを制限しているなら、正しい行動は、プロファイルを見つかりにくくすることではなく、停止することです。フィンガープリントはプライバシーの問題でもあります。訪問をまたいで人を追跡するためにサイトが使うこともあり、そのため、プロジェクトに必要なものだけを収集するべき理由がもう1つあります。

責任あるスクレイピング

次に読むもの

ターゲットがブラウザレベルのチェックの背後にある場合は、まずヘッドレスブラウザの検出から始めてください。自動化されたブラウザに特有のシグナルを扱っています。コンテンツの表示にJavaScriptが必要なページは、JavaScriptのサイトのスクレイピングで扱っています。

無料のトライアルクレジットで始められ、カード登録は不要です。アカウントを作成して、自分が管理しているページに対してPopularCaptchaのフローを試してください。現在の料金は料金ページにあります。

次のステップ