אין דעם סטאַנדאַרטן HTTP־טראַנספּאָרט פֿון Go 1.27.3 באַהאַנדלען socks5 און socks5h צילנעמען אויף דעם זעלבן אופֿן. אַ ציל וואָס איז אָנגעגעבן מיט אַ האָסטנאָמען ווערט געשיקט צום פּראָקסי ווי אַ האָסטנאָמען. דאָס בײַטן צווישן די סכעמעס באַשטימט נישט צי DNS איז לאָקאַל אָדער ווײַט, ווי עס טוט אין 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)
}

פֿאַרבײַט די דאָקומענטאַציע־אַדרעס מיט דײַן SOCKS5־ענדפּונקט; מעגלעכע אָפּציעס געפֿינט מען אין דער רשימה פֿון SOCKS5־פּראָקסיס. דער בײַשפּיל ניצט דעם אייגענעם טראַנספּאָרט פֿון net/http; אַן אַנדערע Go־ביבליאָטעק קען האָבן אַן אַנדער נאַטור.

עס זענען נאָך אַלץ דאָ צוויי נעמען צו אונטערשיידן. אַ נומערישע פּראָקסי־אַדרעס דאַרף נישט זוכן דעם נאָמען פֿונעם פּראָקסי־האָסט; אַ פּראָקסי וואָס איז אָנגעגעבן מיט אַ נאָמען מוז מען געפֿינען לאָקאַל איידער מע שיקט אַ SOCKS־בקשה. אַ נומערישער ציל האָט נישט קיין צילנאָמען אויפֿצולייזן און קען נישט ווײַזן ווי האָסטנעמען ווערן באַהאַנדלט. כּדי צו קאָנטראָלירן די אמתע SOCKS־ברירה, זע צי דאָס ציל־פֿעלד טראָגט אַ נאָמען אָדער אַן אַדרעס.

דער סטאַנדאַרטער טראַנספּאָרט שטיצט די פּראָקסי־סכעמעס http, https, socks5 און socks5h. אַ כללותדיקער SOCKS־צעטל באַווײַזט נישט אַז דער ענדפּונקט שטיצט SOCKS5. דער בײַשפּיל שיקט HTTP איבער TCP און פּרוּווט נישט אַנדערע SOCKS־באַפֿעלן אָדער UDP־ווײַטערשיקונג.

פֿאַרבונדענע אַרטיקלען