Kontroller en proxyliste med begrenset parallellitet
Begrens parallelle proxykontroller og registrer hva hver kontroll faktisk fastslo for målstedet.
var options = new ParallelOptions
{
MaxDegreeOfParallelism = 8,
CancellationToken = cancellationToken
};
await Parallel.ForEachAsync(endpoints, options,
async (endpoint, token) =>
{
var result = await ProbeAsync(endpoint, target, token);
observations.Add(result);
});Bruk en begrenset arbeiderpool i stedet for å starte én oppgave per endepunkt. For kontroller mot tillatte offentlige mål gir den gratis proxylisten kandidatrader; behold protokollen til hver oppføring når sonden bygges. Dette .NET-planleggingsutdraget forutsetter en proxybevisst ProbeAsync og en trådsikker observations-samler. Åtte er en illustrativ grense, ikke et målt optimum. Sonden trenger fortsatt grenser per forsøk og avbrytelse av hele jobben.
Ta vare på hvert fullførte resultat sammen med inndataene, selv når fullføringsrekkefølgen er annerledes. Registrer protokoll, endepunkt, mål, metode, medgått tid og utfall. Tilkoblingsfeil, avvist proxy-innlogging, avvist CONNECT og et mottatt svar fra nettstedet er forskjellige observasjoner.
En åpen TCP-port beviser ikke proxy-forhandling. Å hente proxyadressen som et nettsted er også noe annet enn å bruke den til å be om målet.
Velg mål og metode etter den påkrevde egenskapen. HEAD kan spare kroppstrafikk, men beviser ikke at GET returnerer nyttig innhold; et nettsted kan avvise det ene og tillate det andre. HTTPS legger til CONNECT og destinasjons-TLS som mangler i ren HTTP. En utgangsadresse er en annen observasjon på destinasjonssiden, atskilt fra den konfigurerte inngangen.
Begrenset arbeid hindrer kontrolløren i å bruke opp egne sockets, minne eller planlegger før den kan vurdere ruten. Et trinnvis resultat forblir nyttig for utvalgspolicyen uten å late som ett vellykket mål gjør et endepunkt universelt godt.