package v1 import ( "adams549659584/go-proxy-bingai/common" "net/http" "os" "strings" "time" binglib "github.com/Harry-zklcdc/bing-lib" "github.com/Harry-zklcdc/bing-lib/lib/aes" "github.com/Harry-zklcdc/bing-lib/lib/hex" "github.com/Harry-zklcdc/bing-lib/lib/request" ) func init() { apikey = os.Getenv("APIKEY") blankApikey = os.Getenv("Go_Proxy_BingAI_BLANK_API_KEY") != "" if !blankApikey && apikey == "" { common.Logger.Info("APIKEY is empty, generate a new one.") apikey = "sk-" + hex.NewHex(32) common.Logger.Info("APIKEY: %s", apikey) } go func() { globalChat = binglib.NewChat("").SetBingBaseUrl("http://localhost:" + common.PORT).SetSydneyBaseUrl("ws://localhost:" + common.PORT).SetBypassServer(common.BypassServer) globalImage = binglib.NewImage("").SetBingBaseUrl("http://localhost:" + common.PORT).SetBypassServer(common.BypassServer) time.Sleep(200 * time.Millisecond) t, _ := getCookie("", "", "") common.Logger.Info("BingAPI Ready!") globalChat.SetCookies(t) globalImage.SetCookies(t) }() } func getCookie(reqCookie, convId, rid string) (cookie string, err error) { cookie = reqCookie if len(common.AUTH_KEYS) > 0 { cookie += "; " + common.AUTH_KEY_COOKIE_NAME + "=" + common.AUTH_KEYS[0] } c := request.NewRequest() res := c.SetUrl("http://localhost:"+common.PORT+"/chat?q=Bing+AI&showconv=1&FORM=hpcodx&ajaxhist=0&ajaxserp=0&cc=us"). SetHeader("User-Agent", common.User_Agent). SetHeader("Cookie", cookie).Do() headers := res.GetHeaders() for k, v := range headers { if strings.ToLower(k) == "set-cookie" { for _, i := range v { cookie += strings.Split(i, "; ")[0] + "; " } } } cookie = strings.TrimLeft(strings.Trim(cookie, "; "), "; ") IG := strings.ToUpper(hex.NewHex(32)) T, err := aes.Encrypt(common.AUTHOR, IG) if err != nil { return } resp, status, err := binglib.Bypass(common.BypassServer, reqCookie, "local-gen-"+hex.NewUUID(), IG, convId, rid, T, "") if err != nil || status != http.StatusOK { common.Logger.Error("Bypass Error: %v", err) return } cookie = resp.Result.Cookies if len(common.USER_TOKEN_LIST) == 0 { cookie += "; _U=" + hex.NewHex(128) } if len(common.AUTH_KEYS) > 0 { if common.AUTH_KEYS[0] != "" { cookie += "; " + common.AUTH_KEY_COOKIE_NAME + "=" + common.AUTH_KEYS[0] } } return cookie, nil }