curl_cffi を使用した Web スクレイピングにおける TLS/JA3 フィンガープリンティングの解決方法

Sora Fujimoto
AI Solutions Architect
28-Aug-2024

ウェブサイトをスクレイピングする際に、ボット対策に苦労していませんか? curl_cffi は、cURL ツールをラップした高度な Python ライブラリであり、これらの障壁を効果的に回避するのに役立ちます。 curl_cffi は、ブラウザの動作を模倣し、cURL の機能を活用することで、スクレイパーの検出回避能力を高め、スムーズな動作を実現します。 このガイドでは、curl_cffi の仕組み、さまざまなタスクへの使用方法、およびその制限について説明します。 また、これらの制限を克服するための潜在的なソリューションについても説明します。
curl_cffi とは何ですか?
curl_cffi は、requests や httpx などのライブラリと同様に、ネットワークリクエスト用に設計された Python ライブラリです。 ただし、これらのライブラリとは異なり、curl_cffi はブラウザの TLS/JA3 および HTTP/2 フィンガープリントをシミュレートできます。 curl-impersonate は、4 つの主要なブラウザをシミュレートし、実際のブラウザのように TLS および HTTP ハンドシェイクを実行できるコマンドラインツールです。 curl_cffi は、cffi を使用して curl-impersonate を Python ライブラリにラップします。
うっとうしいキャプチャを完全に解決できないことが繰り返し発生し、苦労していませんか?
CapSolver の AI 搭載 Auto Web Unblock テクノロジーで、シームレスな自動キャプチャ解決を体験しましょう!
最高のキャプチャソリューションの ボーナスコード を入手しましょう。CapSolver: WEBS。コードを使用すると、チャージごとに 5% のボーナスが追加されます。無制限
TLS/JA3 フィンガープリンティングとは何ですか?
今日、ほとんどのウェブサイトは HTTPS を使用しています。HTTPS 接続を確立するには、サーバーとクライアント間で TLS ハンドシェイクが発生し、サポートされている TLS バージョンや暗号化アルゴリズムなどの情報が交換されます。さまざまなクライアントは異なる特性を持ち、これらの詳細は多くの場合安定しており、サーバーはリクエストが一般的なユーザーブラウザから来ているのか、自動化されたスクリプトから来ているのかを識別することができます。JA3 は TLS フィンガープリントを生成するために使用される一般的なアルゴリズムです。これは、これらの特性を連結して MD5 ハッシュを計算することによって機能します。
curl_cffi の使用
curl_cffi の使い方は requests と非常に似ています。JA3 フィンガープリントを取得するために requests を使用する方法を次に示します。
python
import requests
url = "https://tls.browserleaks.com/json"
r = requests.get(url)
print(r.json())
次のような結果が得られる場合があります。
json
{
"user_agent": "python-requests/2.32.3",
"ja3_hash": "8d9f7747675e24454cd9b7ed35c58707",
"ja3_text": "771,4866-4867-4865-49196-49200-49195-49199-52393-52392-159-158-52394-49327-49325-49326-49324-49188-49192-49187-49191-49162-49172-49161-49171-49315-49311-49314-49310-107-103-57-51-157-156-49313-49309-49312-49308-61-60-53-47-255,0-11-10-16-22-23-49-13-43-45-51-21,29-23-30-25-24,0-1-2",
"ja3n_hash": "a790a1e311289ac1543f411f6ffceddf",
"ja3n_text": "771,4866-4867-4865-49196-49200-49195-49199-52393-52392-159-158-52394-49327-49325-49326-49324-49188-49192-49187-49191-49162-49172-49161-49171-49315-49311-49314-49310-107-103-57-51-157-156-49313-49309-49312-49308-61-60-53-47-255,0-10-11-13-16-21-22-23-43-45-49-51,29-23-30-25-24,0-1-2",
"akamai_hash": "",
"akamai_text": ""
}
繰り返しリクエストを行うと、JA3ハッシュは同じままであることがわかります。ただし、Chromeバージョン110以降、TLS ClientHello拡張機能の順序がランダム化されるため、ウェブサイト開発者がrequestsのようなライブラリをJA3フィンガープリントに基づいてブロックすることが容易になりました。リクエストが常に同じJA3フィンガープリントを示す場合、単一のユーザーからのものであると識別され、ボットとしてフラグ付けされる可能性が高まります。
curl_cffiを使用して、実際のJA3フィンガープリントをシミュレートする方法を次に示します。
python
from curl_cffi import requests
url = "https://tls.browserleaks.com/json"
r = requests.get(url, impersonate="chrome124")
print(r.json())
impersonateパラメータを使用すると、シミュレートするブラウザとバージョンを指定できます。サポートされるブラウザには、Chrome、Chrome Android、Edge、Safariなどがあり、バージョンは継続的に更新されます。詳細については、curl_cffi GitHubリポジトリを参照してください。curl_cffiを使用すると、JA3フィンガープリントは実際のブラウザのフィンガープリントと一致し、Chrome 110以降、JA3フィンガープリントはリクエストごとに変化します。
json
{
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"ja3_hash": "c97c8dac4ca1de968fe230de54f3e0f3",
"ja3_text": "771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,16-10-27-18-5-51-23-17513-45-35-43-13-65281-0-11-65037,25497-29-23-24,0",
"ja3n_hash": "4c9ce26028c11d7544da00d3f7e4f45c",
"ja3n_text": "771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-5-10-11-13-16-18-23-27-35-43-45-51-17513-65037-65281,25497-29-23-24,0",
"akamai_hash": "52d84b11737d980aef856699f885ca86",
"akamai_text": "1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p"
}
curl_cffiの制限事項に対処する
curl_cffiは実際のJA3フィンガープリントをシミュレートし、ボットチャレンジやブロックを回避できる可能性がありますが、常に十分とは限りません。多くのサイトでは、captcha、reCaptcha、captcha、Cloudflare Turnstile、captcha、captcha WAFなどの高度なボット保護メカニズムを実装しています。これらのシステムは、人間とボットを区別するために、複雑な画像と読みにくいJavaScriptチャレンジを使用しています。場合によっては、本物のランダム化されたJA3フィンガープリントであっても、これらのチャレンジを回避することは避けられません。
CAPTCHAチャレンジが発生した場合、使用するリクエストライブラリに関係なく、回避できない場合があります。ただし、心配する必要はありません。CapSolverは、これらの問題に対する解決策を提供します。CapSolverは、AIベースの自動化されたウェブアンロック技術を使用して、さまざまなボットチャレンジを数秒で解決します。画像や複雑な問題に対処する場合でも、CapSolverは効率的に処理できます。解決策が失敗した場合、費用はかかりません。
CapSolverは、Seleniumを使用したデータスクレイピング中にCAPTCHAを自動的に解決するブラウザ拡張機能も提供しています。さらに、ScrapyなどのフレームワークでCAPTCHAを解決し、トークンを取得するためのAPIソリューションも利用できます。すべてが数秒で完了します。詳細については、CapSolverドキュメントを参照してください。
まとめ
curl_cffiをウェブスクレイピング設定に統合することで、実際のブラウザの動作を効果的に模倣して、TLS/JA3フィンガープリンティングの課題を克服できます。curl_cffiはこれらの課題に対処するための堅牢なツールを提供しますが、高度なCAPTCHAとボット検出システムは依然として大きな障害となっています。CapSolverは、これらのCAPTCHAチャレンジをシームレスに対処する補足的なソリューションを提供し、スクレイピングアクティビティがスムーズに実行されるようにします。
詳細な情報やリソースについては、CapSolver のウェブサイト を確認し、curl_cffi GitHub リポジトリ を調べてください。
コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。
もっと見る

