SOCKS tunneli bitta TCP ulanishini tashiydi. Go shu tunnel orqali manzil bilan TLS bajarishi va u yerda HTTP/2 kelishishi mumkin; SOCKS serverining o'zi HTTP/2 gapirishi shart emas.

Go'ning standart standart transportini saqlaydigan dasturda uning konfiguratsiyasini klonlang va proksini tanlang:

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,
}

Proksi va manzil har xil qiymat bo'lib qoladi. Proksi qiymati uchun SOCKS5 proksilar ro'yxatidan SOCKS5 so'nggi nuqtasini tanlang; HTTP/2 hali ham manzil bilan kelishiladi. Haqiqiy HTTPS xizmati URL manzilini so'rash uchun client dan foydalaning, so'ngra javob tanasini dasturning odatiy hayot tsikli orqali yoping.

Standart standart transport HTTP/2 ni qo'llab-quvvatlaydi. Uni klonlash bu konfiguratsiyani saqlab qoladi va proksi tanlovini o'zgartirishga imkon beradi. Tur tekshiruvi dastur http.DefaultTransport ni boshqa RoundTripper bilan almashtirmagan deb taxmin qiladi.

Alohida qurilgan transport uchun uning HTTP/2 konfiguratsiyasini ko'rib chiqing, ayniqsa moslashtirilgan dial yoki TLS ilgaklarini taqdim etganda. Go ForceAttemptHTTP2 ni va yangi versiyalarda bu tanlovlar uchun aniq Protocols konfiguratsiyasini ochib beradi.

Manzil hali ham TLS kelishuvi orqali HTTP/2 taklif qilishi kerak. Nima ishlatilganini ko'rish uchun muvaffaqiyatli javobning Proto yoki ProtoMajor qiymatini tekshiring. SOCKS orqali muvaffaqiyatli HTTPS so'rovi kelishilgan protokol HTTP/2 bo'lganini o'z-o'zidan isbotlamaydi.

O'xshash maqolalar