TLS Fingerprint
Some websites prohibit access to some crawler programs by identifying TLS handshake fingerprints. The fingerprint of the golang tls standard library is easy to identify, and req
integrates utls, which can simulate other TLS fingerprints to bypass this restriction, such as emulating Chrome browser’s fingerprint:
client := req.C().
SetUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36").
SetTLSFingerprintChrome() // Simulate the TLS handshake fingerprint of the Chrome browser, so that the website believes that it is the Chrome browser that is accessing.
client.R().Get(url)
Similarly, there are other methods of Client that can be called to simulate other fingerprints, the method list:
SetTLSFingerprintChrome
: Simulate Chrome browser fingerprint.SetTLSFingerprintFirefox
: Simulate Firefox browser fingerprint.SetTLSFingerprintEdge
: Simulate Edge browser fingerprint.SetTLSFingerprintQQ
: Simulate QQ browser fingerprint.SetTLSFingerprintSafari
: Simulate Safari browser fingerprint.SetTLSFingerprint360
: Simulate 360 browser fingerprint.SetTLSFingerprintIOS
: Simulate IOS fingerprint.SetTLSFingerprintAndroid
: Simulate Android fingerprint.SetTLSFingerprintRandomized
: Simulate randomized fingerprint.
If the server checks the fingerprint more strictly, you can also try calling SetTLSFingerprint
directly and passing in the ClientHelloID
of utls
to specify the specific fingerprint version.
If you need more flexible fingerprint customization, you can also try to use utls
to construct the handshake function and call SetTLSHandshake
of Client
to customize it.