0%

go http 代理

最近要使用 http 代理发起请求,查资料的时候感觉网上的资料有点混乱,所以自己整理一下以供以后参考。

一般来说最常用的代理方式有两种 socks5 和 http 。这里我演示一下,我记得以前 使用 socks5 代理是需要使用到 官方开发库的,不知道是不是资料显示错误。但是现在是可以不用 第三方库可开发库就可以使用 socks5 的。

不多废话直接上代码。

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
    "time"
)

func main() {
    //proxy, err := url.Parse("http://127.0.0.1:8118") // 如果使用的是 http 代理 的话就使用这一句
    proxy, err := url.Parse("socks5://127.0.0.1:1080") // 解析代理地址 我个人测试 socks5 http 都可以
    if err != nil {
        panic(err)
    }
    client := http.Client{ // 新建客户端
        Transport: &http.Transport{Proxy: http.ProxyURL(proxy)}, // 使用 代理
        Timeout:   10 * time.Second, // 指定 http 超时时间
    }

    resp, err := client.Get("https://api.ip.sb/ip") // 发起请求
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body) // 读取响应内容
    if err != nil {
        panic(err)
    }
    fmt.Println(string(body)) // 打印响应内容 这里我查了一下自己的 ip
}

大概就是这样子的,祝你玩得愉快