• Logo „PHP“
  • Logo „Python“
  • Logo „Java“
  • Logo „C#“
  • Logo „Ruby“
  • Logo „Golang“
  • Logo „JavaScript“
Bypass captcha in Ruby

Bypass captcha in Ruby
Logo „Ruby“
  • Logo „PHP“
  • Logo „Python“
  • Logo „Java“
  • Logo „C#“
  • Logo „Ruby“
  • Logo „Golang“
  • Logo „JavaScript“

Ruby gem for easy integration with the API of captcha solving service to bypass reCAPTCHA, Arkose captcha, Geetest and solve any other captchas. This is the easiest way to quickly integrate 2Captcha solving service into code and automate solving of any type of captcha.

Início rápido

Instalação

O pacote de scripts pode ser instalado usando o instalador de pacotes ou manualmente

Bundler

To install a gem, you can use the bundler package manager. Download it from the link and install according to the instructions.

# Gemfile
gem 'ruby-2captcha'

We invite you to explore our GitHub repository where you can find ruby API client for easy integration with our API.

Configuração

Descrição de todos os parâmetros necessários para configurar o pacote instalado

Uma instância da classe Api2Captcha pode ser criada desta forma:

client = Api2Captcha.new('YOUR_API_KEY')

Também pode personalizar algumas das opções para a instância criada:

client = Api2Captcha.new("YOUR_API_KEY")
client.api_key = "YOUR_API_KEY"
Opções de instância Api2Captcha
OpçãoValor padrãoDescrição
soft_id-o seu ID de software obtido após a publicação no 2Captcha catálogo de software
callback-URL do seu servidor web que recebe o resultado do reconhecimento captcha. O URL deve ser registado primeiro nas configurações de pingback da sua conta
default_timeout120Tempo limite de pesquisa em segundos para todos os tipos de captcha, exceto reCAPTCHA. Define por quanto tempo o módulo tenta obter a resposta da parte da API res.php
recaptcha_timeout600Tempo limite de sondagem para reCAPTCHA em segundos. Define por quanto tempo o módulo tenta obter a resposta da parte da API res.php
polling_interval10Intervalo em segundos entre solicitações da parte da API res.php, não é recomendado definir valores inferiores a 5 segundos
IMPORTANTE: assim que o callback seja definido para a instância Api2Captcha, todos os métodos retornam apenas o ID do captcha e NÃO pesquisam a API para obter o resultado. O resultado será enviado para o URL de retorno de chamada. Para obter a resposta manualmente, use o método getResult

Resolver o captcha

Quando envia qualquer captcha baseado em imagem, o uso de captcha pode fornecer opções adicionais para ajudar os funcionários do 2Captcha a resolvê-lo corretamente

Opções de Captcha
OpçãoValor por defeitoDescrição
numeric0Define se o captcha contém símbolos numéricos ou outros veja mais informações na documentação API
min_len0comprimento mínimo da resposta
max_len0comprimento máximo da resposta
phrase0define se a resposta contém ou não várias palavras
case_sensitive0define se a resposta diferencia maiúsculas de minúsculas
calc0define se captcha requer cálculo
lang-define o idioma captcha, consulte a lista de idiomas suportados
hint_image-uma imagem com dica mostrada aos trabalhadores com o captcha
hint_text-dica ou texto de tarefa mostrado aos trabalhadores com o captcha
simpleCaptcha

Para ignorar um captcha normal (texto distorcido na imagem) use o seguinte método. Este método também pode ser usado para reconhecer qualquer texto na imagem.

result = client.normal({ image: 'path/to/captcha.jpg'})
# OR
result = client.normal({
  image: 'https://site-with-captcha.com/path/to/captcha.jpg'
})
textCaptcha

Este método pode ser usado para ignorar um captcha que requer responder a uma pergunta fornecida em texto não encriptado.

result = client.text({
  textcaptcha:'If tomorrow is Saturday, what day is today?',
  lang: "en"
})
recaptchaV2

Use este método para resolver o reCAPTCHA V2 e obter um token para fazer bypass a proteção.

result = client.recaptcha_v2({
  googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
  pageurl: 'https://mysite.com/page/with/recaptcha_v2'
})
recaptchaV3

Este método fornece o solucionador reCAPTCHA V3 e retorna um token.

result = client.recaptcha_v3({
  googlekey: '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
  pageurl: 'https://mysite.com/page/with/recaptcha_v3',
  version: 'v3',
  score: 0.3,
  action: 'verify'
})
funCaptcha

Método de resolução FunCaptcha (Arkoselabs). Retorna um token.

