l15.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "log"
  6. "time"
  7. "encoding/json"
  8. )
  9. type MyIpData struct{
  10. YourIP string `json:"ip"`
  11. City string `json:"city"`
  12. Country string `json:"country"`
  13. ISP string `json:"org"`
  14. }
  15. type UA struct{
  16. UserAgent string `json:"user-agent"`
  17. }
  18. func main() {
  19. fmt.Println("Введите какой хотите user-agent")
  20. var polz string
  21. fmt.Scanln(&polz)
  22. client := &http.Client{
  23. Timeout: 10 * time.Second,
  24. }
  25. req, err := http.NewRequest("GET", "https://httpbin.org/user-agent", nil)
  26. if err != nil {
  27. log.Fatalf("%v\n", err)
  28. }
  29. req.Header.Set("User-Agent", polz)
  30. resp, err := client.Do(req)
  31. if err != nil {
  32. log.Fatalf("%v\n", err)
  33. }
  34. req2, err := http.NewRequest("GET", "https://ipinfo.io", nil)
  35. if err != nil {
  36. log.Fatalf("%v\n", err)
  37. }
  38. resp2, err := client.Do(req2)
  39. defer resp.Body.Close()
  40. var file UA
  41. err = json.NewDecoder(resp.Body).Decode(&file)
  42. if err != nil {
  43. log.Fatalf("%v\n", err)
  44. }
  45. var data MyIpData
  46. err = json.NewDecoder(resp2.Body).Decode(&data)
  47. 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)
  48. }