func (c *HTTPClient) Get(urlString string) (*goquery.Document, error) {
	client := http.Client{
		Timeout: c.Timeout,
	}
	urlData, _ := url.Parse(urlString)
	request, _ := http.NewRequest("GET", urlString, nil)
	request.Header.Set("Accept-Language", "en-US,en;q=0.8,gd;q=0.6")
	request.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36")
	request.Header.Set("X-FORWARDED-FOR", "165.234.102.177")
	request.Header.Set("Referer", urlData.Host)
	request.Close = true
	if c.AuthToken != "" {
		request.Header.Set("Authorization", fmt.Sprintf("Bearer: %v", c.AuthToken))
	}
	res, err := client.Do(request)
	if err != nil {
		return nil, err
	}
	defer res.Body.Close()
	if res.StatusCode != 200 {
		return nil, fmt.Errorf("http: %v -> %v", urlString, res.StatusCode)
	}
	doc, err := goquery.NewDocumentFromReader(res.Body)
	if err != nil {
		return doc, err
	}
	return doc, err
}
Get fetches an HTTP url and returns a goquery.Document.
It will also set the appropriate headers to make sure the pages are returned in English.
package utils
import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
	"os"
	"time"
	"github.com/PuerkitoBio/goquery"
)
type HTTPClient struct {
	Timeout   time.Duration
	AuthToken string
}