Skip to content

Commit

Permalink
add testing turnstile
Browse files Browse the repository at this point in the history
  • Loading branch information
xqdoo00o committed Jun 25, 2024
1 parent ea6cbc2 commit 2cc5968
Show file tree
Hide file tree
Showing 4 changed files with 433 additions and 18 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module freechatgpt

go 1.21
go 1.22

require (
github.com/PuerkitoBio/goquery v1.9.2
Expand Down
24 changes: 18 additions & 6 deletions handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ func nightmare(c *gin.Context) {
deviceId = generateUUID(account)
chatgpt.SetOAICookie(deviceId)
}
chat_require := chatgpt.CheckRequire(&secret, deviceId, proxy_url)
chat_require, p := chatgpt.CheckRequire(&secret, deviceId, proxy_url)
if chat_require == nil {
c.JSON(500, gin.H{"error": "unable to check chat requirement"})
return
Expand All @@ -126,10 +126,15 @@ func nightmare(c *gin.Context) {
println("Error getting Arkose token: ", err)
}
}
var turnstileToken string
if chat_require.Turnstile.Required {
turnstileToken = chatgpt.ProcessTurnstile(chat_require.Turnstile.DX, p)
}
println(turnstileToken)
// Convert the chat request to a ChatGPT request
translated_request := chatgpt_request_converter.ConvertAPIRequest(original_request, account, &secret, deviceId, proxy_url)

response, err := chatgpt.POSTconversation(translated_request, &secret, deviceId, chat_require.Token, arkoseToken, proofToken, proxy_url)
response, err := chatgpt.POSTconversation(translated_request, &secret, deviceId, chat_require.Token, arkoseToken, proofToken, turnstileToken, proxy_url)
if err != nil {
c.JSON(500, gin.H{
"error": "error sending request",
Expand All @@ -154,7 +159,7 @@ func nightmare(c *gin.Context) {
translated_request.Action = "continue"
translated_request.ConversationID = continue_info.ConversationID
translated_request.ParentMessageID = continue_info.ParentID
chat_require = chatgpt.CheckRequire(&secret, deviceId, proxy_url)
chat_require, _ = chatgpt.CheckRequire(&secret, deviceId, proxy_url)
if chat_require.Proof.Required {
proofToken = chatgpt.CalcProofToken(chat_require, proxy_url)
}
Expand All @@ -164,7 +169,10 @@ func nightmare(c *gin.Context) {
println("Error getting Arkose token: ", err)
}
}
response, err = chatgpt.POSTconversation(translated_request, &secret, deviceId, chat_require.Token, arkoseToken, proofToken, proxy_url)
if chat_require.Turnstile.Required {
turnstileToken = chatgpt.ProcessTurnstile(chat_require.Turnstile.DX, p)
}
response, err = chatgpt.POSTconversation(translated_request, &secret, deviceId, chat_require.Token, arkoseToken, proofToken, turnstileToken, proxy_url)
if err != nil {
c.JSON(500, gin.H{
"error": "error sending request",
Expand Down Expand Up @@ -238,7 +246,7 @@ func tts(c *gin.Context) {
}
var deviceId = generateUUID(account)
chatgpt.SetOAICookie(deviceId)
chat_require := chatgpt.CheckRequire(&secret, deviceId, proxy_url)
chat_require, p := chatgpt.CheckRequire(&secret, deviceId, proxy_url)
if chat_require == nil {
c.JSON(500, gin.H{"error": "unable to check chat requirement"})
return
Expand All @@ -254,10 +262,14 @@ func tts(c *gin.Context) {
println("Error getting Arkose token: ", err)
}
}
var turnstileToken string
if chat_require.Turnstile.Required {
turnstileToken = chatgpt.ProcessTurnstile(chat_require.Turnstile.DX, p)
}
// Convert the chat request to a ChatGPT request
translated_request := chatgpt_request_converter.ConvertTTSAPIRequest(original_request.Input)

response, err := chatgpt.POSTconversation(translated_request, &secret, deviceId, chat_require.Token, arkoseToken, proofToken, proxy_url)
response, err := chatgpt.POSTconversation(translated_request, &secret, deviceId, chat_require.Token, arkoseToken, proofToken, turnstileToken, proxy_url)
if err != nil {
c.JSON(500, gin.H{"error": "error sending request"})
return
Expand Down
26 changes: 15 additions & 11 deletions internal/chatgpt/request.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,10 +194,14 @@ type ChatRequire struct {
Required bool `json:"required"`
DX string `json:"dx,omitempty"`
} `json:"arkose"`
Turnstile struct {
Required bool `json:"required"`
DX string `json:"dx,omitempty"`
} `json:"turnstile"`
ForceLogin bool `json:"force_login,omitempty"`
}

func CheckRequire(secret *tokens.Secret, deviceId string, proxy string) *ChatRequire {
func CheckRequire(secret *tokens.Secret, deviceId string, proxy string) (*ChatRequire, string) {
if proxy != "" {
client.SetProxy(proxy)
}
Expand All @@ -213,23 +217,23 @@ func CheckRequire(secret *tokens.Secret, deviceId string, proxy string) *ChatReq
}
request, err := newRequest(http.MethodPost, apiUrl, body, secret, deviceId)
if err != nil {
return nil
return nil, ""
}
request.Header.Set("Content-Type", "application/json")
response, err := client.Do(request)
if err != nil {
return nil
return nil, ""
}
defer response.Body.Close()
var require ChatRequire
err = json.NewDecoder(response.Body).Decode(&require)
if err != nil {
return nil
return nil, ""
}
if require.ForceLogin {
return nil
return nil, ""
}
return &require
return &require, cachedRequireProof
}

var urlAttrMap = make(map[string]string)
Expand All @@ -245,9 +249,6 @@ func getURLAttribution(secret *tokens.Secret, deviceId string, url string) strin
return ""
}
request.Header.Set("Content-Type", "application/json")
if err != nil {
return ""
}
response, err := client.Do(request)
if err != nil {
return ""
Expand All @@ -261,7 +262,7 @@ func getURLAttribution(secret *tokens.Secret, deviceId string, url string) strin
return attr.Attribution
}

func POSTconversation(message ChatGPTRequest, secret *tokens.Secret, deviceId string, chat_token string, arkoseToken string, proofToken string, proxy string) (*http.Response, error) {
func POSTconversation(message ChatGPTRequest, secret *tokens.Secret, deviceId string, chat_token string, arkoseToken string, proofToken string, turnstileToken string, proxy string) (*http.Response, error) {
if proxy != "" {
client.SetProxy(proxy)
}
Expand Down Expand Up @@ -294,12 +295,15 @@ func POSTconversation(message ChatGPTRequest, secret *tokens.Secret, deviceId st
if proofToken != "" {
request.Header.Set("Openai-Sentinel-Proof-Token", proofToken)
}
if turnstileToken != "" {
request.Header.Set("Openai-Sentinel-Turnstile-Token", turnstileToken)
}
request.Header.Set("Origin", "https://chatgpt.com")
response, err := client.Do(request)
request.Header.Set("Referer", "https://chatgpt.com/")
if err != nil {
return &http.Response{}, err
}
response, err := client.Do(request)
return response, err
}

Expand Down
Loading

0 comments on commit 2cc5968

Please sign in to comment.