Go ئوبيېكتىنىڭ SOCKS ئۇلىنىش قۇرۇشنى بىكار قىلىشىغا يول قويۇڭ
Go SOCKS يولى ئۈچۈن چىقىرىلغان ContextDialer كۆرۈنمە يۈزىنى ئىشلىتىپ، ئۇلىنىش بىكار قىلىش بىلەن كېيىنكى ئەپ ترافىكىنىڭ ۋاقىت چېكىنى ئايرىڭ.
func dialViaSOCKS(ctx context.Context, destination string) (net.Conn, error) {
dialer, err := proxy.SOCKS5(
"tcp",
"127.0.0.1:1080",
nil,
&net.Dialer{Timeout: 5 * time.Second},
)
if err != nil {
return nil, err
}
contextDialer, ok := dialer.(proxy.ContextDialer)
if !ok {
return nil, errors.New("SOCKS dialer lacks context support")
}
return contextDialer.DialContext(ctx, "tcp", destination)
}مەۋجۇت Go تور بوغچىسى ئىچىدە context, errors, net, time ۋە x/net/proxy ئىمپورتلىرىنى ئىشلىتىڭ. nil ئارگۇمېنتى ھېچقانداق SOCKS ئۇچۇرىنى تاللىمايدۇ. رۇخسەت قىلىنغان ئاممىۋى پروكسىي يولىدىكى ئاممىۋى نىشان ئۈچۈن SOCKS5 پروكسىي تىزىملىكى dialer نىڭ ئاخىرقى نۇقتىسى ئۈچۈن نامزاتلارنى تەمىنلەيدۇ.
چىقىرىلغان proxy.ContextDialer دەۋاسى قوللانمايدىغان ئەمەلىيەتلەرنى ئوچۇق مەغلۇپ قىلىدۇ. ئىچكى dialer تۈرىنى ئاتاش ياكى چاقىرغۇچى باشقۇرالمايدىغان توسىدىغان goroutine باشلاش ئورنىغا ئورنىتىلغان باغلىنىشنى تەكشۈرۈڭ.
ئوبيېكت ئۇلىنىش قۇرۇشنى باشقۇرىدۇ. net.Conn قايتۇرۇلغاندىن كېيىن مۇناسىپ ئوقۇش/يېزىش ياكى يۇقىرى دەرىجىلىك تەلەپ ۋاقىت چېكىنى قوللىنىڭ. ئاساسىي dialer نىڭ ئۇلىنىش ۋاقتى چېكى ۋە ئەپنىڭ ئومۇمىي بۈدجېتى ئوخشىمىغان چەكلەر.
HTTP توشۇش بىرلەشمىسى ئۈچۈن ئۇنىڭ نورمال TLS ۋە HTTP قىلمىشىنى ساقلاڭ. قايتۇرۇلغان ئوبيېكتنى چۈشىنىدىغان SOCKS ئېقىمى توشۇشقا تاپشۇرۇش، جاۋاب ئەمەس ۋە كېيىنكى بارلىق بايتلار ئۈچۈن ئۆمۈر سىياسىتى ئەمەس.