CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart), web sitelerinin otomatik bot saldırılarından korunmasına yardımcı olan bir güvenlik özelliğidir. Python kullanarak basit bir CAPTCHA oluşturmak için aşağıdaki adımları takip edebilirsiniz:
Gerekli kütüphaneleri yükleyin. Python PIL (Python Imaging Library) kütüphanesi, görüntü oluşturma ve işleme için birçok araç sağlar. Ayrıca, random modülünü de kullanacağız.
python
from PIL import Image, ImageDraw, ImageFont
import random
Boş bir PIL görüntü nesnesi oluşturun ve ImageDraw nesnesini kullanarak rastgele sayı ve harflerden oluşan bir dizeyi görüntüye yazdırın.
width, height = 200, 100
image = Image.new(‘RGB’, (width, height), ‘white’)
draw = ImageDraw.Draw(image)
text = ''.join(random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', k=6))
font = ImageFont.truetype('arial.ttf', 36)
textwidth, textheight = draw.textsize(text, font)
x = (width - textwidth) / 2
y = (height - textheight) / 2
draw.text((x, y), text, font=font, fill=(0, 0, 0))
Görüntüyü bir dosyaya kaydedin.
python
image.save(‘captcha.png’)
Bu kod parçası, “captcha.png” adlı bir dosya oluşturacaktır. Bu dosya, oluşturulan CAPTCHA’yı içerecektir.
Tam kod şu şekilde olabilir:
from PIL import Image, ImageDraw, ImageFont
import random
# boş bir PIL görüntü nesnesi oluşturma
width, height = 200, 100
image = Image.new('RGB', (width, height), 'white')
draw = ImageDraw.Draw(image)
# rastgele sayı ve harflerden oluşan dize oluşturma
text = ''.join(random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', k=6))
font = ImageFont.truetype('arial.ttf', 36)
textwidth, textheight = draw.textsize(text, font)
# metnin konumunu hesaplama ve çizme
x = (width - textwidth) / 2
y = (height - textheight) / 2
draw.text((x, y), text, font=font, fill=(0, 0, 0))
# görüntüyü kaydetme
image.save('captcha.png')
Bu kod, rastgele sayı ve harflerden oluşan bir CAPTCHA oluşturacaktır. CAPTCHA’nın daha güvenli hale getirilmesi için bu örneği geliştirmek mümkündür. Örneğin, CAPTCHA’nın daha karmaşık bir yapısı olabilir veya farklı fontlar kullanılabilir.
