באַאַכט דעם CONNECT סטאַטוס פון Go אין OnProxyConnectResponse
ינסטאַלירט דעם האָק אויף דעם טראַנספּאָרט פֿאַר די פֿאָדערונגען; צוריקגעבן nil האַלט זיין נאָרמאַלער טונעל-סטאַטוס פּריפֿונג.
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
transport.OnProxyConnectResponse = func(
_ context.Context,
_ *url.URL,
_ *http.Request,
response *http.Response,
) error {
observeConnect(response.StatusCode, response.Header.Get("X-Proxy-Region"))
return nil
}
client := &http.Client{Transport: transport}ניצט context, net/http און net/url; די סטאַנדאַרט טיפּ-דערקלערונג נעמט אָן אַז דער טראַנספּאָרט בלײַבט אינסטאַלירט. proxyURL ווערט פּאַרסירט, און observeConnect מוז זײַן זיכער מיט קאָנקורענץ. פֿאַר דערלויבטע פּובליקע HTTPS פּרובֿן פֿאַרזאָרגט ליסטע פֿון HTTP פּראָקסי קאַנדידאַטן פֿאַר דעם פּראָקסי URL.
דער קאַלבאַק לויפֿט פֿאַר מען פּרובֿט CONNECT פֿאַר אַ געראָטן 200, דערפֿאַר קען ער אויך באַאַכטן 407. Nil פֿירט ווײַטער די נאָרמאַלע פּריפֿונג און נעמט נישט אָן אַ אָפּגעוואָרפֿענעם טונעל; אַ טעות מאַכט די פֿאָדערונג דורכפֿאַלן.
X-Proxy-Region איז אַ בײַשפּיל וואָס דער פּראָווײַדער דעפֿינירט. לייענט דאָ סטאַטוס און העדערס און לאָזט די פּאַסידקייט פֿון קערפּער און סאָקעט בײַ Transport, וואָס באַהאַנדלט דערנאָך דעם TLS פֿון דער דעסטינאַציע.
דאָס באַאַכט דעם אויפֿשטעלן פֿון אַ נײַעם טונעל, נישט יעדע פֿאָדערונג. אַ ווידער-בנוצטע פֿאַרבינדונג האָט נישט קיין נײַעם CONNECT ענטפֿער, און דער ענטפֿער פֿון דער וועבזײַט האָט באַזונדערע העדערס.