@@ -49,6 +49,40 @@ func requestValue(value any) string {
4949 }
5050}
5151
52+ func loadEnv () map [string ]string {
53+ path := filepath .Join (".." , ".env" )
54+ env := make (map [string ]string )
55+ f , err := os .Open (path )
56+ if err != nil {
57+ return env
58+ }
59+ defer f .Close ()
60+
61+ scanner := bufio .NewScanner (f )
62+ for scanner .Scan () {
63+ line := strings .TrimSpace (scanner .Text ())
64+ if line == "" || strings .HasPrefix (line , "#" ) {
65+ continue
66+ }
67+ parts := strings .SplitN (line , "=" , 2 )
68+ if len (parts ) == 2 {
69+ env [strings .TrimSpace (parts [0 ])] = strings .TrimSpace (parts [1 ])
70+ }
71+ }
72+
73+ return env
74+ }
75+
76+ func getEnv (env map [string ]string , key , fallback string ) string {
77+ if value , ok := env [key ]; ok && value != "" {
78+ return value
79+ }
80+ if value := os .Getenv (key ); value != "" {
81+ return value
82+ }
83+ return fallback
84+ }
85+
5286func main () {
5387 env := loadEnv ()
5488 apiKey := getEnv (env , "CAPTCHAAI_API_KEY" , "" )
@@ -96,11 +130,11 @@ func main() {
96130 json .Unmarshal (body , & submitResp )
97131
98132 if submitResp .Status != 1 {
99- handleError (submitResp .Request )
133+ handleError (requestValue ( submitResp .Request ) )
100134 os .Exit (1 )
101135 }
102136
103- taskID := submitResp .Request
137+ taskID := requestValue ( submitResp .Request )
104138 fmt .Printf ("[+] Task submitted. ID: %s\n " , taskID )
105139
106140 // Poll for result
@@ -137,9 +171,10 @@ func main() {
137171 resp .Body .Close ()
138172 var result apiResponse
139173 json .Unmarshal (body , & result )
174+ reqStr := requestValue (result .Request )
140175
141176 if result .Status == 1 {
142- token := result . Request
177+ token := reqStr
143178 display := token
144179 if len (display ) > 50 {
145180 display = display [:50 ]
@@ -152,16 +187,16 @@ func main() {
152187 return
153188 }
154189
155- if result . Request == "CAPCHA_NOT_READY" {
190+ if reqStr == "CAPCHA_NOT_READY" {
156191 fmt .Printf ("[*] Not ready yet, waiting %ds...\n " , pollInterval )
157192 time .Sleep (time .Duration (pollInterval ) * time .Second )
158193 elapsed += pollInterval
159194 backoff = pollInterval
160195 continue
161196 }
162197
163- if transientErrors [result . Request ] {
164- fmt .Printf ("[!] Transient error: %s, retrying in %ds...\n " , result . Request , backoff )
198+ if transientErrors [reqStr ] {
199+ fmt .Printf ("[!] Transient error: %s, retrying in %ds...\n " , reqStr , backoff )
165200 time .Sleep (time .Duration (backoff ) * time .Second )
166201 elapsed += backoff
167202 if backoff < 30 {
@@ -170,13 +205,13 @@ func main() {
170205 continue
171206 }
172207
173- if solveErrors [result . Request ] {
174- fmt .Printf ("[!] Solve error: %s\n " , result . Request )
208+ if solveErrors [reqStr ] {
209+ fmt .Printf ("[!] Solve error: %s\n " , reqStr )
175210 fmt .Println (" The CAPTCHA could not be solved. Verify parameters and retry." )
176211 os .Exit (1 )
177212 }
178213
179- fmt .Printf ("[!] Unexpected error: %s\n " , result . Request )
214+ fmt .Printf ("[!] Unexpected error: %s\n " , reqStr )
180215 os .Exit (1 )
181216 }
182217
0 commit comments