HTTP/2 በ Go የ SOCKS ዋሻ ውስጥ ይገባል
መደበኛውን የ HTTP ማጓጓዣ ይቅዱ፣ የ SOCKS ፕሮክሲውን ይምረጡ እና በትክክል የተደራደረውን የመድረሻ ፕሮቶኮል ይመርምሩ።
የ SOCKS ዋሻ የ TCP ግንኙነትን ይሸከማል። Go በዚያ ዋሻ ውስጥ ከመድረሻው ጋር TLS ማከናወን እና እዚያ HTTP/2 መደራደር ይችላል፤ የ SOCKS አገልጋዩ ራሱ HTTP/2 መናገር አያስፈልገውም።
የ Go መደበኛ ነባሪ ማጓጓዣን በሚይዝ ፕሮግራም ውስጥ ውቅሩን ይቅዱ እና ፕሮክሲውን ይምረጡ፦
import (
"net/http"
"net/url"
"time"
)
proxyURL := &url.URL{
Scheme: "socks5",
Host: "proxy.example:1080",
}
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}
ፕሮክሲውና መድረሻው የተለያዩ እሴቶች ሆነው ይቆያሉ። ለፕሮክሲው እሴት ከየ SOCKS5 ፕሮክሲ ዝርዝር የ SOCKS5 መጨረሻ ነጥብ ይምረጡ፤ HTTP/2 አሁንም ከመድረሻው ጋር ይደራደራል። clientን ተጠቅመው እውነተኛውን የ HTTPS አገልግሎት URL ይጠይቁ፣ ከዚያ የምላሹን አካል በመተግበሪያው የተለመደ የሕይወት ዑደት ይዝጉ።
መደበኛው ነባሪ ማጓጓዣ HTTP/2ን ይደግፋል። መቅዳቱ ያንን ውቅር ሲያቆይ የፕሮክሲ ምርጫው እንዲቀየር ይፈቅዳል። የዓይነት ማረጋገጫው ፕሮግራሙ http.DefaultTransportን በሌላ RoundTripper አልተካውም ብሎ ያስባል።
በተናጠል ለተገነባ ማጓጓዣ የ HTTP/2 ውቅሩን ይገምግሙ፣ በተለይ ብጁ የ dial ወይም የ TLS መንጠቆዎችን ሲያቀርቡ። Go ForceAttemptHTTP2ን እና በአዲሶቹ ስሪቶች ለእነዚያ ምርጫዎች ግልጽ የ Protocols ውቅር ያጋልጣል።
መድረሻው አሁንም HTTP/2ን በ TLS ድርድር ማቅረብ አለበት። ምን እንደተጠቀመ ለማየት የተሳካውን ምላሽ Proto ወይም ProtoMajor እሴት ይመርምሩ። በ SOCKS የተሳካ የ HTTPS ጥያቄ በራሱ የተደራደረው ፕሮቶኮል HTTP/2 መሆኑን አያረጋግጥም።