/Desenvolvimento

voltar
/Desenvolvimento

Como criar um PHP CAPTCHA Solver com uma classe PHP OCR

PorVivek Moyal em

O CAPTCHA é usado frequentemente para proteger o acesso aos recursos usando bots utilizando texto escrito em imagens, mas também é possível contornar essa proteção com métodos OCR.

Leia este artigo para aprender a usar uma classe PHP OCR para ler textos escritos em imagens como aquelas que aparecem nas imagens CAPTCHA.

Solução CAPTCHA Solver Free PHP OCR

O CAPTCHA é um método comum para impedir que os bots tenham acesso aos recursos de forma automatizada. Existem muitos tipos de soluções CAPTCHA, mas a mais comum consiste em uma imagem que exibe um texto geralmente distorcido de alguma forma para tornar mais difícil para os robôs descobrirem o que está escrito.

Uma maneira de determinar o que está escrito em uma imagem CAPTCHA é usar métodos de reconhecimento óptico de caracteres (Optical Character Recognition – OCR). Esses métodos permitem reconhecer caracteres de texto que estão escritos em imagens.

Este artigo apresenta o que pode ser o início de uma solução CAPTCHA solver baseada em uma classe OCR gratuita escrita em PHP.

Por que um CAPTCHA Solver

Suponha que você esteja trabalhando em um projeto e precisa baixar um arquivo. O link do arquivo será fornecido após o login e você precisa inserir o texto de um desafio CAPTCHA.

E agora, o que você fará? Ou você logará sempre com os detalhes de login corretos e entrará com o valor CAPTCHA correto para obter o link, ou você usará a maneira mais inteligente da solução CAPTCHA Solver e uma biblioteca de solicitação HTTP para sempre obter o link. Nossa segunda opção é sobre uma solução automatizada para seu projeto.

Mas como o CAPTCHA Solver funcionará e como podemos usá-lo? Aqui é explicado como você pode fazê-lo.

Como o PHP Captcha Solver vai funcionar

A solução será dividida em duas partes. Primeiro, fazemos o sistema aprender criando o conjunto de caracteres com todas as letras a serem reconhecidas. Na segunda parte, testamos imagens com texto em relação ao conjunto de caracteres que construímos para avaliar se isso produz os resultados corretos de reconhecimento de texto.

Treinando o sistema para reconhecer caracteres: example.php

Olhando para o script example.php, você pode ver que ele inclui a classe PHP OCR e a classe Config. A classe OCR contém funções que são usadas para aprender a reconhecer caracteres das imagens, criar objetos de caracteres, reconhecer, salvar e testar os resultados de aprendizagem.

include_once("config.php");
include_once("OCR.class.php");

$char = new OCR();
 
// learn about characters to be recognized
$char->Learn("W");

// save the learned object to file
$char->saveResult();

echo 'Saved information about the "W" letter<br>';

Esse script é o ponto de partida da nossa solução PHP CAPTCHA Solver. Ela inclui a classe OCR e cria um objeto dessa classe. Ela usa a função Learn para aprender sobre cada caractere a ser reconhecido. A função Learn gera informações para serem serializadas para que possam ser salvas em um arquivo em nossa pasta de armazenamento usando a função saveResult.

Reconhecendo caracteres em imagens: example_1.php

Depois de salvar os resultados de treinamento em arquivos na pasta de armazenamento, a função de reconhecimento de classe pode reconhecer os caracteres que aparecem na imagem. Se um erro foi encontrado ao verificar o objeto de caractere, isso significa que ele não reconheceu a imagem corretamente. Caso contrário, ele reconheceu com sucesso o caractere.

include_once './config.php';
include_once './OCR.class.php';

$char = new OCR();
 
// Recognition process, check images from files
echo "<hr/><img src='M.png'/><br/>";

$res = $char->Recognition('M.png');

if ($res !== false) {
    echo "<b>" . $res->getName() . "</b>";
} else {
    echo "Not yet recognised.<br/>";
}

Completando a solução CAPTCHA Solver

Aprender a reconhecer caracteres individuais em uma imagem é apenas parte do desafio de identificar o texto em uma imagem de validação CAPTCHA.

Muitas vezes, as imagens CAPTCHA exibem um texto distorcido juntamente com gráficos obscuros. Com treinamento suficiente com exemplos de imagens de texto distorcidas, o sistema pode ser aprimorado para reconhecer melhor o texto desordenado.

Mas, primeiro, uma solução completa precisa ser capaz de separar cada letra na imagem, para que cada uma possa ser processada para reconhecer uma letra por vez.

Como você pode ver, uma solução completa do CAPTCHA solver precisa fazer mais do que a classe CAPTCHA atual.

Se você gostou do desafio, talvez possa evoluir a classe atual ou criar classes adicionais para fornecer uma solução completa da solução CAPTCHA solver.

De forma alternativa, você também pode usar serviços Web que solucionam CAPTCHA e que dependem de usuários humanos reais que descodificam as imagens CAPTCHA para você em um curto período de tempo.

É uma abordagem diferente, mas você também pode usar as classes PHP existentes para usar os serviços anti-CAPTCHA do seu aplicativo PHP.

Baixando a classe PHP OCR

A classe OCR do PHP apresentada neste artigo pode ser baixada e instalada a partir de um arquivo ZIP ou instalada com a ferramenta composer do PHP usando as instruções disponíveis na página de download.

Se você gostou deste artigo, compartilhe-o com outros desenvolvedores. Publique um comentário aqui se você tiver dúvidas ou quiser fornecer sua opinião.

***

Vivek Moyal faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://www.phpclasses.org/blog/post/594-How-to-Create-a-PHP-CAPTCHA-Solver-with-a-PHP-OCR-Class.html

Deixe um comentário! 2

2 comentários

Comentários

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentando como Anônimo

  1. Interessante a classe demonstrada, porém um captcha é criado para evitar que automatizações tenham acesso, logo fazer algo para quebrar isso, vai contra a intenção do projeto acessado.
    Legal, porém “incorreto” já que você estará tentando burlar o funcionamento do projeto, a não ser que a intenção seja apenas didática.

    1. Olá Anderson,

      concordo com seu ponto de vista, porém, gostaria de deixar uma reflexão sobre alguns casos reais como a receita federal. Ela provê páginas que são extremamente úteis para sistemas de cobrança, verificação financeira, conciliação de notas fiscais, etc. Mas na sua maioria essas páginas são descentralizadas e não possuem uma api. Para grandes empresas, isso é um problema que pode ser contornado com contratação de pessoal para fazer esse trabalho manualmente ou contratação de serviços que fazem a quebra de captchas. A receita federal exige que todas as cobranças feitas online sejam direcionadas à uma pessoa física ou jurídica com situação regular mas não provém um método de verificação destes documentos. Isso caracteriza uma cobrança injusta e cria espaço de mercado para serviços que quebram captchas e provém esta informação e permitem que comerciantes legítimos identifiquem compradores legítimos e recusem o serviço para fraudadores.

leia mais
Este projeto é mantido e patrocinado pelas empresas: