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 өткөрүп берүүнү да текшербейт.

Тектеш макалалар