सीमित समवर्तीता के साथ प्रॉक्सी सूची जाँचें
प्रॉक्सी जाँचों की समवर्तीता सीमित करें और दर्ज करें कि हर जाँच ने लक्ष्य वेबसाइट के लिए वास्तव में क्या सिद्ध किया।
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);
});हर एंडपॉइंट के लिए अलग कार्य शुरू करने के बजाय एक सीमित वर्कर पूल इस्तेमाल करें। अनुमत सार्वजनिक लक्ष्यों के विरुद्ध जाँचों के लिए मुफ़्त प्रॉक्सी सूची उम्मीदवार पंक्तियाँ देती है; प्रोब बनाते समय हर प्रविष्टि का प्रोटोकॉल बनाए रखें। यह .NET शेड्यूलिंग अंश प्रॉक्सी-सचेत ProbeAsync और थ्रेड-सुरक्षित observations संग्राहक मान लेता है। आठ एक उदाहरण-सीमा है, मापा गया इष्टतम नहीं। प्रोब को अब भी प्रति-प्रयास सीमाएँ और पूरे कार्य का रद्दीकरण चाहिए।
हर पूर्ण परिणाम को उसके इनपुट के साथ रखें, चाहे पूर्ण होने का क्रम अलग हो। प्रोटोकॉल, एंडपॉइंट, लक्ष्य, विधि, बीता समय और परिणाम दर्ज करें। कनेक्शन विफलता, प्रॉक्सी लॉगिन अस्वीकृति, अस्वीकृत CONNECT और साइट से प्राप्त प्रतिक्रिया अलग-अलग अवलोकन हैं।
TCP पोर्ट खुलना प्रॉक्सी वार्ता सिद्ध नहीं करता। प्रॉक्सी पते को वेबसाइट के रूप में लाना भी उसे लक्ष्य के अनुरोध के लिए इस्तेमाल करने से अलग है।
आवश्यक क्षमता के अनुसार लक्ष्य और विधि चुनें। HEAD बॉडी ट्रैफ़िक बचा सकता है पर यह सिद्ध नहीं करता कि GET उपयोगी सामग्री लौटाता है; कोई साइट एक को अस्वीकार और दूसरे को अनुमति दे सकती है। HTTPS वे CONNECT और गंतव्य TLS जोड़ता है जो सादे HTTP में नहीं हैं। निकास पता गंतव्य-पक्ष का एक और अवलोकन है, कॉन्फ़िगर किए गए प्रवेश से अलग।
सीमित कार्य जाँचकर्ता को मार्ग का मूल्यांकन करने से पहले अपने ही सॉकेट, स्मृति या शेड्यूलर को ख़त्म करने से रोकता है। चरणबद्ध परिणाम चयन नीति के लिए उपयोगी रहता है, बिना यह दिखाए कि एक सफल गंतव्य एंडपॉइंट को हर जगह अच्छा बना देता है।