Skip to content
/ cfws Public

A library that can bypass cloudflare protected websockets

Notifications You must be signed in to change notification settings

suffz/cfws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Made with the help of https://github.com/suffz/http2

Example Usage:

func main() {
	conn := (&cfws.WebsocketOptions{
		URL:        "wss://ws.bloxflip.com/socket.io/?EIO=3&transport=websocket",
		ServerName: "ws.bloxflip.com", PORT: "443",
		Origin:     "https://bloxflip.com",
		Host:       "ws.bloxflip.com",
		UserAgent:  "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
		ReadSize:   cfws.MBs(5),
		WriteSize:  cfws.MBs(5),
		Extensions: "client_max_window_bits",
		Headers: []cfws.Headers{
			{Name: "Pragma", Value: "no-cache"},
			{Name: "Cache-Control", Value: "no-cache"},
			{Name: "Accept-Language", Value: "en-US,en;q=0.9"},
			{Name: "Accept-Encoding", Value: "gzip, deflate, br, zstd"},
		},
		Cert: cfws.ReturnCertBasedOnBytes([]byte(`
		-- GlobalSign Root R2, valid until Dec 15, 2021
		-----BEGIN CERTIFICATE-----
		MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G
		A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp
		Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1
		MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG
		A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
		hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL
		v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8
		eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq
		tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd
		C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa
		zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB
		mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH
		V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n
		bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG
		3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs
		J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO
		291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS
		ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd
		AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
		TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
		-----END CERTIFICATE-----`)),
		InitMessages: []string{
			`40/chat,`,
			`40/cloud-games,`,
			fmt.Sprintf(`42/chat,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/blackjack,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/cups,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/jackpot,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/roulette,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/rouletteV2,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/crash,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/wallet,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/marketplace,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/case-battles,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/mod-queue,["auth","%v"]`, jwt),
			fmt.Sprintf(`42/feed,["auth","%v"]`, jwt),
		},
	}).Dial()
	for {
		_, msg, err := conn.Conn.ReadMessage()
		fmt.Println(string(msg), err)
	}
}