// ParseUrlToIp url解析为ip func ParseUrlToIp(url string) string { _, domain, _, _, _, err := ParseUrl(url) if err != nil { log.Println("解析解析url异常: ", err) return "" } ip := ResolveDomain(domain) return ip } // ParseUrl 创建任务--解析url func ParseUrl(targetUrl string) (string, string, string, string, string, error) { if !strings.HasPrefix(targetUrl, "http") { targetUrl = "http" + "://" + targetUrl } urlPtr, err := url.Parse(targetUrl) if err != nil { return "", "", "", "", "", err } scheme := urlPtr.Scheme hostname := urlPtr.Hostname() port := urlPtr.Port() path := urlPtr.Path query := urlPtr.RawQuery if port == "" { if scheme == "http" { port = "80" } else { port = "443" } } return scheme, hostname, port, path, query, nil } // ResolveDomain 解析域名为ip func ResolveDomain(name string) string { addr, err := net.ResolveIPAddr("ip", name) if err != nil { fmt.Println("Resolution error", err.Error()) return "" } fmt.Println("Resolved address is ", addr.String()) return addr.String() }