result = client.funcaptcha({
  publickey: "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
  pageurl: "https://mysite.com/page/with/funcaptcha",
  surl: "https://client-api.arkoselabs.com"
})
geeTest

Método para resolver o captcha do puzzle GeeTest. Retorna um conjunto de tokens como JSON.

result = client.geetest({
  gt: 'f1ab2cdefa3456789012345b6c78d90e',
  api_server: 'api-na.geetest.com',
  challenge: '12345678abc90123d45678ef90123a456b',
  pageurl: 'https://www.site.com/page/'
})
keyCaptcha

Método baseado em token para resolver KeyCaptcha.

result = client.keycaptcha({
  s_s_c_user_id: 10,
  s_s_c_session_id: '493e52c37c10c2bcdf4a00cbc9ccd1e8',
  s_s_c_web_server_sign: '9006dc725760858e4c0715b835472f22-pz-',
  s_s_c_web_server_sign2: '2ca3abe86d90c6142d5571db98af6714',
  pageurl: 'https://www.keycaptcha.ru/demo-magnetic/'
})
capy

Método baseado em token para fazer bypass a captcha de puzzle Capy.

result = client.capy({
  sitekey: 'PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
  pageurl: 'http://mysite.com/',
  api_server: 'https://jp.api.capy.me/'
})
grid

O método Grid é originalmente chamado de método Old reCAPTCHA V2. O método pode ser usado para contornar qualquer tipo de captcha onde pode aplicar uma grelha na imagem e deve clicar em caixas de grade específicas. Retorna números de caixas.

result = client.grid({
  image: 'path/to/captcha.jpg',
  rows: 3,
  cols: 3,
  previous_id: 0,
  lang: 'en',
  hint_image: 'path/to/hint.jpg',
  hint_text: 'Select all images with an Orange'
})
canvas

O método Canvas pode ser usado quando precisa de desenhar uma linha ao redor de um objeto na imagem. Retorna um conjunto de coordenadas de pontos para desenhar um polígono.

result = client.canvas({
  image: 'path/to/captcha.jpg',
  previous_id: 0,
  lang: 'en',
  hint_image: 'path/to/hint.jpg',
  hint_text: 'Draw around apple'
})
clickCaptcha

O método ClickCaptcha retorna as coordenadas dos pontos na imagem captcha. Pode ser usado se necessitar de clicar em pontos específicos da imagem.

result = client.coordinates({
  image: 'path/to/captcha.jpg',
  lang: 'en',
  hint_image: 'path/to/hint.jpg',
  hint_text: 'Connect the dots'
})
rotateCaptcha

Este método pode ser usado para resolver um captcha que pede para girar um objeto. Usado principalmente para contornar o FunCaptcha. Retorna o ângulo de rotação.

result = client.rotate({
  image: 'path/to/captcha.jpg',
  angle: 40,
  lang: 'en',
  hint_image: 'path/to/hint.jpg',
  hint_text: 'Put the images in the correct way'
})

Outros métodos

Métodos válidos adicionais usados durante o trabalho dos scripts principais

send / get_result

Estes métodos podem ser usados para envio manual de captcha e pesquisa de respostas.

# example for normal captcha
captcha_id = client.send('path/to/captcha.jpg')

# or for another captcha, for example for lemin
captcha_id = client.send({
  method:"lemin",
  captcha_id: "CROPPED_3dfdd5c_d1872b526b794d83ba3b365eb15a200b",
  api_server: "api.leminnow.com",
  div_id: "lemin-cropped-captcha",
  pageurl: "https://www.site.com/page/"
})

time.sleep(20)

# Get result
result = client.get_result(captcha_id)

get_balance

Use este método para obter o saldo da sua conta.

balance = client.get_balance

report

Use este método para relatar uma resposta captcha boa ou má.

client.report(captcha_id, True) # captcha solved correctly
client.report(captcha_id, False) # captcha solved incorrectly

Manipulação de erros

Possíveis variantes de erros padrão retornados pelo serviço ao processar pedidos

If case of an error captcha solver throws an exception. It's important to properly handle these cases. We recommend to use begin/rescue to handle exceptions.

begin
result = client.text('If tomorrow is Saturday, what day is today?')
rescue Api2Captcha::ValidationException => e
  # invalid parameters passed
  puts(e)
rescue Api2Captcha::NetworkException => e
  # network error occurred
  puts(e)
rescue Api2Captcha::ApiException => e
  # api respond with error
  puts(e)
rescue Api2Captcha::TimeoutException => e
  # captcha is not solved so far
  puts(e)
end

Outras linguagens para integração com a API de serviço