د Go په HTTP پېرودونکي کې د SOCKS5 کوربه نومونو حلول
پوه شئ چې ولې socks5 او socks5h د Go په معیاري HTTP لېږد کې بېلابېل DNS حالتونه نه ټاکي.
د 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 لېږدول.