From fd3b5ce79e7161b0c5e8ab2ce3f7ec5caf40b88c Mon Sep 17 00:00:00 2001 From: nite07 Date: Thu, 27 Feb 2025 13:34:56 +1100 Subject: [PATCH] Lazy initialization Flaresolverr.cycletlsC --- flaresolverr.go | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/flaresolverr.go b/flaresolverr.go index ec6b9fb..e8ac197 100644 --- a/flaresolverr.go +++ b/flaresolverr.go @@ -30,11 +30,6 @@ func GetInstance(URL string, sessionID string, proxy string) (*Flaresolverr, err sessionID: sessionID, proxy: proxy, } - ua, ja3, err := flareSolverr.GetJa3AndUserAgent() - if err != nil { - return nil, err - } - flareSolverr.cycletlsC = NewCycletlsClient(ja3, ua) instances[URL] = flareSolverr return flareSolverr, nil } @@ -144,19 +139,36 @@ func (f *Flaresolverr) GetJa3AndUserAgent() (ua string, ja3 string, err error) { return resp.Solution.UserAgent, resp.Solution.RawResponse.(map[string]any)["tls"].(map[string]any)["ja3"].(string), nil } -func (f *Flaresolverr) SimulateGet(URL string, opts *SimulateOptions) (cycletls.Response, error) { +func (f *Flaresolverr) preSimulateRequest(opts *SimulateOptions) error { + if f.cycletlsC == nil { + ua, ja3, err := f.GetJa3AndUserAgent() + if err != nil { + return err + } + f.cycletlsC = NewCycletlsClient(ja3, ua) + } opts.Cookies = ConvertToCycletlsCookies(opts.HttpCookies) if f.proxy != "" { opts.Proxy = f.proxy } + return nil +} + +func (f *Flaresolverr) SimulateGet(URL string, opts *SimulateOptions) (cycletls.Response, error) { + err := f.preSimulateRequest(opts) + if err != nil { + return cycletls.Response{}, err + } + return f.cycletlsC.Get(URL, &opts.Options) } func (f *Flaresolverr) SimulatePost(URL string, opts *SimulateOptions) (cycletls.Response, error) { - opts.Cookies = ConvertToCycletlsCookies(opts.HttpCookies) - if f.proxy != "" { - opts.Proxy = f.proxy + err := f.preSimulateRequest(opts) + if err != nil { + return cycletls.Response{}, err } + return f.cycletlsC.Post(URL, &opts.Options) }