Leig le co-theacsa Go stad a chur air suidheachadh ceangail SOCKS
Cleachd an eadar-aghaidh ContextDialer a chaidh a chur a-mach airson slighe SOCKS Go agus dèan eadar-dhealachadh eadar cur stad air ceangal agus ceann-làithean air trafaig aplacaid nas fhaide air adhart.
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)
}Taobh a-staigh pasgan lìonraidh Go a tha ann mar-thà, cleachd na h-in-ionmhais context, errors, net, time agus x/net/proxy. Chan eil an argamaid nil a' taghadh creideasan SOCKS sam bith. Airson ceann-uidhe poblach air slighe proxy poblach a tha ceadaichte, tha an liosta proxy SOCKS5 a' tabhann thagraichean airson ceann-phuing an dialer.
Tha an dearbhadh proxy.ContextDialer a chaidh a chur a-mach a' toirt air buileachaidhean nach eil a' faighinn taic fàiligeadh gu soilleir. Thoir sùil air an eisimeileachd a chaidh a chur an sàs an àite a bhith ag ainmeachadh seòrsa dialer a-staigh no a' tòiseachadh goroutine a tha a' bacadh nach urrainn don neach-fàgail a stiùireadh.
Tha an co-theacsa a' riaghladh stèidheachadh a' cheangail. Aon uair 's gun tèid net.Conn a thilleadh, cuir ceann-làithean leughaidh/sgrìobhaidh iomchaidh no ceann-làithean iarrtais aig ìre nas àirde an sàs. Tha ceann-là ceangail dialer bunaiteach agus buidseat iomlan aplacaid nan crìochan eadar-dhealaichte.
Airson amalachadh giùlain HTTP, cùm a ghiùlan àbhaisteach TLS agus HTTP. Is e an t-sruth SOCKS mothachail air co-theacsa a thèid a thilleadh an gluasad chun a' ghiùlain, chan e freagairt no poileasaidh fad-beatha airson a h-uile beit às dèidh sin.