Rumah >pembangunan bahagian belakang >Tutorial Python >Buat penjana captcha yang menyeronokkan menggunakan wxPython: dari awal
Senario aplikasi CAPTCHA terutamanya dalam senario di mana identiti pengguna perlu disahkan atau untuk mengelakkan niat jahat serangan, seperti berikut Senaraikan beberapa senario aplikasi biasa:
Pengesahan log masuk pengguna: Gunakan CAPTCHA apabila pengguna log masuk untuk menghalang robot automatik daripada log masuk ke akaun mereka.
Pengesahan pendaftaran tapak web: Gunakan CAPTCHA untuk menghalang bot automatik daripada mendaftarkan akaun.
Sekatan perangkak web: Sesetengah tapak web mungkin menyekat akses perangkak Menggunakan CAPTCHA boleh menghalang serangan perangkak berniat jahat.
Penapisan spam mel: Gunakan CAPTCHA untuk menghalang robot automatik daripada menghantar spam.
Tinjauan Dalam Talian: Gunakan CAPTCHA untuk memastikan ketepatan dan kredibiliti hasil tinjauan dalam talian.
Komen Tapak Web: Gunakan CAPTCHA untuk menghalang bot automatik daripada menyiarkan ulasan berniat jahat di tapak web anda.
Pengesahan: Gunakan CAPTCHA untuk memastikan bahawa hanya pengguna sebenar boleh mengakses maklumat atau sumber sensitif.
Secara amnya, senario aplikasi CAPTCHA adalah sangat luas dalam senario di mana identiti pengguna perlu disahkan atau untuk menghalang serangan robot automatik.
import wx import random import string from PIL import Image, ImageDraw, ImageFont class MyFrame(wx.Frame): def __init__(self, parent): super().__init__(parent, title="CAPTCHA Generator", size=(300, 200)) panel = wx.Panel(self) button = wx.Button(panel, label="Generate CAPTCHA", pos=(0, 0)) self.Bind(wx.EVT_BUTTON, self.on_button_click, button) # 创建一个静态图片控件 self.static_bitmap = wx.StaticBitmap(panel, -1, size=(200, 80), pos=(40, 60)) def on_button_click(self, event): # Set the dimensions of the image IMAGE_WIDTH = 200 IMAGE_HEIGHT = 80 # Generate a random string of characters to use as the CAPTCHA text captcha_text = ''.join(random.choices(string.ascii_uppercase + string.digits, k=6)) # Create a blank image and get a drawing context image = Image.new('RGB', (IMAGE_WIDTH, IMAGE_HEIGHT), color = (255, 255, 255)) draw = ImageDraw.Draw(image) # Generate a random color for the text text_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) # Load a TrueType font file to use for the text font = ImageFont.truetype('arial.ttf', 36) # Draw the CAPTCHA text on the image x0, y0, x1, y1 = draw.textbbox((0, 0), captcha_text, font=font) text_width = x1 - x0 text_height = y1 - y0 x = (IMAGE_WIDTH - text_width) / 2 y = (IMAGE_HEIGHT - text_height) / 2 draw.text((x, y), captcha_text, fill=text_color, font=font) # Add some noise to the image by drawing randomly placed dots for i in range(500): x = random.randint(0, IMAGE_WIDTH - 1) y = random.randint(0, IMAGE_HEIGHT - 1) draw.point((x, y), fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))) # Save the image as a PNG file with the CAPTCHA text as the filename image.save(captcha_text + '.png', 'PNG') # 加载PNG图片文件并显示在静态图片控件中 bitmap = wx.Bitmap(captcha_text + '.png', wx.BITMAP_TYPE_PNG) self.static_bitmap.SetBitmap(bitmap) if __name__ == '__main__': app = wx.App() frame = MyFrame(None) frame.Show(True) app.MainLoop()
Atas ialah kandungan terperinci Buat penjana captcha yang menyeronokkan menggunakan wxPython: dari awal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!