Am Standard-HTTP-Transport vu Go 1.27.3 behandelen socks5 an socks5h d’Zilnimm gläich. En Zil mat Hostnumm gëtt als Hostnumm un de Proxy geschéckt. Tëscht dëse Schemaen ze wiesselen, schalt net wéi bei curl tëscht lokalem a wäitem DNS ëm.

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)
}

Ersetzt d’Dokumentatiounsadress duerch Äre SOCKS5-Endpunkt; Kandidate fannt Dir an der Lëscht vun SOCKS5-Proxyen. D’Beispill benotzt den eegene Transport vun net/http; eng aner Go-Bibliothéik kann en anert Verhalen hunn.

Zwee Nimm sinn awer weider z’ënnerscheeden. Eng numeresch Proxyadress brauch keng Proxyhost-Opléisung; e Proxy mat Numm muss lokal fonnt ginn, ier eng SOCKS-Ufro geschéckt ka ginn. En numerescht Zil huet keen Zilnumm fir opzeléisen a kann d’Hostnummbehandlung net beweisen. Kuckt fir déi tatsächlech SOCKS-Auswiel, ob d’Zilfeld en Numm oder eng Adress dréit.

De Standardtransport ënnerstëtzt d’Proxyschemaen http, https, socks5 an socks5h. Déi allgemeng Bezeechnung SOCKS beweist keng SOCKS5-Ënnerstëtzung um Endpunkt. Dëst Beispill schéckt HTTP iwwer TCP a test weder aner SOCKS-Befehler nach UDP-Weiderleedung.

Ähnlech Artikelen