Provjera popisa proxyja s ograničenim paralelizmom
Ograničite paralelne provjere proxyja i zabilježite što je svaka provjera doista utvrdila za ciljno web sjedište.
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);
});Rabite ograničen skup radnika umjesto pokretanja zasebnog zadatka za svaku završnu točku. Za provjere prema dopuštenim javnim ciljevima besplatan popis proxyja daje retke kandidata; pri izradi sonde sačuvajte protokol svakog unosa. Ovaj .NET fragment raspoređivanja pretpostavlja ProbeAsync koji poznaje proxy i skupljač observations siguran za dretve. Osam je ilustrativna granica, a ne izmjereni optimum. Sonda i dalje treba ograničenja po pokušaju i otkazivanje cijelog posla.
Čuvajte svaki dovršeni rezultat uz njegov ulaz čak i kad se redoslijed dovršetka razlikuje. Bilježite protokol, završnu točku, cilj, metodu, proteklo vrijeme i ishod. Neuspjeh veze, odbijanje proxy prijave, odbijeni CONNECT i primljeni odgovor sjedišta različita su opažanja.
Otvoren TCP port ne dokazuje pregovaranje s proxyjem. Dohvaćanje adrese proxyja kao web sjedišta također se razlikuje od njezine uporabe za zahtjev prema cilju.
Odaberite cilj i metodu prema traženoj sposobnosti. HEAD može uštedjeti promet tijela, ali ne dokazuje da GET vraća koristan sadržaj; sjedište može odbiti jedno i dopustiti drugo. HTTPS dodaje CONNECT i TLS odredišta kojih nema u običnom HTTP-u. Adresa izlaza još je jedno opažanje na strani odredišta, odvojeno od konfiguriranog ulaza.
Ograničen rad sprječava provjeravatelja da iscrpi vlastite sockete, memoriju ili raspoređivač prije nego što može procijeniti rutu. Etapni rezultat ostaje koristan za politiku odabira bez pretvaranja da jedna uspješna destinacija čini završnu točku univerzalno dobrom.