From 6f5bef5ffb58aab818cb46ad14310d2874cb1492 Mon Sep 17 00:00:00 2001 From: ale Date: Tue, 19 Dec 2017 08:36:02 +0000 Subject: Use a global http.Client with sane settings --- client.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 client.go (limited to 'client.go') diff --git a/client.go b/client.go new file mode 100644 index 0000000..c0c2626 --- /dev/null +++ b/client.go @@ -0,0 +1,31 @@ +package crawl + +import ( + "crypto/tls" + "net/http" + "net/http/cookiejar" + "time" +) + +var defaultClientTimeout = 60 * time.Second + +var DefaultClient *http.Client + +// DefaultClient returns a http.Client suitable for crawling: does not +// follow redirects, accepts invalid TLS certificates, sets a +// reasonable timeout for requests. +func init() { + jar, _ := cookiejar.New(nil) + DefaultClient = &http.Client{ + Timeout: defaultClientTimeout, + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + }, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + Jar: jar, + } +} -- cgit v1.2.3-54-g00ecf