Yn nhrafnidiaeth HTTP safonol Go 1.27.3, mae socks5 a socks5h yn trin enwau cyrchfannau yn yr un ffordd. Anfonir targed sydd ag enw gwesteiwr at y dirprwy fel enw gwesteiwr. Nid yw newid rhwng y cynlluniau hyn yn newid rhwng DNS lleol ac o bell fel yn 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)
}

Disodlwch gyfeiriad y ddogfennaeth â'ch pwynt terfyn SOCKS5; gellir pori ymgeiswyr yn y rhestr o ddirprwyon SOCKS5. Mae'r enghraifft yn defnyddio trafnidiaeth net/http ei hun; gall llyfrgell Go arall weithredu'n wahanol.

Mae dau enw i'w gwahaniaethu o hyd. Nid oes angen chwilio am enw gwesteiwr y dirprwy ar gyfer cyfeiriad dirprwy rhifol; rhaid dod o hyd i ddirprwy a enwir yn lleol cyn anfon cais SOCKS. Nid oes enw targed i'w ddatrys gan gyrchfan rifol, ac ni all ddangos sut y trinnir enwau gwesteiwr. I archwilio'r dewis SOCKS gwirioneddol, gwiriwch a yw'r maes cyrchfan yn cynnwys enw neu gyfeiriad.

Mae'r drafnidiaeth safonol yn cefnogi cynlluniau dirprwy http, https, socks5 a socks5h. Nid yw label SOCKS cyffredinol yn profi bod pwynt terfyn yn cefnogi SOCKS5. Mae'r enghraifft hon yn anfon HTTP dros TCP ac nid yw'n profi gorchmynion SOCKS eraill na throsglwyddo UDP.

Erthyglau cysylltiedig