refactor: Improve parameter naming for clarity in URL arguments

This commit is contained in:
2025-11-19 13:03:28 +00:00
parent 5ae735ce8d
commit 2115262f6e
3 changed files with 31 additions and 21 deletions

View File

@@ -20,14 +20,14 @@ func NewCycletlsClient(ja3, userAgent string) *cycletlsClient {
} }
} }
func (c *cycletlsClient) Get(URL string, opts *cycletls.Options) (cycletls.Response, error) { func (c *cycletlsClient) Get(reqURL string, opts *cycletls.Options) (cycletls.Response, error) {
opts.Ja3 = c.ja3 opts.Ja3 = c.ja3
opts.UserAgent = c.userAgent opts.UserAgent = c.userAgent
return c.client.Do(URL, *opts, http.MethodGet) return c.client.Do(reqURL, *opts, http.MethodGet)
} }
func (c *cycletlsClient) Post(URL string, opts *cycletls.Options) (cycletls.Response, error) { func (c *cycletlsClient) Post(reqURL string, opts *cycletls.Options) (cycletls.Response, error) {
opts.Ja3 = c.ja3 opts.Ja3 = c.ja3
opts.UserAgent = c.userAgent opts.UserAgent = c.userAgent
return c.client.Do(URL, *opts, http.MethodPost) return c.client.Do(reqURL, *opts, http.MethodPost)
} }

View File

@@ -21,17 +21,17 @@ type Flaresolverr struct {
proxy string proxy string
} }
func GetInstance(URL string, sessionID string, proxy string) (*Flaresolverr, error) { func GetInstance(flaresolverrURL string, sessionID string, proxy string) (*Flaresolverr, error) {
if instance, ok := instances[URL]; ok { if instance, ok := instances[flaresolverrURL]; ok {
return instance, nil return instance, nil
} }
flareSolverr := &Flaresolverr{ flareSolverr := &Flaresolverr{
url: URL, url: flaresolverrURL,
v1Url: strings.TrimSuffix(URL, "/") + "/v1", v1Url: strings.TrimSuffix(flaresolverrURL, "/") + "/v1",
sessionID: sessionID, sessionID: sessionID,
proxy: proxy, proxy: proxy,
} }
instances[URL] = flareSolverr instances[flaresolverrURL] = flareSolverr
return flareSolverr, nil return flareSolverr, nil
} }
@@ -82,27 +82,27 @@ func (f *Flaresolverr) requestV1(req *V1RequestBase) (*V1ResponseBase, error) {
return &res, nil return &res, nil
} }
func (f *Flaresolverr) GetV1(URL string, req *V1RequestBase) (*V1ResponseBase, error) { func (f *Flaresolverr) GetV1(reqURL string, req *V1RequestBase) (*V1ResponseBase, error) {
if req == nil { if req == nil {
req = &V1RequestBase{ req = &V1RequestBase{
MaxTimeout: 60000, // 60 秒 MaxTimeout: 60000, // 60 秒
} }
} }
req.Cmd = "request.get" req.Cmd = "request.get"
req.URL = URL req.URL = reqURL
req.Session = f.sessionID req.Session = f.sessionID
return f.requestV1(req) return f.requestV1(req)
} }
func (f *Flaresolverr) PostV1(URL string, req *V1RequestBase) (*V1ResponseBase, error) { func (f *Flaresolverr) PostV1(reqURL string, req *V1RequestBase) (*V1ResponseBase, error) {
if req == nil { if req == nil {
req = &V1RequestBase{ req = &V1RequestBase{
MaxTimeout: 60000, // 60 秒 MaxTimeout: 60000, // 60 秒
} }
} }
req.Cmd = "request.post" req.Cmd = "request.post"
req.URL = URL req.URL = reqURL
req.Session = f.sessionID req.Session = f.sessionID
return f.requestV1(req) return f.requestV1(req)
@@ -157,6 +157,12 @@ func (f *Flaresolverr) preSimulateRequest(opts *SimulateOptions) error {
} }
f.cycletlsC = NewCycletlsClient(ja3, ua) f.cycletlsC = NewCycletlsClient(ja3, ua)
} }
if opts == nil {
opts = &SimulateOptions{}
}
if opts.HttpCookies == nil {
opts.HttpCookies = []*http.Cookie{}
}
opts.Cookies = ConvertToCycletlsCookies(opts.HttpCookies) opts.Cookies = ConvertToCycletlsCookies(opts.HttpCookies)
if f.proxy != "" { if f.proxy != "" {
opts.Proxy = f.proxy opts.Proxy = f.proxy
@@ -164,26 +170,30 @@ func (f *Flaresolverr) preSimulateRequest(opts *SimulateOptions) error {
return nil return nil
} }
func (f *Flaresolverr) SimulateGet(URL string, opts *SimulateOptions) (cycletls.Response, error) { func (f *Flaresolverr) SimulateGet(reqURL string, opts *SimulateOptions) (cycletls.Response, error) {
if opts == nil {
opts = &SimulateOptions{}
}
err := f.preSimulateRequest(opts) err := f.preSimulateRequest(opts)
if err != nil { if err != nil {
return cycletls.Response{}, err return cycletls.Response{}, err
} }
return f.cycletlsC.Get(reqURL, &opts.Options)
return f.cycletlsC.Get(URL, opts.Options)
} }
func (f *Flaresolverr) SimulatePost(URL string, opts *SimulateOptions) (cycletls.Response, error) { func (f *Flaresolverr) SimulatePost(reqURL string, opts *SimulateOptions) (cycletls.Response, error) {
if opts == nil {
opts = &SimulateOptions{}
}
err := f.preSimulateRequest(opts) err := f.preSimulateRequest(opts)
if err != nil { if err != nil {
return cycletls.Response{}, err return cycletls.Response{}, err
} }
return f.cycletlsC.Post(reqURL, &opts.Options)
return f.cycletlsC.Post(URL, opts.Options)
} }
type SimulateOptions struct { type SimulateOptions struct {
*cycletls.Options cycletls.Options
HttpCookies []*http.Cookie HttpCookies []*http.Cookie
} }

View File

@@ -45,7 +45,7 @@ func TestImitateGet(t *testing.T) {
cookies := resp.Solution.Cookies cookies := resp.Solution.Cookies
resp1, err := f.SimulateGet("https://nopecha.com/demo/cloudflare", &flaresolverr.SimulateOptions{ resp1, err := f.SimulateGet("https://nopecha.com/demo/cloudflare", &flaresolverr.SimulateOptions{
HttpCookies: cookies, HttpCookies: cookies,
Options: &cycletls.Options{ Options: cycletls.Options{
ForceHTTP3: true, ForceHTTP3: true,
}, },
}) // ImitateGet uses cookies to simulate browser requests and also simulates the browser's ja3 fingerprint. }) // ImitateGet uses cookies to simulate browser requests and also simulates the browser's ja3 fingerprint.