core

package
v0.5.4 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2025 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrCaptcha = errors.New("captcha detected")
View Source
var ErrSearchTimeout = errors.New("timeout. Cannot find element on page")

Functions

func ConvertSearchResultsMap added in v0.4.1

func ConvertSearchResultsMap(searchResultsMap map[string]SearchResult) *[]SearchResult

func InitLogger

func InitLogger(isVerbose, isDebug bool)

func LogWithEngine added in v0.5.3

func LogWithEngine(level logrus.Level, engine, message string, args ...interface{})

LogWithEngine logs a message with engine information (deprecated - use EngineLogger instead)

Types

type Browser

type Browser struct {
	BrowserOpts

	CaptchaSolver *CaptchaSolver
	// contains filtered or unexported fields
}

func NewBrowser

func NewBrowser(opts BrowserOpts) (*Browser, error)

func (*Browser) Close

func (b *Browser) Close() error

func (*Browser) IsInitialized

func (b *Browser) IsInitialized() bool

Check whether browser instance is already created

func (*Browser) Navigate

func (b *Browser) Navigate(URL string) (*rod.Page, error)

Open URL

type BrowserOpts

type BrowserOpts struct {
	IsHeadless          bool          // Use browser interface
	IsLeakless          bool          // Force to kill browser
	Timeout             time.Duration // Timeout
	LanguageCode        string
	WaitRequests        bool          // Wait requests to complete after navigation
	LeavePageOpen       bool          // Leave pages and browser open
	WaitLoadTime        time.Duration // Time to wait till page loads
	CaptchaSolverApiKey string        // 2Captcha api key
	ProxyURL            string        // Proxy URL
	Insecure            bool          // Allow insecure TLS connections
	UseStealth          bool          // Use go-rod stealth plugin

}

func (*BrowserOpts) Check added in v0.2.1

func (o *BrowserOpts) Check()

Initialize browser parameters with default values if they are not set

type CaptchaSolver added in v0.4.1

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

func NewSolver added in v0.4.1

func NewSolver(apikey string) *CaptchaSolver

func (*CaptchaSolver) SolveReCaptcha2 added in v0.4.1

func (cs *CaptchaSolver) SolveReCaptcha2(sitekey, pageUrl, dataS string) (string, string, error)

type EngineLogger added in v0.5.3

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

EngineLogger provides simplified logging for search engines

func NewEngineLogger added in v0.5.3

func NewEngineLogger(engine string) *EngineLogger

NewEngineLogger creates a new logger for a specific search engine

func (*EngineLogger) Debug added in v0.5.3

func (el *EngineLogger) Debug(message string, args ...interface{})

Debug logs a debug message

func (*EngineLogger) Error added in v0.5.3

func (el *EngineLogger) Error(message string, args ...interface{})

Error logs an error message

func (*EngineLogger) Fatal added in v0.5.3

func (el *EngineLogger) Fatal(message string, args ...interface{})

Fatal logs a fatal message

func (*EngineLogger) Info added in v0.5.3

func (el *EngineLogger) Info(message string, args ...interface{})

Info logs an info message

func (*EngineLogger) Panic added in v0.5.3

func (el *EngineLogger) Panic(message string, args ...interface{})

Panic logs a panic message

func (*EngineLogger) Warn added in v0.5.3

func (el *EngineLogger) Warn(message string, args ...interface{})

Warn logs a warning message

type MegaSearchResult added in v0.5.3

type MegaSearchResult struct {
	SearchResult
	Engine string `json:"engine"`
}

MegaSearchResult represents a search result with engine information

type Query

type Query struct {
	Text         string
	LangCode     string // eg. EN, ES, RU...
	DateInterval string // format: YYYYMMDD..YYYMMDD - 20181010..20231010
	Filetype     string // File extension to search.
	Site         string // Search site
	Limit        int    // Limit the number of results
	Answers      bool   // Include question and answers from SERP page to results with negative indexes
	ProxyURL     string // Proxy URL for raw requests
	Insecure     bool   // Allow insecure TLS connections
}

func (*Query) InitFromContext

func (searchQuery *Query) InitFromContext(reqCtx *fiber.Ctx) error

func (Query) IsEmpty

func (q Query) IsEmpty() bool

type SearchEngine

type SearchEngine interface {
	Search(Query) ([]SearchResult, error)
	SearchImage(Query) ([]SearchResult, error)
	IsInitialized() bool
	Name() string
	GetRateLimiter() *rate.Limiter
}

type SearchEngineOptions added in v0.2.1

type SearchEngineOptions struct {
	RateRequests    int   `mapstructure:"rate_requests"`
	RateTime        int64 `mapstructure:"rate_seconds"`
	RateBurst       int   `mapstructure:"rate_burst"`
	SelectorTimeout int64 `mapstructure:"selector_timeout"` // CSS selector timeout in seconds
	IsSolveCaptcha  bool  `mapstructure:"captcha"`
}

func (*SearchEngineOptions) GetRatelimit added in v0.2.1

func (o *SearchEngineOptions) GetRatelimit() time.Duration

func (*SearchEngineOptions) GetSelectorTimeout added in v0.2.1

func (o *SearchEngineOptions) GetSelectorTimeout() time.Duration

func (*SearchEngineOptions) Init added in v0.2.1

func (o *SearchEngineOptions) Init()

type SearchResult

type SearchResult struct {
	Rank        int    `json:"rank"`
	URL         string `json:"url"`
	Title       string `json:"title"`
	Description string `json:"description"`
	Ad          bool   `json:"ad"`
}

func DeduplicateResults added in v0.4.1

func DeduplicateResults(results []SearchResult) []SearchResult

type Server

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

func NewServer

func NewServer(host string, port int, searchEngines ...SearchEngine) *Server

func (*Server) Listen

func (s *Server) Listen() error

func (*Server) Shutdown

func (s *Server) Shutdown() error

Jump to

Keyboard shortcuts

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