Heim  >  Artikel  >  Web-Frontend  >  Wie generiert das Node-Ccap-Modul einen Captcha-Bestätigungscode?

Wie generiert das Node-Ccap-Modul einen Captcha-Bestätigungscode?

零下一度
零下一度Original
2017-07-02 10:15:451307Durchsuche

In diesem Artikel wird hauptsächlich das Node-Ccap-Modul zum Generieren von Captcha vorgestellt.Der Herausgeber findet es ziemlich gut. Jetzt werde ich es mit Ihnen teilen und als Referenz geben. Folgen wir dem Editor, um einen Blick darauf zu werfen

Die Vorbereitungsarbeit ist wie folgt:

Diese Bibliothek hängt von Python2 ab .7.X und node-gyp, bitte installieren

1. Python

Fügen Sie nach der Installation das Installationsverzeichnis wie „C:Python27“ zur Systemumgebung hinzu variabler PATH.

2. Node-Gyp-Installation

Node-Gyp global installieren. Führen Sie npm install -g node-gyp aus.

3. Installieren Sie ccap


npm install ccap
Beachten Sie hier, dass Sie im Projektverzeichnis nicht den Ordner node_modules, Windows, hochladen dürfen Es ist nicht dasselbe wie Linux.

Wenn Sie Node für die Webentwicklung verwenden, stoßen Sie möglicherweise auf Bereiche, die Bestätigungscodes erfordern. Ich habe zuvor auf Github gesucht und festgestellt, dass es einige Klassenbibliotheken wie Node-Captcha gibt, die alle auf Drittanbieter angewiesen sind Grafikverarbeitungsbibliotheken oder -software, wie bei der Installation der Grafikbibliothek cario zuvor, war sehr aufwändig, aber tatsächlich haben wir nur einige kleine Funktionen dieser Grafikbibliotheken verwendet, wie z. B. das Ändern und Zuschneiden der Bildgröße oder das Generieren Verifizierungscodes.

Lassen Sie uns zunächst CImg vorstellen, die C++-Grafikbibliothek. CImg ist eine plattformübergreifende C++-

Bildverarbeitungsbibliothek, die eine Reihe von Funktionen wie Laden, Verarbeiten, Anzeigen und Speichern bietet Der attraktive Teil besteht darin, dass die gesamte Grafikbibliothek nur eine CImg.h-Datei enthält, sodass sie sehr portabel, umweltfreundlich und umweltfreundlich ist. Sie kann überall kompiliert und verwendet werden, ohne dass viele Abhängigkeiten installiert werden müssen. Deshalb wollte ich diese CImg-Grafikbibliothek verwenden, um eine einfache Demo zu erstellen, beginnend mit der Funktion zum Implementieren des Bestätigungscodes. Natürlich kann ich diese Bibliothek vollständig für andere Funktionen wie das Zuschneiden von Bildern verwenden.

Das ccap-Modul ist ein Paket, das auf der CImg-Grafikbibliothek basiert und die Verwendung durch Knoten ermöglicht. Aufgrund der Portabilität der CImg-Grafikbibliothek kann das ccap-Modul unabhängig arbeiten, ohne auf andere Drittanbieter angewiesen zu sein. Mit anderen Worten: Wenn Sie nur einen einfachen Verifizierungscode generieren möchten, benötigen Sie einfach das ccap-Modul.

Beispiel für ein generiertes Bild:

1. Installation: Allgemeine Methode: npm install ccap oder Download über Github, Adresse:

https:// github.com/DoubleSpout/ccap

2. Die Geschwindigkeit der Bestätigungscode-Generierung kann auf einem 2-CPU-Linux-64-Bit-Server 1200-mal/Sekunde erreichen Die Geschwindigkeit der Generierung des Bestätigungscodes beträgt etwa 600 Mal pro Sekunde.

3. Deklarationsmethode:


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

  }

});
Sie können eine ccap-Klasse über den obigen Code instanziieren. 1. Übergeben Sie keine Parameter, verwenden Sie alle Standardparameter, um den Bestätigungscode zu generieren. 2. Übergeben Sie nur die Breite, Höhe und den Versatz zur Instanziierung, passen Sie die Größe des Bildes und den Abstand zwischen dem Text im Bild an . Übergeben Sie ein Objekt. Zusätzlich zur Breite, Höhe und Versatz werden auch die Bildqualität und die Methode zur Generierung von Zufallszahlen übergeben. Das ccap-Modul verwendet die von der

benutzerdefinierten Funktion zurückgegebene Zeichenfolge Der Bildverifizierungscode ist 0-9 und 6 für eine Bit-Zufallszeichenfolge.

Theoretisch können viele verschiedene ccap-Instanzen erstellt werden, und sie haben keinen Einfluss aufeinander. Selbst wenn ein Multiprozessknoten über den Cluster gestartet wird und gleichzeitig der Bestätigungscode erstellt wird, ist dies der Fall wird keine gegenseitige Verriegelungswirkung entstehen.

Für die Bildqualität gilt dies nur für JPEG-Bilder. Wenn keine JPEG-Bibliothek installiert ist, können Sie nur unkomprimierte BMP-Grafiken verwenden. Die Größe ist größer, aber die Generierungsgeschwindigkeit ist höher.

4. Verwendungsmethode 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];
Nach der Instanziierung der ccap-Klasse erhalten Sie das Captcha-Objekt, das nur eines hat Externe Methode, get(), jeder Aufruf dieser Methode gibt den Bestätigungscode-Puffer und den entsprechenden Textzeichenfolgeninhalt zurück, gespeichert in einem Array, mit einer Struktur ähnlich dieser:


["captcha text","picture buffer"]
5. Ein einfaches Webbeispiel:


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/');
Das obige Beispiel gibt den Bestätigungscode an den Client zurück und gibt den Text des entsprechenden Bestätigungscodes aus Gleichzeitig wurde die Anfrage für favicon.ico abgefangen.

Das Ergebnis ist wie folgt:

Wenn Sie interessiert sind, können Sie die TX herunterladen und ausprobieren kann im Stammverzeichnis binden, jpeg.gyp überschreiben und in binding.gyp umbenennen und dann neu erstellen, um JPEG-Bilder als Bestätigungscodes zu verwenden, und die Größe wird viel kleiner sein. Darüber hinaus verfügt das ccap-Modul über einige Caching-Mechanismen, um eine bessere Leistung zu erzielen.

Derzeit unterstützt ccap JPEG-Verifizierungscodes für Linux-Systeme und die Größe wurde von 45 KB auf 6 KB reduziert.

Das obige ist der detaillierte Inhalt vonWie generiert das Node-Ccap-Modul einen Captcha-Bestätigungscode?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn