O Flaresolverr é um servidor proxy para ignorar o CloudFlare e o DDoS-Guard Protection.
O Flaresolverr inicia um servidor proxy e aguarda solicitações de usuário em um estado ocioso usando poucos recursos. Quando alguma solicitação chega, ele usa o selênio com o cromado não detectado para criar um navegador da web (Chrome). Ele abre o URL com os parâmetros do usuário e aguarda até que o desafio do CloudFlare seja resolvido (ou tempo limite). O código HTML e os cookies são enviados de volta ao usuário, e esses cookies podem ser usados para ignorar o CloudFlare usando outros clientes HTTP.
Nota : Os navegadores da Web consomem muita memória. Se você estiver executando o flaresolverr em uma máquina com poucos RAM, não faça muitas solicitações de uma só vez. A cada solicitação, um novo navegador é lançado.
Também é possível usar uma sessão permanente. No entanto, se você usar sessões, feche -as assim que terminar de usá -las.
Recomenda -se instalar usando um contêiner Docker porque o projeto depende de um navegador externo que já está incluído na imagem.
As imagens do Docker estão disponíveis em:
As arquiteturas suportadas são:
| Arquitetura | Marcação |
|---|---|
| x86 | Linux/386 |
| x86-64 | Linux/AMD64 |
| ARM32 | Linux/ARM/V7 |
| ARM64 | Linux/ARM64 |
Fornecemos um arquivo de configuração docker-compose.yml . Clone este repositório e execute docker-compose up -d (compõe v1) ou docker compose up -d (compõe v2) para iniciar o contêiner.
Se você preferir o docker cli execute o seguinte comando.
docker run -d
--name=flaresolverr
-p 8191:8191
-e LOG_LEVEL=info
--restart unless-stopped
ghcr.io/flaresolverr/flaresolverr:latest Se o seu sistema operacional host é o Debian, verifique se a versão libseccomp2 é 2.5.x. Você pode verificar a versão com sudo apt-cache policy libseccomp2 e atualizar o pacote com sudo apt install libseccomp2=2.5.1-1~bpo10+1 ou sudo apt install libseccomp2=2.5.1-1+deb11u1 . Lembre -se de reiniciar o daemon do Docker e o contêiner após a atualização.
Os binários de aviso pré -compilados estão disponíveis apenas para a arquitetura x64. Para outras arquiteturas, consulte imagens do Docker.
Esta é a maneira recomendada para os usuários do Windows.
Aviso A instalação do código -fonte funciona apenas para a arquitetura x64. Para outras arquiteturas, consulte imagens do Docker.
pip install -r requirements.txt para instalar as dependências do flaresolverr.python src/flaresolverr.py para iniciar o flaresolverr.pkg install chromium python39 py39-pip xorg-vfbserver para instalar as dependências necessárias.python3.9 -m pip install -r requirements.txt para instalar as dependências do flaresolverr.python3.9 src/flaresolverr.py para iniciar o flaresolverr. Fornecemos um exemplo de arquivo de unidade Systemd flaresolverr.service como referência. Você deve modificar o arquivo para atender às suas necessidades: caminhos, variáveis de usuário e ambiente.
Exemplo de solicitação de 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
} 'Exemplo de solicitação 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 )Exemplo PowerShell Pedido:
$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 Isso lançará uma nova instância do navegador que manterá cookies até você destruí -lo com sessions.destroy . Isso é útil, então você não precisa continuar resolvendo os desafios repetidamente e não precisará continuar enviando cookies para o navegador usar.
Isso também acelera as solicitações, pois não precisará iniciar uma nova instância do navegador para cada solicitação.
| Parâmetro | Notas |
|---|---|
| sessão | Opcional. O ID da sessão que você deseja ser atribuído à instância. Se não estiver definido, um UUID aleatório será atribuído. |
| Proxy | Opcional, o padrão desativado. Por exemplo: "proxy": {"url": "http://127.0.0.1:8888"} . Você deve incluir o esquema proxy no URL: http:// , socks4:// ou socks5:// . Autorização (nome de usuário/senha) é suportado. Por exemplo: "proxy": {"url": "http://127.0.0.1:8888", "username": "testuser", "password": "testpass"} |
sessions.listRetorna uma lista de todas as sessões ativas. Mais para depurar se você está curioso para ver quantas sessões estão em execução. Você sempre deve fechar corretamente cada sessão quando terminar de usá -los, pois muitos podem desacelerar o computador.
Exemplo de resposta:
{
"sessions" : [
" session_id_1 " ,
" session_id_2 " ,
" session_id_3... "
]
}sessions.destroyIsso desligará adequadamente uma instância do navegador e removerá todos os arquivos associados a ele para liberar recursos para uma nova sessão. Quando você não precisar mais usar uma sessão, certifique -se de fechá -la.
| Parâmetro | Notas |
|---|---|
| sessão | O ID da sessão que você deseja ser destruído. |
request.get| Parâmetro | Notas |
|---|---|
| url | Obrigatório |
| sessão | Opcional. Enviará a solicitação e a instância do navegador existente. Se não for enviado, ele criará uma instância temporária que será destruída imediatamente após a conclusão da solicitação. |
| session_ttl_minutes | Opcional. Flaresolverr girará automaticamente as sessões expiradas com base no TTL fornecido em minutos. |
| MaxTimeout | Opcional, valor padrão 60000. Tempo limite máximo para resolver o desafio em milissegundos. |
| biscoitos | Opcional. Será usado pelo navegador sem cabeça. Por exemplo: "cookies": [{"name": "cookie1", "value": "value1"}, {"name": "cookie2", "value": "value2"}] . |
| retornonlycookies | Opcional, padrão false. Retorna apenas os cookies. Os dados de resposta, cabeçalhos e outras partes da resposta são removidos. |
| Proxy | Opcional, o padrão desativado. Por exemplo: "proxy": {"url": "http://127.0.0.1:8888"} . Você deve incluir o esquema proxy no URL: http:// , socks4:// ou socks5:// . Autorização (nome de usuário/senha) não é suportado. (Quando o parâmetro session é definido, o proxy é ignorado; um proxy específico da sessão pode ser definido em sessions.create .) |
Aviso Se você deseja usar o CloudFlare Clearrance Cookie em seus scripts, também use o agente de usuário Flaresolverr. Se eles não combinarem, você verá o desafio.
Exemplo de resposta de executar o curl acima:
{
"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 É o mesmo que request.get , mas é preciso mais um param:
| Parâmetro | Notas |
|---|---|
| PostData | Deve ser uma string com application/x-www-form-urlencoded . Por exemplo: a=b&c=d |
| Nome | Padrão | Notas |
|---|---|---|
| Log_level | informações | Verbosidade do registro. Use LOG_LEVEL=debug para obter mais informações. |
| Log_html | falso | Apenas para depuração. Se true All HTML que passar pelo proxy será registrado no console no nível debug . |
| Captcha_solver | nenhum | Método de resolução de captcha. É usado quando um captcha é encontrado. Veja a seção Solvers Captcha. |
| Tz | UTC | Filho horário usado nos logs e no navegador da web. Exemplo: TZ=Europe/London . |
| Lang | nenhum | Idioma usado no navegador da web. Exemplo: LANG=en_GB . |
| SEM CABEÇA | verdadeiro | Apenas para depuração. Para executar o navegador da web no modo sem cabeça ou visível. |
| Browser_timeout | 40000 | Se você estiver experimentando erros/tempo limite porque seu sistema é lento, tente aumentar esse valor. Lembre -se de aumentar o parâmetro maxTimeout também. |
| Test_url | https://www.google.com | O Flaresolverr faz uma solicitação no início para garantir que o navegador da web esteja funcionando. Você pode mudar esse URL se estiver bloqueado em seu país. |
| PORTA | 8191 | Porta de escuta. Você não precisa mudar isso se estiver executando no Docker. |
| HOSPEDAR | 0.0.0.0 | Interface de escuta. Você não precisa mudar isso se estiver executando no Docker. |
| Prometheus_enabled | falso | Ativar exportador de prometeu. Veja a seção Prometheus abaixo. |
| Prometheus_port | 8192 | Porta de escuta para o exportador de Prometheus. Veja a seção Prometheus abaixo. |
As variáveis de ambiente são definidas de maneira diferente, dependendo do sistema operacional. Alguns exemplos:
docker-compose.yml ou no comando Docker CLI.export LOG_LEVEL=debug e, em seguida, execute flaresolverr no mesmo shell.cmd.exe , execute set LOG_LEVEL=debug e, em seguida, execute flaresolverr.exe no mesmo shell. O exportador Prometheus para Flaresolverr é desativado por padrão. Pode ser ativado com a variável de ambiente PROMETHEUS_ENABLED . Se você estiver usando o Docker, exponha o PROMETHEUS_PORT .
Exemplo de métricas:
# 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+09Aviso neste momento nenhum dos solucionadores de captcha funcionam. Você pode verificar o status nos problemas abertos. Qualquer ajuda é bem -vinda.
Às vezes, o CloudFlare não apenas fornece cálculos matemáticos e testes de navegador, às vezes eles também exigem que o usuário resolva um Captcha. Se for esse o caso, o Flaresolverr retornará o erro Captcha detected but no automatic solver is configured.
O Flaresolverr pode ser personalizado para resolver o CAPTCHA automaticamente, definindo a variável de ambiente CAPTCHA_SOLVER no nome do arquivo de um dos adaptadores dentro do diretório /captcha.