@@ -12,6 +12,10 @@ import (
1212 "strings"
1313 "net/http"
1414 "crypto/tls"
15+ "compress/gzip"
16+ "compress/zlib"
17+
18+ "github.com/andybalholm/brotli"
1519
1620 "github.com/bytedance/sonic"
1721)
@@ -198,13 +202,41 @@ func Mode1(url string) {
198202 log .Fatal (err )
199203 }
200204
205+ var reader io.ReadCloser
206+
207+ switch res .Header .Get ("Content-Encoding" ) {
208+ case "gzip" :
209+ gzReader , err := gzip .NewReader (res .Body )
210+ if err != nil {
211+ fmt .Printf ("Error creating gzip reader: %v\n " , err )
212+ return
213+ }
214+ reader = gzReader
215+ case "deflate" :
216+ zlibReader , err := zlib .NewReader (res .Body )
217+ if err != nil {
218+ fmt .Printf ("Error creating deflate reader: %v\n " , err )
219+ return
220+ }
221+ reader = zlibReader
222+ case "br" :
223+ reader = io .NopCloser (brotli .NewReader (res .Body ))
224+ default :
225+ reader = res .Body
226+ }
201227 defer res .Body .Close ()
202228
203- body , err := io .ReadAll (res .Body )
229+ if res .StatusCode >= 400 {
230+ return
231+ }
232+
233+ body , err := io .ReadAll (reader )
204234 if err != nil {
205- log .Fatal (err )
235+ fmt .Printf ("Error reading response body: %v\n " , err )
236+ return
206237 }
207238
239+
208240 os .WriteFile ("response.txt" , body , os .ModePerm )
209241 fmt .Println (Green + "[+] Response:" , res .Status + Reset )
210242 fmt .Println (Green + "[+] Response URL:" , res .Request .URL .String () + Reset )
@@ -307,11 +339,38 @@ func Mode3(url string) {
307339 log .Fatal (err )
308340 }
309341
342+ var reader io.ReadCloser
343+
344+ switch res .Header .Get ("Content-Encoding" ) {
345+ case "gzip" :
346+ gzReader , err := gzip .NewReader (res .Body )
347+ if err != nil {
348+ fmt .Printf ("Error creating gzip reader: %v\n " , err )
349+ return
350+ }
351+ reader = gzReader
352+ case "deflate" :
353+ zlibReader , err := zlib .NewReader (res .Body )
354+ if err != nil {
355+ fmt .Printf ("Error creating deflate reader: %v\n " , err )
356+ return
357+ }
358+ reader = zlibReader
359+ case "br" :
360+ reader = io .NopCloser (brotli .NewReader (res .Body ))
361+ default :
362+ reader = res .Body
363+ }
310364 defer res .Body .Close ()
311365
312- body , err := io .ReadAll (res .Body )
366+ if res .StatusCode >= 400 {
367+ return
368+ }
369+
370+ body , err := io .ReadAll (reader )
313371 if err != nil {
314- log .Fatal (err )
372+ fmt .Printf ("Error reading response body: %v\n " , err )
373+ return
315374 }
316375
317376 os .WriteFile ("response.txt" , body , os .ModePerm )
@@ -320,7 +379,7 @@ func Mode3(url string) {
320379 fmt .Println (Green + "[+] Saved response to response.txt" + Reset )
321380}
322381
323- func Mode4 (url string , errorMsg string ) {
382+ ffunc Mode4 (url string , errorMsg string ) {
324383 fmt .Println (Yellow + "[*] Testing URL:" , url + Reset )
325384 fmt .Println (Yellow + "[*] Testing error message:" , errorMsg + Reset )
326385 fmt .Println (Yellow + "[*] Mode: 4 (Error Message Check)" + Reset )
@@ -366,11 +425,38 @@ func Mode4(url string, errorMsg string) {
366425 log .Fatal (err )
367426 }
368427
428+ var reader io.ReadCloser
429+
430+ switch res .Header .Get ("Content-Encoding" ) {
431+ case "gzip" :
432+ gzReader , err := gzip .NewReader (res .Body )
433+ if err != nil {
434+ fmt .Printf ("Error creating gzip reader: %v\n " , err )
435+ return
436+ }
437+ reader = gzReader
438+ case "deflate" :
439+ zlibReader , err := zlib .NewReader (res .Body )
440+ if err != nil {
441+ fmt .Printf ("Error creating deflate reader: %v\n " , err )
442+ return
443+ }
444+ reader = zlibReader
445+ case "br" :
446+ reader = io .NopCloser (brotli .NewReader (res .Body ))
447+ default :
448+ reader = res .Body
449+ }
369450 defer res .Body .Close ()
370451
371- body , err := io .ReadAll (res .Body )
452+ if res .StatusCode >= 400 {
453+ return
454+ }
455+
456+ body , err := io .ReadAll (reader )
372457 if err != nil {
373- log .Fatal (err )
458+ fmt .Printf ("Error reading response body: %v\n " , err )
459+ return
374460 }
375461
376462 bodyStr := string (body )
@@ -382,7 +468,7 @@ func Mode4(url string, errorMsg string) {
382468 } else {
383469 fmt .Println (Red + "[-] Error message not found in response body: " + errorMsg + "\n [-] This means if a profile does not exist on %s" , url , "I CANNOT detect it!" + Reset )
384470 }
385- }
471+ }
386472
387473func main () {
388474
0 commit comments