Flaresolverrは、CloudFlareおよびDDOS-Guard保護をバイパスするプロキシサーバーです。
Flaresolverrはプロキシサーバーを開始し、ほとんどリソースを使用してアイドル状態でユーザー要求を待ちます。いくつかのリクエストが届くと、検出されないクロムドリバーを使用してセレンを使用してWebブラウザー(Chrome)を作成します。ユーザーパラメーターでURLを開き、CloudFlareチャレンジが解決される(またはタイムアウト)まで待機します。 HTMLコードとCookieはユーザーに送り返され、これらのCookieは他のHTTPクライアントを使用してCloudFlareをバイパスするために使用できます。
注:Webブラウザは多くのメモリを消費します。 RAMが少ないマシンでFlaresolverrを実行している場合は、一度に多くのリクエストを行わないでください。リクエストごとに、新しいブラウザが起動されます。
永久セッションを使用することもできます。ただし、セッションを使用する場合は、使用してすぐにセッションを閉じるようにする必要があります。
プロジェクトは既に画像内に含まれている外部ブラウザに依存するため、Dockerコンテナを使用してインストールすることをお勧めします。
Docker画像は以下で利用できます。
サポートされているアーキテクチャは次のとおりです。
| 建築 | タグ |
|---|---|
| x86 | Linux/386 |
| x86-64 | Linux/AMD64 |
| ARM32 | Linux/ARM/V7 |
| ARM64 | Linux/ARM64 |
docker-compose.yml構成ファイルを提供します。このリポジトリをクローンし、 docker-compose up -d (V1を作成)またはdocker compose up -d (v2)を実行してコンテナを起動します。
docker cli希望する場合は、次のコマンドを実行します。
docker run -d
--name=flaresolverr
-p 8191:8191
-e LOG_LEVEL=info
--restart unless-stopped
ghcr.io/flaresolverr/flaresolverr:latestホストOSがDebianの場合は、 libseccomp2バージョンが2.5.xであることを確認してください。 sudo apt-cache policy libseccomp2でバージョンを確認し、 sudo apt install libseccomp2=2.5.1-1~bpo10+1またはsudo apt install libseccomp2=2.5.1-1+deb11u1でパッケージを更新できます。更新後にDockerデーモンとコンテナを再起動することを忘れないでください。
X64アーキテクチャでは、警告前輸入バイナリのみが利用できます。他のアーキテクチャについては、Docker画像を参照してください。
これは、Windowsユーザーに推奨される方法です。
ソースコードからのインストールのインストールは、x64アーキテクチャに対してのみ機能します。他のアーキテクチャについては、Docker画像を参照してください。
pip install -r requirements.txtを実行して、flaresolverr依存関係をインストールしてインストールします。python src/flaresolverr.pyコマンドを実行します。pkg install chromium python39 py39-pip xorg-vfbserver 、必要な依存関係をインストールします。python3.9 -m pip install -r requirements.txtを実行して、flaresolverr依存関係をインストールします。python3.9 src/flaresolverr.pyコマンドを実行します。SystemDユニットファイルflaresolverr.serviceの例を参照として提供します。ニーズに合わせてファイルを変更する必要があります:パス、ユーザー、環境変数。
バッシュリクエストの例:
curl -L -X POST ' http://localhost:8191/v1 '
-H ' Content-Type: application/json '
--data-raw ' {
"cmd": "request.get",
"url": "http://www.google.com/",
"maxTimeout": 60000
} '例Pythonリクエスト:
import requests
url = "http://localhost:8191/v1"
headers = { "Content-Type" : "application/json" }
data = {
"cmd" : "request.get" ,
"url" : "http://www.google.com/" ,
"maxTimeout" : 60000
}
response = requests . post ( url , headers = headers , json = data )
print ( response . text )パワーシェルリクエストの例:
$body = @ {
cmd = " request.get "
url = " http://www.google.com/ "
maxTimeout = 60000
} | ConvertTo-Json
irm - UseBasicParsing ' http://localhost:8191/v1 ' - Headers @ { " Content-Type " = " application/json " } - Method Post - Body $bodysessions.createこれにより、 sessions.destroyでCookieを破壊するまでCookieを保持する新しいブラウザインスタンスが起動します。これは役に立つので、課題を何度も解決し続ける必要はなく、ブラウザが使用するためにCookieを送信し続ける必要はありません。
また、リクエストごとに新しいブラウザインスタンスを起動する必要がないため、リクエストも高速化されます。
| パラメーター | メモ |
|---|---|
| セッション | オプション。インスタンスに割り当てたいセッションID。設定されていない場合、ランダムUUIDが割り当てられます。 |
| プロキシ | オプション、デフォルトは無効です。例: "proxy": {"url": "http://127.0.0.1:8888"} 。 URLにプロキシスキーマを含める必要があります: http:// 、 socks4://またはsocks5:// 。承認(ユーザー名/パスワード)がサポートされています。例: "proxy": {"url": "http://127.0.0.1:8888", "username": "testuser", "password": "testpass"} |
sessions.listすべてのアクティブセッションのリストを返します。何回のセッションが実行されているかを知りたい場合は、デバッグのための詳細。あまりにも多くのセッションがコンピューターを遅くする可能性があるため、それらを使用して完了したら、常に各セッションを適切に閉じるようにする必要があります。
応答の例:
{
"sessions" : [
" session_id_1 " ,
" session_id_2 " ,
" session_id_3... "
]
}sessions.destroyこれにより、ブラウザインスタンスを適切にシャットダウンし、それに関連付けられたすべてのファイルを削除して、新しいセッションのためにリソースを解放します。セッションを使用する必要がなくなった場合は、必ずセッションを閉じる必要があります。
| パラメーター | メモ |
|---|---|
| セッション | 破壊されたいセッションID。 |
request.get| パラメーター | メモ |
|---|---|
| URL | 必須 |
| セッション | オプション。既存のブラウザインスタンスからリクエストを送信します。送信されない場合、リクエストが完了した直後に破壊される一時的なインスタンスが作成されます。 |
| session_ttl_minutes | オプション。 Flaresolverrは、数分で提供されたTTLに基づいて、期限切れのセッションを自動的に回転させます。 |
| maxtimeout | オプション、デフォルト値60000。millisecondsでチャレンジを解決するための最大タイムアウト。 |
| クッキー | オプション。ヘッドレスブラウザで使用されます。例: "cookies": [{"name": "cookie1", "value": "value1"}, {"name": "cookie2", "value": "value2"}] 。 |
| ReturnOnlyCookies | オプション、デフォルトのfalse。 Cookieのみを返します。応答データ、ヘッダー、および応答の他の部分が削除されます。 |
| プロキシ | オプション、デフォルトは無効です。例: "proxy": {"url": "http://127.0.0.1:8888"} 。 URLにプロキシスキーマを含める必要があります: http:// 、 socks4://またはsocks5:// 。承認(ユーザー名/パスワード)はサポートされていません。 ( sessionパラメーターが設定されると、プロキシは無視されます。セッション固有のプロキシをsessions.createで設定できます。create。) |
警告CloudFlareクリアランスCookieをスクリプトで使用する場合は、Flaresolverrユーザーエージェントも使用してください。それらが一致しない場合、あなたは挑戦を見るでしょう。
上記のcurlを実行することからの応答の例:
{
"solution" : {
"url" : " https://www.google.com/?gws_rd=ssl " ,
"status" : 200 ,
"headers" : {
"status" : " 200 " ,
"date" : " Thu, 16 Jul 2020 04:15:49 GMT " ,
"expires" : " -1 " ,
"cache-control" : " private, max-age=0 " ,
"content-type" : " text/html; charset=UTF-8 " ,
"strict-transport-security" : " max-age=31536000 " ,
"p3p" : " CP= " This is not a P3P policy! See g.co/p3phelp for more info. " " ,
"content-encoding" : " br " ,
"server" : " gws " ,
"content-length" : " 61587 " ,
"x-xss-protection" : " 0 " ,
"x-frame-options" : " SAMEORIGIN " ,
"set-cookie" : " 1P_JAR=2020-07-16-04; expires=Sat... "
},
"response" : " <!DOCTYPE html>... " ,
"cookies" : [
{
"name" : " NID " ,
"value" : " 204=QE3Ocq15XalczqjuDy52HeseG3zAZuJzID3R57... " ,
"domain" : " .google.com " ,
"path" : " / " ,
"expires" : 1610684149.307722 ,
"size" : 178 ,
"httpOnly" : true ,
"secure" : true ,
"session" : false ,
"sameSite" : " None "
},
{
"name" : " 1P_JAR " ,
"value" : " 2020-07-16-04 " ,
"domain" : " .google.com " ,
"path" : " / " ,
"expires" : 1597464949.307626 ,
"size" : 19 ,
"httpOnly" : false ,
"secure" : true ,
"session" : false ,
"sameSite" : " None "
}
],
"userAgent" : " Windows NT 10.0; Win64; x64) AppleWebKit/5... "
},
"status" : " ok " ,
"message" : " " ,
"startTimestamp" : 1594872947467 ,
"endTimestamp" : 1594872949617 ,
"version" : " 1.0.0 "
}request.postこれはrequest.getと同じですが、もう1つのパラメーションが必要です。
| パラメーター | メモ |
|---|---|
| ポストダタ | application/x-www-form-urlencoded備えた文字列でなければなりません。例: a=b&c=d |
| 名前 | デフォルト | メモ |
|---|---|---|
| log_level | 情報 | 伐採の冗長性。詳細については、 LOG_LEVEL=debug使用してください。 |
| log_html | 間違い | デバッグのみ。 true場合、プロキシを通過するすべてのHTMLがdebugレベルでコンソールにログに記録されます。 |
| captcha_solver | なし | Captcha解決方法。キャプチャに遭遇したときに使用されます。 Captcha Solversセクションを参照してください。 |
| TZ | UTC | ログとWebブラウザで使用されるTimeZone。例: TZ=Europe/London 。 |
| ラング | なし | Webブラウザで使用される言語。例: LANG=en_GB 。 |
| ヘッドレス | 真実 | デバッグのみ。 Webブラウザをヘッドレスモードまたは表示して実行します。 |
| browser_timeout | 40000 | システムが遅いためエラー/タイムアウトが発生している場合は、この値を増やすことができます。 maxTimeoutパラメーターも増やすことを忘れないでください。 |
| test_url | https://www.google.com | Flaresolverrは、Webブラウザーが機能していることを確認するために、開始時にリクエストを行います。あなたの国でブロックされている場合、そのURLを変更できます。 |
| ポート | 8191 | リスニングポート。 Dockerで実行している場合、これを変更する必要はありません。 |
| ホスト | 0.0.0.0 | リスニングインターフェイス。 Dockerで実行している場合、これを変更する必要はありません。 |
| prometheus_enabled | 間違い | Prometheus Exporterを有効にします。以下のプロメテウスセクションを参照してください。 |
| prometheus_port | 8192 | プロメテウス輸出業者のリスニングポート。以下のプロメテウスセクションを参照してください。 |
環境変数は、オペレーティングシステムに応じて異なって設定されています。いくつかの例:
docker-compose.ymlファイルまたはDocker CLIコマンドで設定できます。export LOG_LEVEL=debugを実行してから、同じシェルでflaresolverr実行します。cmd.exeを開き、 set LOG_LEVEL=debugを実行し、同じシェルでflaresolverr.exeを実行します。 FlaresolverrのPrometheus Exporterはデフォルトで無効になります。環境可変PROMETHEUS_ENABLEDで有効にすることができます。 dockerを使用している場合は、 PROMETHEUS_PORTを露出させてください。
例のメトリック:
# HELP flaresolverr_request_total Total requests with result
# TYPE flaresolverr_request_total counter
flaresolverr_request_total{domain= " nowsecure.nl " ,result= " solved " } 1.0
# HELP flaresolverr_request_created Total requests with result
# TYPE flaresolverr_request_created gauge
flaresolverr_request_created{domain= " nowsecure.nl " ,result= " solved " } 1.690141657157109e+09
# HELP flaresolverr_request_duration Request duration in seconds
# TYPE flaresolverr_request_duration histogram
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " 0.0 " } 0.0
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " 10.0 " } 1.0
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " 25.0 " } 1.0
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " 50.0 " } 1.0
flaresolverr_request_duration_bucket{domain= " nowsecure.nl " ,le= " +Inf " } 1.0
flaresolverr_request_duration_count{domain= " nowsecure.nl " } 1.0
flaresolverr_request_duration_sum{domain= " nowsecure.nl " } 5.858
# HELP flaresolverr_request_duration_created Request duration in seconds
# TYPE flaresolverr_request_duration_created gauge
flaresolverr_request_duration_created{domain= " nowsecure.nl " } 1.6901416571570296e+09この時点での警告Captchaソルバーのどれも機能しません。オープンな問題でステータスを確認できます。どんな助けも大歓迎です。
CloudFlareは数学的な計算とブラウザテストを提供するだけでなく、ユーザーにCaptchaを解決する必要がある場合もあります。この場合、FlaresolverrはCaptcha detected but no automatic solver is configured.
Flaresolverrは、環境変数CAPTCHA_SOLVER /CAPTCHAディレクトリ内の1つのアダプターのファイル名に設定することにより、CAPTCHAを自動的に解決するようにカスタマイズできます。