Skip to content

saucesteals/mimic

Repository files navigation

Mimic

GoDoc

Mimic chromium's HTTP/HTTP2 and TLS implementations.

Documentation

Installation

go get github.com/saucesteals/mimic

Usage

package main

import (
	http "github.com/saucesteals/fhttp"
	"github.com/saucesteals/mimic"
)

func main() {
	transport, _ := mimic.NewTransport(mimic.TransportOptions{
		Version:   "137.0.0.0",
		Brand:     mimic.BrandChrome,     // or mimic.BrandBrave, mimic.BrandEdge
		Platform:  mimic.PlatformWindows, // or mimic.PlatformMac, mimic.PlatformLinux
		Transport: &http.Transport{Proxy: http.ProxyFromEnvironment},
	})

	client := &http.Client{Transport: transport}

	req, _ := http.NewRequest(http.MethodGet, "https://tls.peet.ws/api/clean", nil)

	req.Header.Add("rtt", "50")
	req.Header.Add("accept", "text/html,*/*")
	req.Header.Add("x-requested-with", "XMLHttpRequest")
	req.Header.Add("downlink", "3.9")
	req.Header.Add("ect", "4g")
	req.Header.Add("sec-fetch-site", "same-origin")
	req.Header.Add("sec-fetch-mode", "cors")
	req.Header.Add("sec-fetch-dest", "empty")
	req.Header.Add("accept-encoding", "gzip, deflate, br")
	req.Header.Add("accept-language", "en,en_US;q=0.9")
	// mimic automatically sets: user-agent, sec-ch-ua, sec-ch-ua-mobile, sec-ch-ua-platform

	// optional header order
	// req.Header[http.HeaderOrderKey] = []string{
	// 	"user-agent", "sec-ch-ua", "sec-ch-ua-mobile", ...
	// }

	res, _ := client.Do(req)

	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}

About

Mimic chromium's HTTP/HTTP2 and TLS implementations.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages