У стандардном HTTP транспорту језика Go 1.27.3, socks5 и socks5h обрађују имена одредишта на исти начин. Одредиште задато именом хоста шаље се проксију као име хоста. Промена тих шема не пребацује између локалног и удаљеног DNS-а као у curl-у.

package main

import (
    "fmt"
    "log"
    "net/http"
    "net/url"
    "time"
)

func main() {
    proxyURL, err := url.Parse("socks5://203.0.113.10:1080")
    if err != nil {
        log.Fatal(err)
    }

    transport := http.DefaultTransport.(*http.Transport).Clone()
    transport.Proxy = http.ProxyURL(proxyURL)
    defer transport.CloseIdleConnections()

    client := &http.Client{
        Transport: transport,
        Timeout: 15 * time.Second,
    }
    response, err := client.Get("https://example.com/")
    if err != nil {
        log.Fatal(err)
    }
    defer response.Body.Close()
    fmt.Println(response.StatusCode)
}

Замените адресу за документацију својом SOCKS5 крајњом тачком; кандидате можете потражити на листи SOCKS5 проксија. Пример користи транспорт самог пакета net/http; друга Go библиотека може да се понаша другачије.

И даље треба разликовати два имена. Нумеричка адреса проксија не захтева разрешавање имена његовог хоста; прокси задат именом мора да се пронађе локално пре слања SOCKS захтева. Нумеричко одредиште нема име за разрешавање и не може да покаже обраду имена хоста. Да бисте проверили стварни избор у SOCKS-у, погледајте да ли поље одредишта садржи име или адресу.

Стандардни транспорт подржава прокси шеме http, https, socks5 и socks5h. Општа ознака SOCKS не доказује да крајња тачка подржава SOCKS5. Овај пример шаље HTTP преко TCP-а и не испитује друге SOCKS команде нити UDP прослеђивање.

Повезани чланци