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 ಬೆಂಬಲವಿದೆ ಎಂದು ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ. ಈ ಉದಾಹರಣೆ TCP ಮೇಲೆ HTTP ಕಳುಹಿಸುತ್ತದೆ; ಇತರ SOCKS ಆಜ್ಞೆಗಳನ್ನಾಗಲಿ UDP ರಿಲೇಯನ್ನಾಗಲಿ ಪರೀಕ್ಷಿಸುವುದಿಲ್ಲ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು