Vumela umongo we-Go ukhansele ukusethwa koxhumano lwe-SOCKS
Sebenzisa isixhumi-simo se-ContextDialer esikhishiwe endleleni ye-SOCKS ye-Go futhi uhlukanise ukukhanselwa koxhumano nemikhawulo yesikhathi yethrafikhi yohlelo olulandelayo.
func dialViaSOCKS(ctx context.Context, destination string) (net.Conn, error) {
dialer, err := proxy.SOCKS5(
"tcp",
"127.0.0.1:1080",
nil,
&net.Dialer{Timeout: 5 * time.Second},
)
if err != nil {
return nil, err
}
contextDialer, ok := dialer.(proxy.ContextDialer)
if !ok {
return nil, errors.New("SOCKS dialer lacks context support")
}
return contextDialer.DialContext(ctx, "tcp", destination)
}Ngaphakathi kwephakethe lenethiwekhi le-Go elikhona, sebenzisa okungeniswayo i-context, errors, net, time ne-x/net/proxy. Ingxabano ethi nil ayikhethi zicoco ze-SOCKS. Ngendawo yomphakathi emzileni wommeleli womphakathi ovunyelwe, uhlu lwabameli be-SOCKS5 lunikeza abazongenela indawo yokugcina ye-dialer.
Isiqinisekiso se-proxy.ContextDialer esikhishiwe senza ukusetshenziswa okungasekelwe kuhluleke ngokucacile. Hlola ukuncika okusetshenzisiwe esikhundleni sokuqamba uhlobo lwe-dialer lwangaphakathi noma ukuqala i-goroutine evimbayo umfoni ongeke akwazi ukuyilawula.
Umongo ulawula ukusethwa koxhumano. Uma i-net.Conn isibuyisiwe, sebenzisa imikhawulo efanele yokufunda/ukubhala noma imikhawulo yesicelo yezinga eliphezulu. Isikhathi sokuphela koxhumano lwe-dialer eyisisekelo kanye nesabelomali esiphelele sohlelo kuyimikhawulo ehlukene.
Ngokuhlanganiswa kwezokuthutha kwe-HTTP, gcina ukuziphatha kwayo okuvamile kwe-TLS ne-HTTP. Umfudlana we-SOCKS oqaphela umongo obuyisiwe ukudluliselwa kwezokuthutha, hhayi impendulo futhi hhayi inqubomgomo yempilo yabo bonke amabhayithi alandelayo.