Delete httpclient
Browse files
httpclient/Iaurorahttpclient.go
DELETED
|
@@ -1,28 +0,0 @@
|
|
| 1 |
-
package httpclient
|
| 2 |
-
|
| 3 |
-
import (
|
| 4 |
-
"io"
|
| 5 |
-
"net/http"
|
| 6 |
-
)
|
| 7 |
-
|
| 8 |
-
type AuroraHttpClient interface {
|
| 9 |
-
Request(method HttpMethod, url string, headers AuroraHeaders, cookies []*http.Cookie, body io.Reader) (*http.Response, error)
|
| 10 |
-
SetProxy(url string) error
|
| 11 |
-
}
|
| 12 |
-
|
| 13 |
-
type HttpMethod string
|
| 14 |
-
|
| 15 |
-
const (
|
| 16 |
-
GET HttpMethod = "GET"
|
| 17 |
-
POST HttpMethod = "POST"
|
| 18 |
-
PUT HttpMethod = "PUT"
|
| 19 |
-
HEAD HttpMethod = "HEAD"
|
| 20 |
-
DELETE HttpMethod = "DELETE"
|
| 21 |
-
OPTIONS HttpMethod = "OPTIONS"
|
| 22 |
-
)
|
| 23 |
-
|
| 24 |
-
type AuroraHeaders map[string]string
|
| 25 |
-
|
| 26 |
-
func (a AuroraHeaders) Set(key, value string) {
|
| 27 |
-
a[key] = value
|
| 28 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
httpclient/bogdanfinn/tls_client.go
DELETED
|
@@ -1,102 +0,0 @@
|
|
| 1 |
-
package bogdanfinn
|
| 2 |
-
|
| 3 |
-
import (
|
| 4 |
-
"aurora/httpclient"
|
| 5 |
-
"io"
|
| 6 |
-
"net/http"
|
| 7 |
-
|
| 8 |
-
fhttp "github.com/bogdanfinn/fhttp"
|
| 9 |
-
tls_client "github.com/bogdanfinn/tls-client"
|
| 10 |
-
"github.com/bogdanfinn/tls-client/profiles"
|
| 11 |
-
)
|
| 12 |
-
|
| 13 |
-
type TlsClient struct {
|
| 14 |
-
Client tls_client.HttpClient
|
| 15 |
-
ReqBefore handler
|
| 16 |
-
}
|
| 17 |
-
|
| 18 |
-
type handler func(r *fhttp.Request) error
|
| 19 |
-
|
| 20 |
-
func NewStdClient() *TlsClient {
|
| 21 |
-
client, _ := tls_client.NewHttpClient(tls_client.NewNoopLogger(), []tls_client.HttpClientOption{
|
| 22 |
-
tls_client.WithCookieJar(tls_client.NewCookieJar()),
|
| 23 |
-
tls_client.WithRandomTLSExtensionOrder(),
|
| 24 |
-
tls_client.WithTimeoutSeconds(600),
|
| 25 |
-
tls_client.WithClientProfile(profiles.Okhttp4Android13),
|
| 26 |
-
}...)
|
| 27 |
-
|
| 28 |
-
stdClient := &TlsClient{Client: client}
|
| 29 |
-
return stdClient
|
| 30 |
-
}
|
| 31 |
-
|
| 32 |
-
func convertResponse(resp *fhttp.Response) *http.Response {
|
| 33 |
-
response := &http.Response{
|
| 34 |
-
Status: resp.Status,
|
| 35 |
-
StatusCode: resp.StatusCode,
|
| 36 |
-
Proto: resp.Proto,
|
| 37 |
-
ProtoMajor: resp.ProtoMajor,
|
| 38 |
-
ProtoMinor: resp.ProtoMinor,
|
| 39 |
-
Header: http.Header(resp.Header),
|
| 40 |
-
Body: resp.Body,
|
| 41 |
-
ContentLength: resp.ContentLength,
|
| 42 |
-
TransferEncoding: resp.TransferEncoding,
|
| 43 |
-
Close: resp.Close,
|
| 44 |
-
Uncompressed: resp.Uncompressed,
|
| 45 |
-
Trailer: http.Header(resp.Trailer),
|
| 46 |
-
}
|
| 47 |
-
return response
|
| 48 |
-
}
|
| 49 |
-
|
| 50 |
-
func (t *TlsClient) handleHeaders(req *fhttp.Request, headers httpclient.AuroraHeaders) {
|
| 51 |
-
if headers == nil {
|
| 52 |
-
return
|
| 53 |
-
}
|
| 54 |
-
for k, v := range headers {
|
| 55 |
-
req.Header.Set(k, v)
|
| 56 |
-
}
|
| 57 |
-
}
|
| 58 |
-
|
| 59 |
-
func (t *TlsClient) handleCookies(req *fhttp.Request, cookies []*http.Cookie) {
|
| 60 |
-
if cookies == nil {
|
| 61 |
-
return
|
| 62 |
-
}
|
| 63 |
-
for _, c := range cookies {
|
| 64 |
-
req.AddCookie(&fhttp.Cookie{
|
| 65 |
-
Name: c.Name,
|
| 66 |
-
Value: c.Value,
|
| 67 |
-
Path: c.Path,
|
| 68 |
-
Domain: c.Domain,
|
| 69 |
-
Expires: c.Expires,
|
| 70 |
-
RawExpires: c.RawExpires,
|
| 71 |
-
MaxAge: c.MaxAge,
|
| 72 |
-
Secure: c.Secure,
|
| 73 |
-
HttpOnly: c.HttpOnly,
|
| 74 |
-
SameSite: fhttp.SameSite(c.SameSite),
|
| 75 |
-
Raw: c.Raw,
|
| 76 |
-
Unparsed: c.Unparsed,
|
| 77 |
-
})
|
| 78 |
-
}
|
| 79 |
-
}
|
| 80 |
-
|
| 81 |
-
func (t *TlsClient) Request(method httpclient.HttpMethod, url string, headers httpclient.AuroraHeaders, cookies []*http.Cookie, body io.Reader) (*http.Response, error) {
|
| 82 |
-
req, err := fhttp.NewRequest(string(method), url, body)
|
| 83 |
-
if err != nil {
|
| 84 |
-
return nil, err
|
| 85 |
-
}
|
| 86 |
-
t.handleHeaders(req, headers)
|
| 87 |
-
t.handleCookies(req, cookies)
|
| 88 |
-
if t.ReqBefore != nil {
|
| 89 |
-
if err := t.ReqBefore(req); err != nil {
|
| 90 |
-
return nil, err
|
| 91 |
-
}
|
| 92 |
-
}
|
| 93 |
-
do, err := t.Client.Do(req)
|
| 94 |
-
if err != nil {
|
| 95 |
-
return nil, err
|
| 96 |
-
}
|
| 97 |
-
return convertResponse(do), nil
|
| 98 |
-
}
|
| 99 |
-
|
| 100 |
-
func (t *TlsClient) SetProxy(url string) error {
|
| 101 |
-
return t.Client.SetProxy(url)
|
| 102 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
httpclient/bogdanfinn/tls_client_test.go
DELETED
|
@@ -1,101 +0,0 @@
|
|
| 1 |
-
package bogdanfinn
|
| 2 |
-
|
| 3 |
-
import (
|
| 4 |
-
"aurora/httpclient"
|
| 5 |
-
"fmt"
|
| 6 |
-
"io"
|
| 7 |
-
"net/http"
|
| 8 |
-
"os"
|
| 9 |
-
"strings"
|
| 10 |
-
"testing"
|
| 11 |
-
|
| 12 |
-
"github.com/joho/godotenv"
|
| 13 |
-
)
|
| 14 |
-
|
| 15 |
-
var BaseURL string
|
| 16 |
-
|
| 17 |
-
func init() {
|
| 18 |
-
_ = godotenv.Load(".env")
|
| 19 |
-
BaseURL = os.Getenv("BASE_URL")
|
| 20 |
-
if BaseURL == "" {
|
| 21 |
-
BaseURL = "https://chat.openai.com/backend-anon"
|
| 22 |
-
}
|
| 23 |
-
}
|
| 24 |
-
func TestTlsClient_Request(t *testing.T) {
|
| 25 |
-
client := NewStdClient()
|
| 26 |
-
userAgent := "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
|
| 27 |
-
proxy := "http://127.0.0.1:7990"
|
| 28 |
-
client.SetProxy(proxy)
|
| 29 |
-
|
| 30 |
-
apiUrl := BaseURL + "/sentinel/chat-requirements"
|
| 31 |
-
payload := strings.NewReader(`{"conversation_mode_kind":"primary_assistant"}`)
|
| 32 |
-
header := make(httpclient.AuroraHeaders)
|
| 33 |
-
header.Set("Content-Type", "application/json")
|
| 34 |
-
header.Set("User-Agent", userAgent)
|
| 35 |
-
header.Set("Accept", "*/*")
|
| 36 |
-
header.Set("oai-language", "en-US")
|
| 37 |
-
header.Set("origin", "https://chat.openai.com")
|
| 38 |
-
header.Set("referer", "https://chat.openai.com/")
|
| 39 |
-
header.Set("oai-device-id", "c83b24f0-5a9e-4c43-8915-3f67d4332609")
|
| 40 |
-
response, err := client.Request(http.MethodPost, apiUrl, header, nil, payload)
|
| 41 |
-
if err != nil {
|
| 42 |
-
return
|
| 43 |
-
}
|
| 44 |
-
defer response.Body.Close()
|
| 45 |
-
fmt.Println(response.StatusCode)
|
| 46 |
-
if response.StatusCode != 200 {
|
| 47 |
-
fmt.Println("Error: ", response.StatusCode)
|
| 48 |
-
}
|
| 49 |
-
}
|
| 50 |
-
|
| 51 |
-
func TestChatGPTModel(t *testing.T) {
|
| 52 |
-
client := NewStdClient()
|
| 53 |
-
userAgent := "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
|
| 54 |
-
proxy := "http://127.0.0.1:7990"
|
| 55 |
-
client.SetProxy(proxy)
|
| 56 |
-
apiUrl := "https://chat.openai.com/backend-anon/models"
|
| 57 |
-
|
| 58 |
-
header := make(httpclient.AuroraHeaders)
|
| 59 |
-
header.Set("Content-Type", "application/json")
|
| 60 |
-
header.Set("User-Agent", userAgent)
|
| 61 |
-
header.Set("Accept", "*/*")
|
| 62 |
-
header.Set("oai-language", "en-US")
|
| 63 |
-
header.Set("origin", "https://chat.openai.com")
|
| 64 |
-
header.Set("referer", "https://chat.openai.com/")
|
| 65 |
-
header.Set("oai-device-id", "c83b24f0-5a9e-4c43-8915-3f67d4332609")
|
| 66 |
-
response, err := client.Request(http.MethodGet, apiUrl, header, nil, nil)
|
| 67 |
-
if err != nil {
|
| 68 |
-
return
|
| 69 |
-
}
|
| 70 |
-
defer response.Body.Close()
|
| 71 |
-
fmt.Println(response.StatusCode)
|
| 72 |
-
if response.StatusCode != 200 {
|
| 73 |
-
fmt.Println("Error: ", response.StatusCode)
|
| 74 |
-
body, _ := io.ReadAll(response.Body)
|
| 75 |
-
fmt.Println(string(body))
|
| 76 |
-
return
|
| 77 |
-
}
|
| 78 |
-
|
| 79 |
-
type EnginesData struct {
|
| 80 |
-
Models []struct {
|
| 81 |
-
Slug string `json:"slug"`
|
| 82 |
-
MaxTokens int `json:"max_tokens"`
|
| 83 |
-
Title string `json:"title"`
|
| 84 |
-
Description string `json:"description"`
|
| 85 |
-
Tags []string `json:"tags"`
|
| 86 |
-
Capabilities struct {
|
| 87 |
-
} `json:"capabilities,omitempty"`
|
| 88 |
-
ProductFeatures struct {
|
| 89 |
-
} `json:"product_features,omitempty"`
|
| 90 |
-
} `json:"models"`
|
| 91 |
-
Categories []struct {
|
| 92 |
-
Category string `json:"category"`
|
| 93 |
-
HumanCategoryName string `json:"human_category_name"`
|
| 94 |
-
SubscriptionLevel string `json:"subscription_level"`
|
| 95 |
-
DefaultModel string `json:"default_model"`
|
| 96 |
-
CodeInterpreterModel string `json:"code_interpreter_model,omitempty"`
|
| 97 |
-
PluginsModel string `json:"plugins_model"`
|
| 98 |
-
} `json:"categories"`
|
| 99 |
-
}
|
| 100 |
-
|
| 101 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
httpclient/resty/resty_client.go
DELETED
|
@@ -1,72 +0,0 @@
|
|
| 1 |
-
package resty
|
| 2 |
-
|
| 3 |
-
import (
|
| 4 |
-
"aurora/util"
|
| 5 |
-
"crypto/tls"
|
| 6 |
-
browser "github.com/EDDYCJY/fake-useragent"
|
| 7 |
-
"github.com/go-resty/resty/v2"
|
| 8 |
-
"net/http"
|
| 9 |
-
"time"
|
| 10 |
-
)
|
| 11 |
-
|
| 12 |
-
type RestyClient struct {
|
| 13 |
-
Client *resty.Client
|
| 14 |
-
}
|
| 15 |
-
|
| 16 |
-
func NewStdClient() *RestyClient {
|
| 17 |
-
client := &RestyClient{
|
| 18 |
-
Client: resty.NewWithClient(&http.Client{
|
| 19 |
-
Transport: &http.Transport{
|
| 20 |
-
// 禁用长连接
|
| 21 |
-
DisableKeepAlives: true,
|
| 22 |
-
// 配置TLS设置,跳过证书验证
|
| 23 |
-
TLSClientConfig: &tls.Config{
|
| 24 |
-
InsecureSkipVerify: true,
|
| 25 |
-
},
|
| 26 |
-
},
|
| 27 |
-
}),
|
| 28 |
-
}
|
| 29 |
-
client.Client.SetBaseURL("https://chat.openai.com")
|
| 30 |
-
client.Client.SetRetryCount(3)
|
| 31 |
-
client.Client.SetRetryWaitTime(5 * time.Second)
|
| 32 |
-
client.Client.SetRetryMaxWaitTime(20 * time.Second)
|
| 33 |
-
|
| 34 |
-
client.Client.SetTimeout(600 * time.Second)
|
| 35 |
-
client.Client.SetHeader("user-agent", browser.Random()).
|
| 36 |
-
SetHeader("accept", "*/*").
|
| 37 |
-
SetHeader("accept-language", "en-US,en;q=0.9").
|
| 38 |
-
SetHeader("cache-control", "no-cache").
|
| 39 |
-
SetHeader("content-type", "application/json").
|
| 40 |
-
SetHeader("oai-language", util.RandomLanguage()).
|
| 41 |
-
SetHeader("pragma", "no-cache").
|
| 42 |
-
SetHeader("sec-ch-ua", `"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"`).
|
| 43 |
-
SetHeader("sec-ch-ua-mobile", "?0").
|
| 44 |
-
SetHeader("sec-ch-ua-platform", "Windows").
|
| 45 |
-
SetHeader("sec-fetch-dest", "empty").
|
| 46 |
-
SetHeader("sec-fetch-mode", "cors").
|
| 47 |
-
SetHeader("sec-fetch-site", "same-origin")
|
| 48 |
-
return client
|
| 49 |
-
}
|
| 50 |
-
|
| 51 |
-
//func (c *RestyClient) Request(method string, url string, headers map[string]string, cookies []*http.Cookie, body io.Reader) (*http.Response, error) {
|
| 52 |
-
//}
|
| 53 |
-
|
| 54 |
-
//func (c *RestyClient) Post(url string, headers map[string]string, cookies []*http.Cookie, body io.Reader) (*http.Response, error) {
|
| 55 |
-
//}
|
| 56 |
-
//
|
| 57 |
-
//func (c *RestyClient) Get(url string, headers map[string]string, cookies []*http.Cookie, body io.Reader) (*http.Response, error) {
|
| 58 |
-
//}
|
| 59 |
-
//
|
| 60 |
-
//func (c *RestyClient) Head(url string, headers map[string]string, cookies []*http.Cookie, body io.Reader) (*http.Response, error) {
|
| 61 |
-
//}
|
| 62 |
-
//
|
| 63 |
-
//func (c *RestyClient) Options(url string, headers map[string]string, cookies []*http.Cookie, body io.Reader) (*http.Response, error) {
|
| 64 |
-
//}
|
| 65 |
-
//
|
| 66 |
-
//func (c *RestyClient) Put(url string, headers map[string]string, cookies []*http.Cookie, body io.Reader) (*http.Response, error) {
|
| 67 |
-
//}
|
| 68 |
-
//
|
| 69 |
-
//func (c *RestyClient) Delete(url string, headers map[string]string, cookies []*http.Cookie, body io.Reader) (*http.Response, error) {
|
| 70 |
-
//}
|
| 71 |
-
//
|
| 72 |
-
//func (c *RestyClient) SetProxy(url string) error {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|