From 80f3500a69aafcf28d9db6f9ee061bd56e0ec9cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Musab=20G=C3=BCltekin?= Date: Mon, 1 Jul 2019 12:32:15 +0300 Subject: [PATCH] Fixed Chrome response not right on some sites. --- client/client.go | 11 ++++++----- geziyor.go | 2 +- geziyor_test.go | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/client/client.go b/client/client.go index 91e601e..c36c07a 100644 --- a/client/client.go +++ b/client/client.go @@ -12,6 +12,7 @@ import ( "net" "net/http" "net/url" + "strings" "time" ) @@ -95,7 +96,6 @@ func (c *Client) DoRequestClient(req *Request, maxBodySize int64, charsetDetectD // DoRequestChrome opens up a new chrome instance and makes request func (c *Client) DoRequestChrome(req *Request) (*Response, error) { var body string - var reqID network.RequestID var res *network.Response ctx, cancel := chromedp.NewContext(context.Background()) @@ -105,16 +105,16 @@ func (c *Client) DoRequestChrome(req *Request) (*Response, error) { network.Enable(), network.SetExtraHTTPHeaders(network.Headers(ConvertHeaderToMap(req.Header))), chromedp.ActionFunc(func(ctx context.Context) error { + var reqID network.RequestID chromedp.ListenTarget(ctx, func(ev interface{}) { switch ev.(type) { case *network.EventRequestWillBeSent: reqEvent := ev.(*network.EventRequestWillBeSent) if _, exists := reqEvent.Request.Headers["Referer"]; !exists { - reqID = reqEvent.RequestID + if strings.HasPrefix(reqEvent.Request.URL, "http") { + reqID = reqEvent.RequestID + } } - //if reqEvent := ev.(*network.EventRequestWillBeSent); reqEvent.Request.URL == req.URL.String() { - // reqID = reqEvent.RequestID - //} case *network.EventResponseReceived: if resEvent := ev.(*network.EventResponseReceived); resEvent.RequestID == reqID { res = resEvent.Response @@ -144,6 +144,7 @@ func (c *Client) DoRequestChrome(req *Request) (*Response, error) { Response: &http.Response{ Request: req.Request, StatusCode: int(res.Status), + Proto: res.Protocol, Header: ConvertMapToHeader(res.Headers), }, Body: []byte(body), diff --git a/geziyor.go b/geziyor.go index 0eeb50f..46efe5f 100644 --- a/geziyor.go +++ b/geziyor.go @@ -153,7 +153,7 @@ func (g *Geziyor) Get(url string, callback func(g *Geziyor, r *client.Response)) } // GetRendered issues GET request using headless browser -// Opens up a new Chrome instance, makes request, waits for 1 second to render HTML DOM and closed. +// Opens up a new Chrome instance, makes request, waits for rendering HTML DOM and closed. // Rendered requests only supported for GET requests. func (g *Geziyor) GetRendered(url string, callback func(g *Geziyor, r *client.Response)) { req, err := client.NewRequest("GET", url, nil) diff --git a/geziyor_test.go b/geziyor_test.go index 286fb39..ebc01a5 100644 --- a/geziyor_test.go +++ b/geziyor_test.go @@ -110,7 +110,7 @@ func TestGetRendered(t *testing.T) { }, ParseFunc: func(g *geziyor.Geziyor, r *client.Response) { fmt.Println(string(r.Body)) - fmt.Println(r.Header) + fmt.Println(r.Request.URL.String(), r.Header) }, //URLRevisitEnabled: true, }).Start()