کپچا برای وب اپلیکیشن فلسک Flask-captcha2

کپچا ها امروزه بخش مهمی از هر وب اپلیکیشنی هستن، اگر نمی دونید کپچا چیه پست قبلی رو بخونید https://virgool.io/@m_19012785/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%B9%DA%A9%D8%B3-base64-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A9%D9%BE%DA%86%D8%A7-eaxidfghcssl حالا شما که توسعه دهنده فلسک هستید حتما تو بعضی از موارد نیاز دارید کپچا توی فرم های سایتتون قرار بدید برای افزایش امنیت و ...من توی هفته اخیر نسبتا سر یه پروژه نیاز به کپچا داشتم از اون طرف اکثر افزونه هایی که برای کپچا توی فلسک هستن نسبتا قدیمی هستن و امروزه کار نمی کنن پس دست به کار شدم که یه دونه خودم بنویسم و نتیجه اش شد یه پکیج جدید پایتونی به اسم flask-captcha2 این افزونه بهتون کمک میکنه به راحت ترین شکل ممکن کپچا های گوگل رو با برنامه فلسکی خودتون ادغام کنید و امنیت وب اپلیکیشنتون رو چند برابر بیشتر کنیدpip install flask-captcha2لینک مخزن این پکیج:https://github.com/alisharify7/flask_captcha2لینک پکیج توی pypi:https://pypi.org/project/flask-captcha2/خب حالا که پکیج رو نصب کردیم چجوری میتونیم توی پروژه خودمون ازش استفاده کنیم؟خب مثل هر افزونه دیگه ای باید اول از کلاس اصلی یه ابجکت بسازیمfrom flask import Flask from flask_captcha2 import FlaskCaptcha app = Flask(__name__) # update app config app.config[RECAPTCHA_PRIVATE_KEY] = Private key app.config[RECAPTCHA_PUBLIC_KEY] = Public Key app.config[RECAPTCHA_ENABLED] = True or False # create captcha instance captcha = FlaskCaptcha(app)با استفاده از کلاس FlaskCaptcha یه ابجکت میسازیم و instance اپ فلسک رو بهش پاس میدیم ولی حتما قبلش باید یه سری configuration به اپ اضافه کنیمتمام تنظیماتی که افزونه قبول میکنه:# این کلید ها رو باید توی پنل خودتون توی گوگل دریافت کنید app.config[RECAPTCHA_PRIVATE_KEY] = Put Your private<secret> key here app.config[RECAPTCHA_PUBLIC_KEY] = Put your public<site> key here # tabindex المنت کپچا توی صفحه html app.config[RECAPTCHA_TABINDEX] = Tab index for Captcha Widget # زبان کپچا دیفالت روی en app.config[RECAPTCHA_LANGUAGE] = Captcha Language <default en> # سایز کپچا دیفالت روی Normal app.config[RECAPTCHA_SIZE] = Captcha Widget Size default normal <compact،, normal, invisible> # نوع کپچا دیفالت روی Image app.config[RECAPTCHA_TYPE] = Captcha type default image # تم رنگی کپچا دیفالت روی light app.config[&quotRECAPTCHA_THEME] = Captcha theme default light <dark, light> # وضعیت کپچا دیفالت روی True app.config[RECAPTCHA_ENABLED] = Captcha status default True <True, False>خب حالا که تنظیمات رو انجام دادیم میتونیم از کپچا توی فرم های html وب اپلیکیشنمون استفاده کنیمبرای این کار میتونیم از فیلتر captchaField توی html خودتون استفاده کنیم و خودکار این فیلتر کپچا رو برامون رندر می گیره<!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <meta http-equiv=X-UA-Compatible content=IE=edge> <meta name=viewport content=width=device-width, initial-scale=1.0> <title>Document</title> </head> <body> <form method=POST> <input type=text name=username> <input type=submit value=submit> {# With captchaField filter you can render captcha widget in your html code #} {{ captchaField } </form> </body> </html>و بعد توی route ای که این درخواست رو قبول میکنه میتونیم با متد is_verify یِ ابجکتی که از FlaskCaptcha ساختیم کپچا رو تایید کنیم این متد true/false بر میگردونه captcha = FlaskCaptcha(app) @app.route(/, methods=[POST]) def index(): # with is_verify method verify the captcha if captcha.is_verify(): return (Captcha is ok.) else: return (Try again!) امیدوارم به کارتون بیاد و استفاده کنید :)و اگر خواستید میتونید Pull request هم بدید برای اضافه کردن فیچر و ... مرسی که تا اینجا خوندید ?