Kontrollera en proxylista med begränsad parallellitet
Begränsa parallella proxykontroller och registrera vad varje kontroll faktiskt fastställde för målwebbplatsen.
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);
});Använd en begränsad arbetarpool i stället för att starta en uppgift per slutpunkt. För kontroller mot tillåtna offentliga mål levererar den kostnadsfria proxylistan kandidatrader; behåll varje posts protokoll när sonden byggs. Detta .NET-schemaläggningsutdrag förutsätter en proxy medveten ProbeAsync och en trådsäker observations-samlare. Åtta är en illustrativ gräns, inte ett uppmätt optimum. Sonden behöver fortfarande gränser per försök och avbrytande av hela jobbet.
Behåll varje slutfört resultat tillsammans med dess indata även när slutförandeordningen skiljer sig. Registrera protokoll, slutpunkt, mål, metod, förfluten tid och utfall. Anslutningsfel, avvisad proxyinloggning, avvisad CONNECT och ett mottaget svar från webbplatsen är olika observationer.
En öppen TCP-port bevisar inte proxyförhandling. Att hämta proxyadressen som en webbplats skiljer sig också från att använda den för att begära målet.
Välj mål och metod efter den egenskap som krävs. HEAD kan spara kroppstrafik men bevisar inte att GET returnerar användbart innehåll; en webbplats kan avvisa det ena och tillåta det andra. HTTPS lägger till CONNECT och mål-TLS som saknas i vanlig HTTP. En utgångsadress är en annan observation på målsidan, skild från den konfigurerade ingången.
Begränsat arbete hindrar kontrollören från att göra slut på sina egna sockets, minne eller schemaläggare innan den kan bedöma vägen. Ett stegvist resultat förblir användbart för urvalspolicyn utan att låtsas att ett lyckat mål gör en slutpunkt universellt bra.