Spaces:
Running
Running
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 | |
} | |