د 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 لېږدول.

اړوندې مقالې