Flaresolverr-это прокси-сервер для обхода защиты Cloudflare и DDOS-Guard.
Flaresolverr запускает прокси -сервер, и он ожидает запросов пользователей в состоянии холостого хода, используя несколько ресурсов. Когда приходит какой-то запрос, он использует селен с незамеченным Chromedriver для создания веб-браузера (Chrome). Он открывает URL с параметрами пользователя и ожидает, пока не будет решена задача CloudFlare (или тайм -аут). HTML -код и файлы cookie отправляются обратно пользователю, и эти файлы cookie могут использоваться для обхода CloudFlare с использованием других клиентов HTTP.
Примечание : веб -браузеры потребляют много памяти. Если вы используете 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 Если ваша хост -ОС является 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 Images.
Это рекомендуемый способ для пользователей Windows.
Предупреждение Установка из исходного кода работает только для архитектуры X64. Другие архитектуры см. Docker Images.
pip install -r requirements.txt Команда для установки FRARESOLVERR -зависимостей.python src/flaresolverr.py , чтобы запустить Flaresolverr.pkg install chromium python39 py39-pip xorg-vfbserver Команда для установки необходимых зависимостей.python3.9 -m pip install -r requirements.txt .python3.9 src/flaresolverr.py , чтобы запустить Flaresolverr. Мы приводим пример SystemD Unit File 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 для использования браузером.
Это также ускоряет запросы, так как ему не придется запускать новый экземпляр браузера для каждого запроса.
| Параметр | Примечания |
|---|---|
| сессия | Необязательный. Идентификатор сеанса, который вы хотите назначить экземпляру. Если не установлен, будет назначена случайная 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Это правильно выключит экземпляр браузера и удалит все файлы, связанные с ним, чтобы освободить ресурсы для нового сеанса. Когда вам больше не нужно использовать сеанс, вы должны убедиться, что закрыть его.
| Параметр | Примечания |
|---|---|
| сессия | Идентификатор сессии, который вы хотите уничтожить. |
request.get| Параметр | Примечания |
|---|---|
| URL | Обязательный |
| сессия | Необязательный. Отправит запрос из существующего экземпляра браузера. Если кто -то не отправит, он создаст временный экземпляр, который будет уничтожен сразу после завершения запроса. |
| session_ttl_minutes | Необязательный. FlareSolverr будет автоматически повернуть сеансы с истекшим сроком действия на основе TTL, предоставленного в считанные минуты. |
| maxtimeout | Необязательное значение по умолчанию 60000. Макс Тайм -аут для решения проблемы в миллисекундах. |
| печенье | Необязательный. Будет использоваться безголовым браузером. Например: "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 .) |
Предупреждение Если вы хотите использовать CloudFlare Clearie 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 All HTML, который проходит через прокси, будет зарегистрирован до консоли на уровне debug . |
| Captcha_solver | никто | Метод решения CAPTCHA. Он используется, когда встречается капча. См. Раздел Captcha Solvers. |
| Т.е. | универсальное глобальное время | Timezone, используемый в журналах и веб -браузере. Пример: TZ=Europe/London . |
| Ланг | никто | Язык используется в веб -браузере. Пример: LANG=en_GB . |
| Без головы | истинный | Только для отладки. Запустить веб -браузер в режиме без головы или видимого. |
| Browser_timeout | 40000 | Если вы испытываете ошибки/тайм -ауты, потому что ваша система медленная, вы можете попытаться увеличить это значение. Не забудьте увеличить параметр maxTimeout . |
| Test_url | https://www.google.com | Flaresolverr делает запрос на начало, чтобы убедиться, что веб -браузер работает. Вы можете изменить этот URL, если он заблокирован в вашей стране. |
| Порт | 8191 | Прослушивание порта. Вам не нужно менять это, если вы работаете на Docker. |
| ХОЗЯИН | 0.0.0.0 | Прослушивание интерфейса. Вам не нужно менять это, если вы работаете на Docker. |
| Prometheus_enabled | ЛОЖЬ | Включить экспортер Prometheus. См. Раздел Prometheus ниже. |
| Prometheus_port | 8192 | Прослушивание порта для экспортера Prometheus. См. Раздел Prometheus ниже. |
Переменные среды устанавливаются по -разному в зависимости от операционной системы. Некоторые примеры:
docker-compose.yml или в команде Docker CLI.export LOG_LEVEL=debug , а затем запустите flaresolverr в той же оболочке.cmd.exe , запустите set LOG_LEVEL=debug , а затем запустите flaresolverr.exe в той же оболочке. Экспортер Prometheus для Flaresolverr отключен по умолчанию. Он может быть включен с помощью переменной среды 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, установив переменную среды CAPTCHA_SOLVER на имя файла одного из адаптеров в каталоге /captcha.