recaptcha

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 7, 2023 License: GPL-3.0 Imports: 17 Imported by: 0

README

recaptcha

Golang captcha recognition library, by using Tesseract C++ and Opencv library.

Example

golang client
package main

import (
	"fmt"
	"github.com/sechelper/recaptcha"
	"log"
	"os"
	"path/filepath"
)

func main() {
	cli := recaptcha.NewClient("http://127.0.0.1:60080/v1/captcha/image", recaptcha.Options{
		PageSegMode: 13,
		Languages:   []string{"eng"},
		Whitelist:   "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
	})

	var captcha1381, _ = filepath.Abs("testdata/captcha/1381.png")
	file1381, err := os.Open(captcha1381)
	defer file1381.Close()
	if err != nil {
		panic(err)
	}

	cli.PushCaptcha(recaptcha.Captcha{Content: file1381, ID: file1381.Name()})

	var captcha1133, _ = filepath.Abs("testdata/captcha/1133.png")
	file1133, err := os.Open(captcha1133)
	defer file1133.Close()
	if err != nil {
		panic(err)
	}
	cli.PushCaptcha(recaptcha.Captcha{Content: file1133, ID: file1133.Name()})
	rec, err := cli.Image()

	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(rec)
}
curl
$ curl -X POST -H "Content-Type: multipart/form-data"   -F "captcha[]=@testdata/captcha/1577.png" -F "captcha[]=@testdata/captcha/1597.png" -F 'options={"psm":13,"languages":["eng"], "whitelist":"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"}' http://127.0.0.1:60080/v1/captcha/image
$ curl -X POST -H "Content-Type: application/json" -d '{"psm":13,"languages":["eng"], "whitelist":"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","captcha":[{"id":"1653.png", "text":"iVBORw0KGgoAAAANSUhEUgAAACwAAAASCAMAAAAXKszuAAACZ1BMVEX19fXPPeCcPI3dXcHmPoh0JMAeiwlvj2aashQWjtBCXk+MymZH/Yz9c8wcG1ueBUMh3qIxTwEF4CDdJKokktFcrzhR2YsA8hngXfyU663k+xE8kaW3lxp9lazPzX5vYPiWAKzzj/pBxldMdIdhp06LKJ4AG5BdJcdg6h4QjNxvOnpMXM/FChjqUjITXo8aZ1ZtRHebBdAdez80cBrRYBOFyBUw4zDPRMsTou4nmRit6A7S/02H5R+YABiNEV7UmhHUAA71OxnJKFj7n5JZyOFXL5bbZcEXRm2hR2SD9+/7sWvGB7aWhwyizp5gAaiAudnFACQg9s8RsC4v/FO/Gh9zk3yqzC9H/FhLMGz16TILmgshVtqxalRqbuRZapREYeqMrKYOI7Yv7P8AA6/HkmrxbShEtPWh1Ngb2h/q/Xh5VYiWIZrzoyp2wV1uiWiC1ZPogjZs23QMjlr6JzGEzwbMXp+CusS/6dDctnExQXn60E+Tm9zL2rw14XghW2M+DR2mVggXBL0nGo5kiR4fDdbIe+bA2AWXvyM7/pxoGgGh/LInxL/m0lkn0aXT8dqyWvXi01rDugL0hhGLiYOUxixhBfaXVp9g1p+PbBz2fdwRdl5M/6ezDePilBxWqq4CpLTYLl1Ux14onVK7oVKPXBGNsoS22/rDddn1AyQJdIgvMbDCMU+8iR438wxQnDTk/H8lZwHi4bAuYoqXpAR+molfMEudajQW6OEAfcyVd4JEPvYQuUbyxuPIJiJ2OJ2DR8/Jg28E35202JIJnu+rc21LraMtFmYjQwl6Z0gbAnx3NJ1JlMWIwlMTpk6jAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABFklEQVQokWNgAAEeBhiYzqAMonYxMBTBxYQZvBiwgWQgTkRwS7EqQoDdBOSRwEzswtHIHEZGKIMJCICUATMEqDKYMqxnAQIUtVDFNkwg9UAGMzOQKAcJgRUiqWaEKWZi2sZQxgBSrAZUbIRkHEL1cQZRiOJ5TAxyINoTZDIz2HR0tSCztaEmM/SCXQFRCVMNcXMhiLkA5sFjDGDfgXAOA8MyBoRqNJOXAwktBiZdqPlAsA9ZMUj1QbSgAyqrhSiGKIOQXWhGgxVvhaiDORqqFqRsMlrQwc2GqGXokYaFRj48UrYwIINZDGigFUymAXF7AEzsJLoiBobDmEKYoJ/BHUw3n4YL+YtgKhNEMNdA6cx1UMZCCAUArYEe3879S5oAAAAASUVORK5CYII="}]}' http://127.0.0.1:60080/v1/captcha/base64

Thanks

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultTesseract = New("tesseract")

Functions

func RecCaptchaBase64Handle

func RecCaptchaBase64Handle(c *gin.Context)

func RecCaptchaImageHandle

func RecCaptchaImageHandle(c *gin.Context)

RecCaptchaImageHandle https://gin-gonic.com/docs/examples/upload-file/multiple-file/

func Recognition

func Recognition(captcha []byte, opt *Options) string

func ThresholdBinary

func ThresholdBinary(buf []byte) ([]byte, error)

Types

type Captcha

type Captcha struct {
	ID      string
	Content io.Reader
}

type CaptchaBase64

type CaptchaBase64 struct {
	Captcha []CaptchaText `json:"captcha"`
	Options
}

type CaptchaText

type CaptchaText struct {
	ID   string `json:"id"`
	Text string `json:"text"`
}

type Options

type Options struct {
	Languages   []string `json:"languages"`
	Whitelist   string   `json:"whitelist"`
	PageSegMode int      `json:"psm"`
}

type RecaptchaClient

type RecaptchaClient struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(url string, options Options) *RecaptchaClient

func (*RecaptchaClient) Base64

func (c *RecaptchaClient) Base64() ([]CaptchaText, error)

func (*RecaptchaClient) Image

func (c *RecaptchaClient) Image() ([]CaptchaText, error)

func (*RecaptchaClient) PushCaptcha

func (c *RecaptchaClient) PushCaptcha(captcha Captcha)

type Result

type Result struct {
	Status  Status      `json:"status"`
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

type Status

type Status string
const (
	Success Status = "success"
	Error          = "error"
)

type Tesseract

type Tesseract struct {
	// contains filtered or unexported fields
}

func New

func New(path string) *Tesseract

func (*Tesseract) Run

func (tes *Tesseract) Run(captcha string, options map[string]interface{}, std ...*os.File) error

Run

options => map[string]interface{}{
	"-c":    []string{"tessedit_char_whitelist=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"},
	"--oem": "1",
	"--psm": "13",
}

func (*Tesseract) SetPath

func (tes *Tesseract) SetPath(path string) error

func (*Tesseract) SetTessdata

func (tes *Tesseract) SetTessdata(tessdata string) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL