Kontrola seznamu proxy s omezenou souběžností
Omezte souběžné kontroly proxy a zaznamenejte, co každá kontrola pro cílový web skutečně prokázala.
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);
});Použijte omezený fond pracovníků místo spouštění samostatné úlohy pro každý koncový bod. Pro kontroly proti povoleným veřejným cílům dodává seznam bezplatných proxy kandidátní řádky; při sestavování sondy zachovejte protokol každé položky. Tento fragment plánování .NET předpokládá ProbeAsync, který zná proxy, a sběrač observations bezpečný vůči vláknům. Osmička je ilustrativní mez, nikoli změřené optimum. Sonda stále potřebuje limity na jednotlivý pokus a zrušení celé úlohy.
Uchovávejte každý dokončený výsledek spolu s jeho vstupem, i když se pořadí dokončení liší. Zaznamenejte protokol, koncový bod, cíl, metodu, uplynulý čas a výsledek. Selhání spojení, odmítnutí přihlášení k proxy, zamítnutý CONNECT a přijatá odpověď webu jsou různá pozorování.
Otevřený port TCP neprokazuje vyjednávání s proxy. Načtení adresy proxy jako webu se také liší od jejího použití k požadavku na cíl.
Vyberte cíl a metodu podle požadované schopnosti. HEAD může ušetřit provoz těla, ale neprokazuje, že GET vrací užitečný obsah; web může jedno odmítnout a druhé povolit. HTTPS přidává CONNECT a TLS cíle, které v prostém HTTP chybí. Výstupní adresa je další pozorování na straně cíle, oddělené od nakonfigurovaného vstupu.
Omezená práce brání kontrole ve vyčerpání vlastních socketů, paměti nebo plánovače dřív, než může trasu posoudit. Etapový výsledek zůstává užitečný pro politiku výběru, aniž by předstíral, že jeden úspěšný cíl dělá koncový bod univerzálně dobrým.