Utatuzi wa majina ya seva za SOCKS5 katika kiteja cha HTTP cha Go
Elewa kwa nini socks5 na socks5h hazichagui hali tofauti za DNS katika usafirishaji wa kawaida wa HTTP wa Go.
Katika usafirishaji wa kawaida wa HTTP wa Go 1.27.3, socks5 na socks5h hushughulikia majina ya lengwa kwa njia ileile. Lengwa lililotajwa kwa jina la seva hutumwa kwa proksi kama jina la seva. Kubadilisha skimu hizi hakubadilishi kati ya DNS ya ndani na ya mbali kama katika 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)
}
Badilisha anwani ya nyaraka kwa ncha yako ya SOCKS5; unaweza kuvinjari chaguo katika orodha ya proksi za SOCKS5. Mfano unatumia usafirishaji wa net/http yenyewe; maktaba nyingine ya Go inaweza kufanya kazi tofauti.
Bado kuna majina mawili ya kutofautisha. Anwani ya proksi ya nambari haihitaji utafutaji wa jina la seva ya proksi; proksi iliyotajwa kwa jina lazima ipatikane ndani kabla ya ombi la SOCKS kutumwa. Lengwa la nambari halina jina la kutatuliwa na haliwezi kuonyesha ushughulikiaji wa majina ya seva. Ili kuchunguza chaguo halisi la SOCKS, angalia kama sehemu ya lengwa ina jina au anwani.
Usafirishaji wa kawaida unaunga mkono skimu za proksi http, https, socks5 na socks5h. Lebo ya jumla ya SOCKS haithibitishi kwamba ncha inaunga mkono SOCKS5. Mfano huu hutuma HTTP kupitia TCP na haujaribu amri nyingine za SOCKS wala upitishaji wa UDP.