Een proxylijst controleren met begrensde gelijktijdigheid
Beperk gelijktijdige proxycontroles en leg vast wat elke controle werkelijk voor de doelsite heeft vastgesteld.
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);
});Gebruik een begrensde workerpool in plaats van voor elk eindpunt een aparte taak te starten. Voor controles tegen toegestane openbare doelen levert de gratis proxylijst kandidaatrijen; behoud het protocol van elke vermelding bij het bouwen van de probe. Dit .NET-planningsfragment veronderstelt een proxybewuste ProbeAsync en een threadveilige observations-verzamelaar. Acht is een illustratieve grens, geen gemeten optimum. De probe heeft nog steeds limieten per poging en annulering van de hele taak nodig.
Bewaar elk voltooid resultaat samen met zijn invoer, ook wanneer de voltooiingsvolgorde anders is. Registreer protocol, eindpunt, doel, methode, verstreken tijd en uitkomst. Verbindingsfout, geweigerde proxy-aanmelding, geweigerde CONNECT en een ontvangen antwoord van de site zijn verschillende waarnemingen.
Een open TCP-poort bewijst geen proxy-onderhandeling. Het proxyadres als website ophalen is ook iets anders dan het gebruiken om het doel op te vragen.
Kies het doel en de methode op basis van de vereiste mogelijkheid. HEAD kan lichaamverkeer besparen, maar bewijst niet dat GET bruikbare inhoud teruggeeft; een site kan het ene weigeren en het andere toestaan. HTTPS voegt CONNECT en doel-TLS toe die in gewone HTTP ontbreken. Een uitgangsadres is een andere waarneming aan de doelkant, los van de geconfigureerde ingang.
Begrensd werk voorkomt dat de controleur zijn eigen sockets, geheugen of planner uitput voordat hij de route kan beoordelen. Een gefaseerd resultaat blijft nuttig voor het selectiebeleid zonder te doen alsof één geslaagd doel een eindpunt universeel goed maakt.