Eine Proxy-Liste mit begrenzter Parallelität prüfen
Begrenzen Sie parallele Proxy-Prüfungen und halten Sie fest, was jede Prüfung für die Zielwebsite tatsächlich belegt hat.
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);
});Verwenden Sie einen begrenzten Worker-Pool, statt für jeden Endpunkt eine eigene Aufgabe zu starten. Für Prüfungen gegen erlaubte öffentliche Ziele liefert die kostenlose Proxy-Liste Kandidatenzeilen; behalten Sie beim Aufbau der Probe das Protokoll jedes Eintrags bei. Dieser .NET-Planungsausschnitt setzt ein proxybewusstes ProbeAsync und einen thread-sicheren observations-Sammler voraus. Acht ist eine illustrative Grenze, kein gemessenes Optimum. Die Probe braucht weiterhin Limits pro Versuch und einen Abbruch des gesamten Laufs.
Bewahren Sie jedes abgeschlossene Ergebnis zusammen mit seiner Eingabe auf, auch wenn die Reihenfolge des Abschlusses abweicht. Erfassen Sie Protokoll, Endpunkt, Ziel, Methode, verstrichene Zeit und Ausgang. Verbindungsfehler, abgelehnte Proxy-Anmeldung, verweigertes CONNECT und eine empfangene Antwort der Website sind unterschiedliche Beobachtungen.
Ein offener TCP-Port belegt keine Proxy-Aushandlung. Die Proxy-Adresse als Website abzurufen ist ebenfalls etwas anderes, als sie für die Anfrage an das Ziel zu verwenden.
Wählen Sie Ziel und Methode nach der benötigten Fähigkeit. HEAD kann Körperverkehr sparen, belegt aber nicht, dass GET brauchbaren Inhalt zurückgibt; eine Website kann das eine ablehnen und das andere erlauben. HTTPS ergänzt CONNECT und Ziel-TLS, die in einfachem HTTP fehlen. Eine Ausgangsadresse ist eine weitere Beobachtung auf der Zielseite, getrennt vom konfigurierten Eingang.
Begrenzte Arbeit hindert den Prüfer daran, seine eigenen Sockets, seinen Speicher oder seinen Scheduler zu erschöpfen, bevor er die Route bewerten kann. Ein abgestuftes Ergebnis bleibt für die Auswahlrichtlinie nützlich, ohne vorzugeben, ein erfolgreiches Ziel mache einen Endpunkt universell gut.