Copy go get - u github.com / bogdanfinn / tls - client
// or specific version:
// go get github.com/bogdanfinn/tls-client@v1.7.2
I would recommend to check the Github tags for the latest version and install that one explicit.
Copy package main
import (
"fmt"
"io"
"log"
http "github.com/bogdanfinn/fhttp"
"github.com/bogdanfinn/tls-client/profiles"
tls_client "github.com/bogdanfinn/tls-client"
)
func main () {
jar := tls_client. NewCookieJar ()
options := [] tls_client . HttpClientOption {
tls_client. WithTimeoutSeconds ( 30 ),
tls_client. WithClientProfile (profiles.Chrome_120),
tls_client. WithNotFollowRedirects (),
tls_client. WithCookieJar (jar), // create cookieJar instance and pass it as argument
//tls_client.WithProxyUrl("http://user:pass@host:port"),
//tls_client.WithInsecureSkipVerify(),
}
client, err := tls_client. NewHttpClient (tls_client. NewNoopLogger (), options ... )
if err != nil {
log. Println (err)
return
}
req, err := http. NewRequest (http.MethodGet, "https://tls.peet.ws/api/all" , nil )
if err != nil {
log. Println (err)
return
}
req.Header = http . Header {
"accept" : { "*/*" },
"accept-language" : { "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7" },
"user-agent": {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"},
http.HeaderOrderKey: {
"accept" ,
"accept-language" ,
"user-agent" ,
},
}
resp, err := client. Do (req)
if err != nil {
log. Println (err)
return
}
defer resp.Body. Close ()
log. Println (fmt. Sprintf ( "status code: %d " , resp.StatusCode))
readBytes, err := io. ReadAll (resp.Body)
if err != nil {
log. Println (err)
return
}
log. Println ( string (readBytes))
}
For more configured clients check this documentation or use your own custom client. See provided examples how to use a complete custom TLS client.