Golang url.Parse 总是 return 无效的控制字符 URL
Golang url.Parse always return Invalid Control Character URL
我正在尝试使用从 free-proxy-list.net 获得的代理来抓取一些网站,并使用 Golang 将其应用到我的本地 http 请求中,但是当我使用 [=17= 解析代理时]() 总是 return 无效的控制字符 URL
func getProxy() *url.URL {
proxyUrl := "https://www.proxy-list.download/api/v1/get?type=http&country=US"
client := &http.Client{}
req, err := http.NewRequest("GET", proxyUrl, nil)
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error proxy ", err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error response body", err)
}
details := string(body)
temp := strings.Split(details, "\n")
fmt.Println("http://" + temp[rand.Intn(30)])
checkProxy, err := url.Parse("http://" + temp[rand.Intn(10)])
if err != nil {
fmt.Println("Bad proxy URL", err)
}
return checkProxy
}
proxyUrl := "https://www.proxy-list.download/api/v1/get?type=http&country=US"
此 URL 的内容是 ip:port\r\n´, i.e. the line delimiter is
\r\n` 格式的行(DOS/Windows 样式)。
temp := strings.Split(details, "\n")
这将内容按 \n
拆分,即 UNIX 风格的行分隔符。这会在字符串中留下来自 DOS 行定界符的 \r
,从而导致 ip:port\r
.
... always return Invalid Control Character URL
这是它所抱怨的行中剩余的 \r
。
代理列表中有尾随空格和回车 returns。
尝试
fmt.Println("http://" + strings.TrimSpace(temp[rand.Intn(30)]))
checkProxy, err := url.Parse("http://" + strings.TrimSpace(temp[rand.Intn(10)]))
这有效。
我正在尝试使用从 free-proxy-list.net 获得的代理来抓取一些网站,并使用 Golang 将其应用到我的本地 http 请求中,但是当我使用 [=17= 解析代理时]() 总是 return 无效的控制字符 URL
func getProxy() *url.URL {
proxyUrl := "https://www.proxy-list.download/api/v1/get?type=http&country=US"
client := &http.Client{}
req, err := http.NewRequest("GET", proxyUrl, nil)
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error proxy ", err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error response body", err)
}
details := string(body)
temp := strings.Split(details, "\n")
fmt.Println("http://" + temp[rand.Intn(30)])
checkProxy, err := url.Parse("http://" + temp[rand.Intn(10)])
if err != nil {
fmt.Println("Bad proxy URL", err)
}
return checkProxy
}
proxyUrl := "https://www.proxy-list.download/api/v1/get?type=http&country=US"
此 URL 的内容是 ip:port\r\n´, i.e. the line delimiter is
\r\n` 格式的行(DOS/Windows 样式)。
temp := strings.Split(details, "\n")
这将内容按 \n
拆分,即 UNIX 风格的行分隔符。这会在字符串中留下来自 DOS 行定界符的 \r
,从而导致 ip:port\r
.
... always return Invalid Control Character URL
这是它所抱怨的行中剩余的 \r
。
代理列表中有尾随空格和回车 returns。 尝试
fmt.Println("http://" + strings.TrimSpace(temp[rand.Intn(30)]))
checkProxy, err := url.Parse("http://" + strings.TrimSpace(temp[rand.Intn(10)]))
这有效。