65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
"git.supernets.org/perp/falcon"
|
|
)
|
|
|
|
// Colors
|
|
const (
|
|
reset = "\033[0m"
|
|
blue = "\033[34m"
|
|
green = "\033[32m"
|
|
red = "\033[31m"
|
|
)
|
|
|
|
func main() {
|
|
// Read file
|
|
content, err := os.ReadFile(os.Args[1])
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// Create falcon, set proxies & set timeout
|
|
f := falcon.New(10)
|
|
f.Proxies = strings.Split(string(content), "\n")
|
|
f.Timeout = time.Second * 5
|
|
|
|
// Start falcon
|
|
err = f.Start()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// Store count
|
|
var count int
|
|
|
|
// Go through proxies
|
|
for range len(f.Proxies) {
|
|
// Receive from incoming channels
|
|
select {
|
|
case socks5 := <-f.SOCKS5:
|
|
// Add count
|
|
count += 1
|
|
|
|
// Print information
|
|
fmt.Printf("%sIP%s: %s%s\n", green, reset, blue, socks5.Query)
|
|
fmt.Printf("%sISP%s: %s%s\n", blue, reset, green, socks5.Isp)
|
|
fmt.Printf("%sCountry%s: %s%s\n", green, reset, blue, socks5.Country)
|
|
fmt.Printf("%sCity%s: %s%s\n", blue, reset, green, socks5.City)
|
|
fmt.Println(reset)
|
|
|
|
case err := <-f.Error:
|
|
// Print error
|
|
fmt.Printf("%s%s%s\n", red, err, reset)
|
|
}
|
|
}
|
|
|
|
// Print count
|
|
fmt.Printf("Found %s%d%s SOCKS5 proxies\n", green, count, reset)
|
|
}
|