Í staðlaðri HTTP-flutningslausn Go 1.27.3 meðhöndla socks5 og socks5h áfangastaðarnöfn eins. Mark með hýsilheiti er sent milliþjóninum sem hýsilheiti. Að skipta milli skemanna skiptir ekki milli staðbundins og fjarlægs DNS eins og í 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)
}

Skiptu skjölunarvistfanginu út fyrir þinn SOCKS5-endapunkt; valkosti má finna á listanum yfir SOCKS5-milliþjóna. Dæmið notar eigin flutningslausn net/http; annað Go-safn getur útfært aðra hegðun.

Samt þarf að greina á milli tveggja nafna. Tölulegt milliþjónsvistfang þarf enga uppflettingu milliþjónshýsils; milliþjón með nafni verður að finna staðbundið áður en senda má SOCKS-beiðni. Tölulegur áfangastaður hefur ekkert markheiti til að leysa og getur ekki sýnt meðhöndlun hýsilheita. Til að skoða raunverulegt SOCKS-val skaltu athuga hvort áfangastaðarreiturinn beri nafn eða vistfang.

Staðlaða flutningslausnin styður milliþjónsskema http, https, socks5 og socks5h. Almennt SOCKS-heiti staðfestir ekki SOCKS5-stuðning á endapunkti. Dæmið sendir HTTP yfir TCP og prófar hvorki aðrar SOCKS-skipanir né UDP-framsendingu.

Tengdir greinar