Flaresolverr adalah server proxy untuk memotong cloudflare dan perlindungan DDOS-Guard.
Flaresolverry memulai server proxy, dan menunggu permintaan pengguna dalam keadaan idle menggunakan beberapa sumber daya. Ketika beberapa permintaan tiba, ia menggunakan selenium dengan chromedriver yang tidak terdeteksi untuk membuat browser web (chrome). Ini membuka URL dengan parameter pengguna dan menunggu sampai CloudFlare Challenge terpecahkan (atau batas waktu). Kode HTML dan cookie dikirim kembali ke pengguna, dan cookie tersebut dapat digunakan untuk memotong cloudflare menggunakan klien HTTP lainnya.
Catatan : Browser web mengkonsumsi banyak memori. Jika Anda menjalankan Flaresolverr pada mesin dengan sedikit RAM, jangan membuat banyak permintaan sekaligus. Dengan setiap permintaan, browser baru diluncurkan.
Dimungkinkan juga untuk menggunakan sesi permanen. Namun, jika Anda menggunakan sesi, Anda harus memastikan untuk menutupnya segera setelah Anda selesai menggunakannya.
Disarankan untuk menginstal menggunakan wadah Docker karena proyek tergantung pada browser eksternal yang sudah termasuk dalam gambar.
Gambar Docker tersedia di:
Arsitektur yang didukung adalah:
| Arsitektur | Menandai |
|---|---|
| x86 | Linux/386 |
| x86-64 | Linux/AMD64 |
| ARM32 | Linux/ARM/V7 |
| ARM64 | Linux/ARM64 |
Kami menyediakan file konfigurasi docker-compose.yml . Kloning repositori ini dan jalankan docker-compose up -d (komposisi V1) atau docker compose up -d (Compose V2) untuk memulai wadah.
Jika Anda lebih suka docker cli menjalankan perintah berikut.
docker run -d
--name=flaresolverr
-p 8191:8191
-e LOG_LEVEL=info
--restart unless-stopped
ghcr.io/flaresolverr/flaresolverr:latest Jika OS host Anda adalah Debian, pastikan versi libseccomp2 adalah 2.5.x. Anda dapat memeriksa versi dengan sudo apt-cache policy libseccomp2 dan memperbarui paket dengan sudo apt install libseccomp2=2.5.1-1~bpo10+1 atau sudo apt install libseccomp2=2.5.1-1+deb11u1 . Ingatlah untuk memulai kembali daemon Docker dan wadah setelah pembaruan.
Peringatan biner yang dikompilasi hanya tersedia untuk arsitektur x64. Untuk arsitektur lain, lihat gambar Docker.
Ini adalah cara yang disarankan untuk pengguna Windows.
PERINGATAN PERINGATAN DARI Kode Sumber Hanya berfungsi untuk arsitektur x64. Untuk arsitektur lain, lihat gambar Docker.
pip install -r requirements.txt Perintah untuk menginstal dependensi flaresolverr.python src/flaresolverr.py untuk memulai flaresolver.pkg install chromium python39 py39-pip xorg-vfbserver Perintah untuk menginstal dependensi yang diperlukan.python3.9 -m pip install -r requirements.txt Perintah Untuk Menginstal Ketergantungan Flaresolverr.python3.9 src/flaresolverr.py untuk memulai flaresolver. Kami memberikan contoh file unit SystemD flaresolverr.service sebagai referensi. Anda harus memodifikasi file yang sesuai dengan kebutuhan Anda: jalur, variabel pengguna dan lingkungan.
Contoh permintaan bash:
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
} 'Contoh Permintaan 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 )Contoh Permintaan PowerShell:
$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 Ini akan meluncurkan instance browser baru yang akan mempertahankan cookie sampai Anda menghancurkannya dengan sessions.destroy . Ini berguna, jadi Anda tidak perlu terus menyelesaikan tantangan berulang -ulang dan Anda tidak perlu terus mengirim cookie untuk digunakan oleh browser.
Ini juga mempercepat permintaan karena tidak perlu meluncurkan instance browser baru untuk setiap permintaan.
| Parameter | Catatan |
|---|---|
| sidang | Opsional. ID sesi yang ingin Anda ditugaskan ke instance. Jika tidak diatur, UUID acak akan ditugaskan. |
| proxy | Opsional, Default Dinonaktifkan. Misalnya: "proxy": {"url": "http://127.0.0.1:8888"} . Anda harus menyertakan skema proxy dalam url: http:// , socks4:// atau socks5:// . Otorisasi (nama pengguna/kata sandi) didukung. Misalnya: "proxy": {"url": "http://127.0.0.1:8888", "username": "testuser", "password": "testpass"} |
sessions.listMengembalikan daftar semua sesi aktif. Lebih banyak untuk debugging jika Anda penasaran untuk melihat berapa banyak sesi yang berjalan. Anda harus selalu memastikan untuk menutup setiap sesi dengan benar ketika Anda selesai menggunakannya karena terlalu banyak yang dapat memperlambat komputer Anda.
Contoh Respons:
{
"sessions" : [
" session_id_1 " ,
" session_id_2 " ,
" session_id_3... "
]
}sessions.destroyIni akan mematikan instance browser dengan benar dan menghapus semua file yang terkait dengannya untuk membebaskan sumber daya untuk sesi baru. Ketika Anda tidak perlu lagi menggunakan sesi, Anda harus memastikan untuk menutupnya.
| Parameter | Catatan |
|---|---|
| sidang | ID sesi yang ingin Anda dihancurkan. |
request.get| Parameter | Catatan |
|---|---|
| url | Wajib |
| sidang | Opsional. Akan mengirim permintaan dari dan instance browser yang ada. Jika seseorang tidak dikirim, itu akan membuat instance sementara yang akan dihancurkan segera setelah permintaan selesai. |
| session_ttl_minutes | Opsional. Flaresolverr akan secara otomatis memutar sesi kedaluwarsa berdasarkan TTL yang disediakan dalam hitungan menit. |
| maxTimeout | Opsional, nilai default 60000. Max timeout untuk menyelesaikan tantangan dalam milidetik. |
| cookie | Opsional. Akan digunakan oleh browser tanpa kepala. Misalnya: "cookies": [{"name": "cookie1", "value": "value1"}, {"name": "cookie2", "value": "value2"}] . |
| ReturnOnlycookies | Opsional, false default. Hanya mengembalikan cookie. Data respons, header dan bagian lain dari respons dihapus. |
| proxy | Opsional, Default Dinonaktifkan. Misalnya: "proxy": {"url": "http://127.0.0.1:8888"} . Anda harus menyertakan skema proxy dalam url: http:// , socks4:// atau socks5:// . Otorisasi (nama pengguna/kata sandi) tidak didukung. (Ketika parameter session ditetapkan, proxy diabaikan; proxy spesifik sesi dapat diatur dalam sessions.create .) |
Peringatan jika Anda ingin menggunakan cloudflare clearance cookie di skrip Anda, pastikan Anda menggunakan agen pengguna Flaresolverver juga. Jika mereka tidak cocok, Anda akan melihat tantangannya.
Contoh respons dari menjalankan curl di atas:
{
"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 Ini sama dengan request.get tetapi butuh satu param lagi:
| Parameter | Catatan |
|---|---|
| Postdata | Harus berupa string dengan application/x-www-form-urlencoded . EG: a=b&c=d |
| Nama | Bawaan | Catatan |
|---|---|---|
| Log_level | info | Verbositas logging. Gunakan LOG_LEVEL=debug untuk informasi lebih lanjut. |
| Log_html | PALSU | Hanya untuk debugging. Jika true semua HTML yang melewati proxy akan dicatat ke konsol di tingkat debug . |
| Captcha_solver | tidak ada | Metode Pemecahan Captcha. Ini digunakan saat captcha ditemui. Lihat bagian Captcha Solver. |
| Tz | UTC | TimeZone digunakan dalam log dan browser web. Contoh: TZ=Europe/London . |
| Lang | tidak ada | Bahasa yang digunakan di browser web. Contoh: LANG=en_GB . |
| Tanpa kepala | BENAR | Hanya untuk debugging. Untuk menjalankan browser web dalam mode headless atau terlihat. |
| Browser_timeout | 40000 | Jika Anda mengalami kesalahan/batas waktu karena sistem Anda lambat, Anda dapat mencoba meningkatkan nilai ini. Ingatlah untuk meningkatkan parameter maxTimeout juga. |
| Test_url | https://www.google.com | Flaresolverrik membuat permintaan di awal untuk memastikan browser web berfungsi. Anda dapat mengubah URL itu jika diblokir di negara Anda. |
| PELABUHAN | 8191 | Port mendengarkan. Anda tidak perlu mengubah ini jika Anda menjalankan di Docker. |
| TUAN RUMAH | 0.0.0.0 | Antarmuka mendengarkan. Anda tidak perlu mengubah ini jika Anda menjalankan di Docker. |
| Prometheus_enabled | PALSU | Aktifkan Eksportir Prometheus. Lihat bagian Prometheus di bawah ini. |
| Prometheus_port | 8192 | Port Mendengarkan untuk Eksportir Prometheus. Lihat bagian Prometheus di bawah ini. |
Variabel lingkungan diatur secara berbeda tergantung pada sistem operasi. Beberapa contoh:
docker-compose.yml atau dalam perintah Docker CLI.export LOG_LEVEL=debug dan kemudian jalankan flaresolverr dalam shell yang sama.cmd.exe , jalankan set LOG_LEVEL=debug dan kemudian jalankan flaresolverr.exe dalam cangkang yang sama. Eksportir Prometheus untuk Flaresolverr dinonaktifkan secara default. Ini dapat diaktifkan dengan variabel lingkungan PROMETHEUS_ENABLED . Jika Anda menggunakan Docker, pastikan Anda mengekspos PROMETHEUS_PORT .
Contoh metrik:
# 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+09Peringatan pada saat ini tidak ada pemecah Captcha yang berhasil. Anda dapat memeriksa statusnya dalam masalah terbuka. Bantuan apa pun diterima.
Terkadang CloudFlare tidak hanya memberikan perhitungan matematika dan tes browser, kadang -kadang mereka juga mengharuskan pengguna untuk menyelesaikan captcha. Jika ini masalahnya, Flaresolverver akan mengembalikan kesalahan Captcha detected but no automatic solver is configured.
Flaresolverr dapat disesuaikan untuk menyelesaikan captcha secara otomatis dengan mengatur variabel lingkungan CAPTCHA_SOLVER ke nama file salah satu adaptor di dalam direktori /captcha.