በGo 1.27.3 መደበኛ HTTP ማጓጓዣ ውስጥ socks5 እና socks5h የመድረሻ ስሞችን በተመሳሳይ መንገድ ይይዛሉ። በአስተናጋጅ ስም የተገለጸ መድረሻ ወደ ፕሮክሲው እንደ አስተናጋጅ ስም ይላካል። እነዚህን ስኪሞች መቀየር እንደ curl በአካባቢያዊ እና በርቀት DNS መካከል አያቀያይርም።

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 ማስተላለፍን አይፈትሽም።

ተዛማጅ ጽሑፎች