Proxy listesini sınırlı eşzamanlılıkla denetleme
Eşzamanlı proxy denetimlerini sınırlayın ve her denetimin hedef site için gerçekte neyi kanıtladığını kaydedin.
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);
});Her uç nokta için ayrı bir görev başlatmak yerine sınırlı bir çalışan havuzu kullanın. İzin verilen genel hedeflere yönelik denetimlerde ücretsiz proxy listesi aday satırlar sağlar; sondayı kurarken her girdinin protokolünü koruyun. Bu .NET zamanlama parçası, proxy'yi bilen bir ProbeAsync ve iş parçacığına güvenli bir observations toplayıcısı varsayar. Sekiz örnek bir sınırdır, ölçülmüş bir en iyi değer değildir. Sonda yine de deneme başına sınırlara ve işin tamamının iptaline ihtiyaç duyar.
Tamamlanma sırası farklı olsa bile her tamamlanan sonucu girdisiyle birlikte saklayın. Protokol, uç nokta, hedef, yöntem, geçen süre ve sonucu kaydedin. Bağlantı hatası, proxy oturum açma reddi, reddedilen CONNECT ve siteden alınan yanıt farklı gözlemlerdir.
Bir TCP bağlantı noktasının açılması proxy anlaşmasını kanıtlamaz. Proxy adresini bir site olarak almak da onu hedefi istemek için kullanmaktan farklıdır.
Hedefi ve yöntemi gereken yeteneğe göre seçin. HEAD gövde trafiğinden tasarruf edebilir ancak GET'in yararlı içerik döndürdüğünü kanıtlamaz; bir site birini reddedip diğerine izin verebilir. HTTPS, düz HTTP'de bulunmayan CONNECT ve hedef TLS'i ekler. Çıkış adresi, yapılandırılmış girişten ayrı olarak hedef tarafın bir başka gözlemidir.
Sınırlı çalışma, denetleyicinin rotayı değerlendirmeden önce kendi soketlerini, belleğini veya zamanlayıcısını tüketmesini önler. Aşamalı sonuç, tek bir başarılı hedefin bir uç noktayı her durumda iyi yaptığını iddia etmeden seçim politikası için yararlı kalır.