Maison  >  Article  >  interface Web  >  Comment le module node-ccap génère-t-il le code de vérification captcha ?

Comment le module node-ccap génère-t-il le code de vérification captcha ?

零下一度
零下一度original
2017-07-02 10:15:451307parcourir

Cet article présente principalement le module node-ccap pour générer du captchacode de vérification L'éditeur pense que c'est plutôt bien. Maintenant, je vais le partager avec vous et le donner comme référence. Suivons l'éditeur pour y jeter un oeil

Le travail de préparation est le suivant :

Cette bibliothèque dépend de python2 .7.X et node-gyp, veuillez installer

1. Python

Après l'installation, ajoutez le répertoire d'installation tel que "C:Python27" à l'environnement système. CHEMIN variable.

2. Installation de node-gyp

Installez node-gyp globalement. Exécutez npm install -g node-gyp.

3. Installez ccap


npm install ccap

Notez ici, dans le répertoire du projet, ne téléchargez pas le dossier node_modules, Windows Ce n'est pas la même chose que Linux.

Lorsque vous utilisez Node pour le développement Web, vous pouvez rencontrer des zones qui nécessitent des codes de vérification. J'ai déjà effectué une recherche sur github et découvert que certaines bibliothèques telles que node-captcha doivent s'appuyer sur des bibliothèques ou des logiciels de traitement graphique tiers. , comme lorsque j'ai installé la bibliothèque graphique cario auparavant, cela a demandé beaucoup d'efforts, mais en fait nous n'avons utilisé que quelques petites fonctions de ces bibliothèques graphiques, comme modifier et recadrer la taille de l'image, ou générer des codes de vérification.

Présentons d'abord CImg, une bibliothèque graphique C++. CImg est une bibliothèque de traitement d'image C++ multiplateforme qui fournit une série de fonctions telles que le chargement, le traitement, l'affichage et la sauvegarde. Ce qui est intéressant, c'est que l'ensemble de la bibliothèque graphique ne contient qu'un seul fichier CImg.h, il est donc très portable, écologique et respectueux de l'environnement. Il peut être compilé et utilisé partout où vous l'emmenez, sans avoir à installer beaucoup de dépendances. J'ai donc voulu utiliser cette bibliothèque graphique CImg pour faire une démo simple, en commençant par la fonction d'implémentation du code de vérification. Bien sûr, je peux pleinement utiliser cette bibliothèque pour effectuer d'autres fonctions telles que le recadrage d'images.

Le module ccap est un package basé sur la bibliothèque graphique CImg, permettant de l'utiliser par nœud. Grâce à la portabilité de la bibliothèque graphique CImg, le module ccap peut fonctionner indépendamment sans dépendre d'un autre tiers. bibliothèque graphique ou logiciel de fête En d’autres termes, si vous souhaitez simplement générer un simple code de vérification, il vous suffit d’avoir besoin du module ccap.

Exemple d'image générée :

1. Installation : Méthode générale : npm install ccap ou téléchargement via github, adresse : https:// github.com/DoubleSpout/ccap

2. Performances : la vitesse de génération du code de vérification peut atteindre 1 200 fois/seconde sur un serveur Linux 64 bits à 2 cpu. Les images générées dans le test sont des images BMP et jpeg. . La vitesse de génération du code de vérification est d'environ 600 fois/seconde.

3. Méthode de déclaration :


var ccap = require('ccap');

var captcha1 = ccap();

var captcha2 = ccap(width, height, offset);

var captcha3 = ccap({

  width:256,//set width,default is 256

  height:60,//set height,default is 60

  offset:40,//set text spacing,default is 40

  quality:100,//set pic quality,default is 50

  generate:function(){//Custom the function to generate captcha text

     //generate captcha text here

     return text;//return the captcha text

  }

});

Vous pouvez instancier une classe ccap via le code ci-dessus. 1. Ne transmettez aucun paramètre, utilisez tous les paramètres par défaut pour générer le code de vérification 2. Transmettez uniquement la largeur, la hauteur et le décalage pour l'instanciation, ajustez la taille de l'image et l'espacement entre le texte dans l'image. . Passez un objet. En plus de la largeur, la hauteur et le décalage transmettent également la qualité de l'image et la méthode de génération de nombres aléatoires. Le module ccap utilisera la chaîne renvoyée par la fonction personnalisée comme contenu de. le code de vérification de l'image. La valeur par défaut est 0-9 et 6 pour la chaîne aléatoire de bits.

Théoriquement, de nombreuses instances ccap différentes peuvent être produites, et elles n'ont aucune influence les unes sur les autres, donc même si un nœud multi-processus est démarré via le cluster et que le code de vérification est produit en même temps, il Il n'y aura pas d'effet de verrouillage mutuel.

Pour la qualité de l'image, cela n'est valable que pour les images jpeg. Si aucune bibliothèque jpeg lib n'est installée, vous ne pouvez utiliser que des graphiques bmp non compressés. La taille est plus grande, mais la vitesse de génération est plus rapide.

4. Méthode d'utilisation, get() :


var ccap = require('ccap');

var captcha = ccap();

var ary = captcha.get();//ary[0] is captcha's text,ary[1] is captcha picture buffer.

var text = ary[0];

var buffer = ary[1];

Après avoir instancié la classe ccap, vous obtiendrez l'objet captcha, qui n'en a qu'un. méthode externe , get(), chaque appel de cette méthode renverra le tampon du code de vérification et le contenu de la chaîne de texte correspondant, stockés dans un tableau, avec une structure similaire à celle-ci :


["captcha text","picture buffer"]

5. Un exemple Web simple :


var http = require('http');

var ccap = require('ccap')();//Instantiated ccap class 

http.createServer(function (request, response) {

  if(request.url == '/favicon.ico')return response.end('');//Intercept request favicon.ico

  var ary = ccap.get();

  var txt = ary[0];

  var buf = ary[1];

  response.end(buf);

  console.log(txt);

}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

L'exemple ci-dessus renverra le code de vérification au client et affichera le texte du code de vérification correspondant. . Au même moment, la demande de favicon.ico a été interceptée.

Le résultat est le suivant :

Si vous êtes intéressé, vous pouvez télécharger le TX et l'essayer. Si la bibliothèque jpeg est installée, vous pouvez le faire. peut se lier dans le répertoire racine. Écrasez jpeg.gyp et renommez-le en liaison.gyp, puis reconstruisez pour utiliser des images jpeg comme codes de vérification, et la taille sera beaucoup plus petite. De plus, le module ccap dispose de mécanismes de mise en cache pour tenter d'obtenir de meilleures performances.

Actuellement, ccap prend en charge les codes de vérification jpeg pour les systèmes Linux, et la taille a été réduite de 45 Ko à 6 Ko.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn