A Go 1.27.3 standard HTTP-transportjában a socks5 és a socks5h azonosan kezeli a célneveket. A gépnévvel megadott célt gépnévként küldi a proxynak. E sémák cseréje nem vált helyi és távoli DNS között úgy, mint a curlben.

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)
}

Cserélje le a dokumentációs címet saját SOCKS5-végpontjára; jelölteket a SOCKS5-proxyk listáján talál. A példa a net/http saját transportját használja; más Go-könyvtár eltérő működést valósíthat meg.

Két nevet továbbra is meg kell különböztetni. A számszerű proxycím nem igényli a proxy gépnevének keresését; a névvel megadott proxyt helyben meg kell találni a SOCKS-kérés küldése előtt. A számszerű célnak nincs feloldandó célneve, így nem mutatja meg a gépnevek kezelését. A tényleges SOCKS-választáshoz nézze meg, hogy a célmező nevet vagy címet tartalmaz-e.

A standard transport a http, https, socks5 és socks5h proxysémákat támogatja. Az általános SOCKS-címke nem bizonyítja a végpont SOCKS5-támogatását. Ez a példa HTTP-t küld TCP-n, és nem tesztel más SOCKS-parancsot vagy UDP-továbbítást.

Kapcsolódó cikkek