Olá Habr!
Sente-se, faça de si uma gaivota, pois escrevo um pouco apertado e através da orelha direita. Então você está pronto? Tudo bem, então vamos começar.
ATENÇÃO! As informações descritas abaixo são escritas apenas para fins de pesquisa e não se destinam a ser usadas para ganho pessoal !
Talvez eu comece com o fundo. Ou seja, com o desenvolvimento de uma unidade de rede, cujos setores estão na nuvem. A essência dessa tecnologia tornou possível criar um dos mesmos Yandex.Disk de 10 Gb de várias contas (bem, cerca de 100 ou 1k contas) do mesmo Yandex.Disk cada (pode mudar no momento da leitura), digamos 10Tb. Aqui ...
Eu o aceitei, isso significa, para o desenvolvimento deste programa alguns anos atrás (eu ainda escrevi o programa, mas mais sobre isso em outro artigo) e surgiu a pergunta - como apresentar o YaCaptcha.
Aqui estão alguns exemplos: Então, olhei para esse captcha, pesquisei um pouco no Google e acho - seria necessário usar o TensorFlow e depois transferir para a FANN. Chateado, é claro, um pouco, mas nada para fazer. Deixe-me pensar que baixarei algumas fotos (~ 100k) para que você possa treinar os neurônios, mas, por enquanto, lembrarei da segmentação da rede U-net. Bem, esbocei algumas linhas de código no Delphi + Synapase, lancei-o e procurei no Google sobre o neurônio. Eu baixei durante a pesquisa, devo dizer, antes ... muito, em geral. E aqui começa a diversão.
Entrei, ou seja, estou em um papai com fotos e vejo - apenas se repete! Sim, sim, havia muitas fotos repetidas. Bem, acho que isso não vai funcionar, e baixei o primeiro programa que apareceu para excluir os mesmos arquivos (parece que, se a memória não mudar, clonespy ). Lançou, mas deitou no fogão para dormir. De manhã, olhei para as estatísticas e pensativo: das 100 mil imagens, 76 mil repetições foram excluídas e não são apenas parecidas - são 100% idênticas! O que isso significa, você pergunta? Eu vou explicar agora
Se você toma um neurônio, pode obter um reconhecimento em algum lugar ~ 18%, como escreve nosso amigo (bem, parece-me, você pode espremer até 45-50%, se quiser). Mas, mesmo assim, não vamos esquecer a confusão com métodos semelhantes (os bancos de dados precisam ser criados, digite manualmente dox ... muito captcha, então você ainda precisa sistematizar tudo e esperar até que tudo se reúna) e quanto espaço será necessário e tempo desempenho nem diga que o programa será ótimo.
É possível, de alguma forma, seguir o outro caminho? - você pergunta. E aqui proponho contar - temos 100 mil imagens, das quais 76 mil repetições, ou seja, se obstruirmos o banco de dados dessas imagens (por exemplo, pegar o hash da soma), obteremos uma porcentagem de reconhecimento de até 76%, que é maior que o neurônio, e o peso do banco de dados é aproximadamente o mesmo (se não menor) que a tabela de pesos do TensorFlow. Ao mesmo tempo, esse método funcionará em qualquer lugar e não precisará de muitas bibliotecas.
Entendemos que o Yandex é tão robusto que eles criaram tão poucas variações de captcha. E, graças a isso, você pode escrever um programa sobre o qual escrevi acima. Isso não é uma vulnerabilidade visual do sistema. Ou você acha que mais de 100 TB de espaço no disco rígido é barato?
Obrigado por assistir!