ΠΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π½Π° Go, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ Pixeldays ΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π°ΡΠ°ΠΊ. Π‘Π΅ΡΠ²ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠ°ΠΏΡΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΌΠ°, ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· OCR-ΡΠΈΡΡΠ΅ΠΌΡ.
- Language: Go 1.22+ (Π²ΡΠ±ΡΠ°Π½ Π·Π° Π²ΡΡΠΎΠΊΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²).
- Session Storage: Redis (TTL ΡΠ΅ΡΡΠΈΠΉ β 5 ΠΌΠΈΠ½ΡΡ) Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ stateless-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°.
- Security: ΠΠ°ΡΡΠΎΠΌΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΡΠΌ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΈ Π·Π°ΡΠΈΡΡ.
- Deployment: ΠΠΎΠ»Π½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Docker ΠΈ Docker Compose Π΄Π»Ρ CI/CD ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ API Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ:
GET /captchaβ ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ°ΠΏΡΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ID ΡΠ΅ΡΡΠΈΠΈ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.POST /captcha/verifyβ ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ (Go-ΡΠ΅ΡΠ²ΠΈΡ + Redis) Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
docker-compose up --buildΠ‘Π΅ΡΠ²ΠΈΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ: http://localhost:8080/captcha
An example of a captcha taken from the PixelDays interface
