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 (Compose V1)或docker compose up -d (Compose 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命令以啟動Flaresolverr。pkg install chromium python39 py39-pip xorg-vfbserver命令以安裝所需的依賴項。python3.9 -m pip install -r requirements.txt命令以安裝flaresolverr依賴關係。python3.9 src/flaresolverr.py命令啟動flaresolverr。我們提供了一個示例SystemD單元文件flaresolverr.service作為參考。您必須修改文件以適合您的需求:路徑,用戶和環境變量。
示例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
} '示例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 )示例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這將啟動一個新的瀏覽器實例,該實例將保留cookie,直到您用sessions.destroy將其銷毀。這很方便,因此您不必一遍又一遍地解決挑戰,也不需要繼續發送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。最大超時以毫秒為單位解決挑戰。 |
| 餅乾 | 選修的。無頭瀏覽器將使用。例如: "cookies": [{"name": "cookie1", "value": "value1"}, {"name": "cookie2", "value": "value2"}] 。 |
| returnonlycookies | 可選,默認錯誤。僅返回cookie。響應數據,標題和其他部分被刪除。 |
| 代理人 | 可選,默認禁用。例如: "proxy": {"url": "http://127.0.0.1:8888"} 。您必須在URL中包含代理架構: http:// , socks4://或socks5:// 。不支持授權(用戶名/密碼)。 (設置session參數時,忽略了代理;可以在sessions.create中設置會話特定的代理。) |
警告如果您想在腳本中使用CloudFlare Clearance 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相同。
| 範圍 | 筆記 |
|---|---|
| PostData | 必須是具有application/x-www-form-urlencoded的字符串。例如: a=b&c=d |
| 姓名 | 預設 | 筆記 |
|---|---|---|
| log_level | 資訊 | 伐木的詳細性。使用LOG_LEVEL=debug以獲取更多信息。 |
| log_html | 錯誤的 | 僅用於調試。如果true所有通過代理的HTML將以debug級別登錄到控制台。 |
| CATCCHA_SOLVER | 沒有任何 | 驗證碼解決方法。遇到驗證碼時使用。請參閱“驗證碼求解器”部分。 |
| TZ | 世界標準時間 | 日誌和Web瀏覽器中使用的時區。示例: 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部分。 |
| Prometheus_port | 8192 | Prometheus出口商的聆聽端口。請參閱下面的Prometheus部分。 |
根據操作系統,環境變量的設置不同。一些例子:
docker-compose.yml文件或docker cli命令中設置環境變量。export LOG_LEVEL=debug ,然後在同一外殼中運行flaresolverr 。cmd.exe ,運行set LOG_LEVEL=debug ,然後在同一外殼中運行flaresolverr.exe 。 默認情況下禁用了Flaresolverr的Prometheus出口商。可以使用環境變量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此時警告驗證碼求解器都無法使用。您可以在開放問題中檢查狀態。歡迎任何幫助。
有時,CloudFlare不僅給出數學計算和瀏覽器測試,有時它們還需要用戶求解驗證碼。如果是這種情況,Flaresolverr將返回Captcha detected but no automatic solver is configured.
可以自定義Flaresolverr來自動求解驗證碼,從而將環境變量CAPTCHA_SOLVER設置為 /碼頭目錄中的一個適配器的文件名。