يتم مواجهة العديد من الأماكن التي يلزم فيها رموز التحقق عند استخدام العقدة لتطوير الويب. في السابق ، تم البحث في Github ، كانت هناك بعض مكتبات الفصل مثل Node-Captcha ، والتي تعتمد جميعها على مكتبات أو برامج معالجة الرسومات التابعة لجهة خارجية. على سبيل المثال ، عندما قمت بتثبيت مكتبة الرسومات Cario ، كان ذلك كثيرًا من الجهد ، ولكن في الواقع استخدمنا القليل من الوظائف الصغيرة لمكتبات الرسومات هذه ، مثل تعديل وحجم الصورة أو إنتاج رموز التحقق.
دعنا أولاً نقدم مكتبة الرسومات CIMG C ++. CIMG عبارة عن مكتبة معالجة الصور C ++ عبر المنصات التي توفر سلسلة من الوظائف مثل التحميل والمعالجة والعرض والاحفظ. الشيء الأكثر جاذبية هو أن مكتبة الرسومات بأكملها ليست سوى ملف cimg.h واحد ، لذلك فهي محمولة للغاية وخضراء وصديقة للبيئة. يمكن تجميعها واستخدامها في أي مكان تذهب إليه دون تثبيت تبعية كبيرة للدفع. لذلك أردت استخدام مكتبة الرسومات CIMG هذه لصنع عرض تجريبي بسيط ، بدءًا من وظيفة تنفيذ رمز التحقق ، وبالطبع يمكنني استخدام هذه المكتبة تمامًا للقيام بوظائف أخرى مثل محاصرة الصور.
تعتمد وحدة CCAP على تغليف مكتبة رسومات CIMG ، مما يسمح باستخدامها بواسطة العقدة. نظرًا لقابلية مكتبة رسومات CIMG ، يمكن أن تعمل وحدة CCAP بشكل مستقل دون الاعتماد على أي مكتبة أو برنامج رسومات طرف ثالث آخر. بمعنى آخر ، إذا كنت ترغب فقط في إنشاء رمز التحقق البسيط ، فما عليك سوى طلب وحدة CCAP.
1. التثبيت:
الطريقة العامة: NPM تثبيت CCAP
أو قم بتنزيله من خلال github ، العنوان: https://github.com/doublespout/ccap
ملاحظة: قد تكون هناك أخطاء أثناء عملية التثبيت. يرجى تثبيت حزمة التبعية المقابلة وفقًا لمطالبة الخطأ.
2. الأداء:
يمكن أن تصل سرعة توليد رموز التحقق على خادم 2CPU Linux 64-bit إلى 1200 مرة/ثانية. الصورة التي تم إنشاؤها بواسطة الاختبار هي BMP. سرعة توليد رمز التحقق من صورة JPEG حوالي 600 مرة/ثانية.
3. طريقة الإعلان:
نسخة الكود كما يلي:
var ccap = require ('ccap') ؛
var captcha1 = ccap () ؛
var captcha2 = ccap (العرض ، الارتفاع ، الإزاحة) ؛
var captcha3 = ccap ({
العرض: 256 ، // العرض ، الافتراضي هو 256
يمكن إنشاء إنشاء فئة CCAP من خلال الكود أعلاه. 1. لا يتم تمرير أي معلمات ، يتم استخدام جميع المعلمات الافتراضية لإنشاء رموز التحقق. 2. فقط عرض العرض ، والطول ، والإزاحة إلى مثيله ، اضبط حجم الصورة ، والفاصل الزمني بين الأحرف في الصورة 3. تمرير كائن. بالإضافة إلى العرض والارتفاع والإزاحة ، فإنه يمرر أيضًا جودة الصورة وطريقة توليد أرقام عشوائية. ستستخدم وحدة CCAP السلسلة التي تم إرجاعها بواسطة الوظيفة المخصصة كمحتوى رمز التحقق من الصورة. الافتراضي هو 0-9 ، وسيتم اتباع سلسلة 6 بت من AZ.
من الناحية النظرية ، يمكن إنتاج العديد من مثيلات CCAP المختلفة ، وليس لها أي تأثير على بعضها البعض ، لذلك حتى لو بدأت العقد متعددة العمليات من خلال الكتلة وإنتاج رموز التحقق في نفس الوقت ، لا يوجد أي تأثير على قفل بعضها البعض.
جودة الصورة صالحة فقط لصور JPEG. إذا لم يتم تثبيت مكتبة JPEG LIB ، فيمكنك فقط استخدام رسومات BMP غير المضغوطة ، والتي تكون كبيرة نسبيًا في الحجم ، لكن سرعة التوليد سريعة نسبيًا.
4. استخدام الطريقة ، get ():
نسخة الكود كما يلي:
الارتفاع: 60 ، // ارتفاع الضبط ، الافتراضي هو 60
الإزاحة: 40 ، // تعيين تباعد النص ، الافتراضي هو 40
الجودة: 100 ، // تعيين جودة الموافقة المسبقة عن علم ، الافتراضي هو 50
إنشاء: function () {// مخصص الوظيفة لإنشاء نص captcha
// إنشاء نص captcha هنا
إرجاع النص ؛ // إرجاع نص captcha
}
}) ؛
بعد إنشاء فئة CCAP ، ستحصل على كائن Captcha. يحتوي هذا الكائن على طريقة خارجية واحدة فقط ، GET (). في كل مرة تسمى هذه الطريقة ، ستُرجع مخزن المؤسسة لمحتوى رمز التحقق ومحتوى سلسلة النص المقابل ، وحفظه في صفيف ، بهيكل مشابه لهذا:
نسخة الكود كما يلي:
["نص Captcha" ، "Buffer Picture"]
5. مثال على الويب بسيط:
نسخة الكود كما يلي:
var http = require ('http') ؛
var ccap = require ('ccap') () ؛ // فئة CCAP
http.createserver (وظيفة (طلب ، استجابة) {
if (request.url == '/favicon.ico'mresurn Response.end (' ') ؛ // intercept request favicon.ico
var ary = ccap.get () ؛
var txt = ary [0] ؛
var buf = ary [1] ؛
استجابة.
console.log (txt) ؛
}). الاستماع (8124) ؛
console.log ('خادم يعمل على http://127.0.0.1:8124/') ؛
ملاحظة: يمكن تعديل بعض معلمات التعليمات البرمجية وفقًا لبيئتها الخاصة.