This is a light version of refraction-networking/utls with a focus on parrotting a single browser and hence implementing only the strict minimal set of features needed for that.
Design goals:
- Parroting the most popular browser out there (Google Chrome)
- Smallest number of changes to the go/tls codepath
- It should be possible to easily inspect the diff with upstream (see the diff for the last update)
Non-goals:
- Pluggable support for multiple TLS fingerprints
Thanks to @FiloSottile for the insight and suggestion to take the approach of parsing the raw ClientHello bytes and re-serialising them.