Package: cloudflare-client
cloudflare-clientcloudflare-client is an advanced HTTP library based on requests and tls-client. It can be used to bypass JA3 fingerprinting and Cloudflare UAM.Installationpip install cloudflare-clientExamplesThe syntax is inspired byrequests, there are very few things that are different.Example 1 - Preset:importcloudflare_client# You can also use the following as `browser`:# Chrome --> chrome_103, chrome_104, chrome_105, chrome_106, chrome_107, chrome_108, chrome109, Chrome110,#            chrome111, chrome112, chrome_116_PSK, chrome_116_PSK_PQ, chrome_117, chrome_120# Firefox --> firefox_102, firefox_104, firefox108, Firefox110, firefox_117, firefox_120# Opera --> opera_89, opera_90# Safari --> safari_15_3, safari_15_6_1, safari_16_0# iOS --> safari_ios_15_5, safari_ios_15_6, safari_ios_16_0# iPadOS --> safari_ios_15_6# Android --> okhttp4_android_7, okhttp4_android_8, okhttp4_android_9, okhttp4_android_10, okhttp4_android_11,#             okhttp4_android_12, okhttp4_android_13## more client identifiers can be found in settings.pysession=cloudflare_client.Session(browser="chrome120",random_tls_extension_order=True,cloudflare_uam=True)res=session.get("https://www.example.com/",headers={"key1":"value1",},proxy="http://user:password@host:port")Example 2 - Custom:importcloudflare_clientsession=cloudflare_client.Session(ja3_string="771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-17513,29-23-24,0",h2_settings={"HEADER_TABLE_SIZE":65536,"MAX_CONCURRENT_STREAMS":1000,"INITIAL_WINDOW_SIZE":6291456,"MAX_HEADER_LIST_SIZE":262144},h2_settings_order=["HEADER_TABLE_SIZE","MAX_CONCURRENT_STREAMS","INITIAL_WINDOW_SIZE","MAX_HEADER_LIST_SIZE"],supported_signature_algorithms=["ECDSAWithP256AndSHA256","PSSWithSHA256","PKCS1WithSHA256","ECDSAWithP384AndSHA384","PSSWithSHA384","PKCS1WithSHA384","PSSWithSHA512","PKCS1WithSHA512",],supported_versions=["GREASE","1.3","1.2"],key_share_curves=["GREASE","X25519"],cert_compression_algo="brotli",pseudo_header_order=[":method",":authority",":scheme",":path"],connection_flow=15663105,header_order=["accept","user-agent","accept-encoding","accept-language"])res=session.post("https://www.example.com/",headers={"key1":"value1",},json={"key1":"key2"})Pyinstaller / PyarmorIf you want to pack the library with Pyinstaller or Pyarmor, make sure to add this to your command:Linux - Ubuntu / x86:--add-binary '{path_to_library}/cloudflare_client/dependencies/cloudflare-client-x86.so:cloudflare_client/dependencies'Linux Alpine / AMD64:--add-binary '{path_to_library}/cloudflare_client/dependencies/cloudflare-client-amd64.so:cloudflare_client/dependencies'MacOS M1 and older:--add-binary '{path_to_library}/cloudflare_client/dependencies/cloudflare-client-x86.dylib:cloudflare_client/dependencies'MacOS M2:--add-binary '{path_to_library}/cloudflare_client/dependencies/cloudflare-client-arm64.dylib:cloudflare_client/dependencies'Windows:--add-binary '{path_to_library}/cloudflare_client/dependencies/cloudflare-client-64.dll;cloudflare_client/dependencies'AcknowledgementsBig shout out toBogdanfinnfor open sourcing histls-clientin Golang.
Also I wanted to keep the syntax as similar as possible torequests, as most people use it and are familiar with it!