l15.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "log"
  6. "time"
  7. "encoding/json"
  8. "github.com/joho/godotenv"
  9. "os"
  10. "net/url"
  11. "crypto/tls"
  12. )
  13. type MyIpData struct{
  14. YourIP string `json:"query"`
  15. City string `json:"city"`
  16. Country string `json:"country"`
  17. ISP string `json:"isp"`
  18. }
  19. type UA struct{
  20. UserAgent string `json:"user-agent"`
  21. }
  22. func proxy() (bool, string) {
  23. err := godotenv.Load()
  24. if err != nil {
  25. return false, ""
  26. }
  27. proxy := os.Getenv("proxy")
  28. if proxy == "" {
  29. return false, ""
  30. }
  31. return true, proxy
  32. }
  33. func main() {
  34. transport := &http.Transport{
  35. TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
  36. }
  37. er, proxis := proxy()
  38. if er {
  39. proxyURL, err := url.Parse(proxis)
  40. if err != nil {
  41. return
  42. }
  43. transport.Proxy = http.ProxyURL(proxyURL)
  44. }
  45. fmt.Println("Введите какой хотите user-agent")
  46. var polz string
  47. fmt.Scanln(&polz)
  48. client := &http.Client{
  49. Timeout: 20 * time.Second,
  50. Transport: transport,
  51. }
  52. req, err := http.NewRequest("GET", "https://httpbin.org/user-agent", nil)
  53. if err != nil {
  54. log.Fatalf("%v\n", err)
  55. }
  56. req.Header.Set("User-Agent", polz)
  57. resp, err := client.Do(req)
  58. if err != nil {
  59. log.Fatalf("%v\n", err)
  60. }
  61. req2, err := http.NewRequest("GET", "http://ip-api.com/json", nil)
  62. if err != nil {
  63. log.Fatalf("%v\n", err)
  64. }
  65. resp2, err := client.Do(req2)
  66. defer resp.Body.Close()
  67. var file UA
  68. err = json.NewDecoder(resp.Body).Decode(&file)
  69. if err != nil {
  70. log.Fatalf("%v\n", err)
  71. }
  72. var data MyIpData
  73. err = json.NewDecoder(resp2.Body).Decode(&data)
  74. fmt.Printf("Ваш IP: %s\nВаш город по IP: %s\nВаша страна по IP: %s\nВаш провайдер по IP: %s\nВаш User-Agent: %s\n", data.YourIP, data.City, data.Country, data.ISP, file.UserAgent)
  75. }