ScraplingとCapSolverを用いたウェブスクラッピング時のキャプチャの解き方
Scrapling + CapSolver は、ReCaptcha v2/v3 および Cloudflare Turnstile のバイパスを備えた自動スクリーピングを可能にします。

Sora Fujimoto
05-Dec-2025

SeleniumでのUser-Agentの変更 | ステップとベストプラクティス
SeleniumでUser Agentを変更することは、多くのウェブスクレイピングタスクにおいて重要なステップです。これは自動化スクリプトを通常のブラウザのように見せかけるために役立ちます...

Sora Fujimoto
05-Dec-2025

CapSolver拡張機能を使用してCloudflare Turnstileを解決する際に`action`が必要かどうかを確認する方法
クラウドフレア・ターニスティルの効果的なCAPTCHAの解決方法を学びます。Capsolverのツールとテクニックを使用するためのステップバイステップのガイドに従ってください。

Nikolai Smirnov
05-Dec-2025

9Proxyの力の発見: 包括的なレビュー
本記事では、9proxyとは何かおよび彼らが提供するサービスについてご紹介します。

Anh Tuan
04-Dec-2025

ウェブスクリーニングにおけるキャプチャの解決 | セレニウムとパイソンによるウェブスクリーニング
この記事では、SeleniumとPythonを使用してウェブスクレイピングに慣れ親しむことになり、プロセスに関連するCaptchaを解決する方法を学び、効率的なデータ抽出に役立ちます。

Sora Fujimoto
04-Dec-2025

CapSolver Dashboard 3.0でレベルアップ!
CapSolver Dashboard 3.0は、強化されたインタラクションと多数の新機能を備えて新しくアップグレードされました。

Sora Fujimoto
04-Dec-2025


