PySocks का एक डिफ़ॉल्ट ftplib को फिर से वायर नहीं करता
set_default_proxy को Python के मूल socket कार्यान्वयन को बदलने वाला मानने के बजाय उन sockets का पीछा करें जो ftplib वास्तव में बनाता है।
socks.set_default_proxy() भविष्य के PySocks socksocket ऑब्जेक्ट के लिए डिफ़ॉल्ट संग्रहीत करता है। यह Python के मूल socket वर्ग को प्रतिस्थापित नहीं करता। इसलिए, यह केवल इस कारण ftplib को दोबारा रूट नहीं करता कि कॉल FTP कनेक्शन से पहले हुआ है।
प्रॉक्सी URL रखने वाले चर का नहीं, कंस्ट्रक्टर का पीछा करें। ftplib एक नियंत्रण कनेक्शन और अतिरिक्त स्थानांतरण कनेक्शन बनाता है। पैसिव FTP में, सफल लॉगिन केवल यह सिद्ध करता है कि नियंत्रण कनेक्शन काम कर गया; लिस्टिंग या फ़ाइल स्थानांतरण के लिए उपयोग होने वाले डेटा socket को भी इच्छित मार्ग चाहिए।
socket.socket को बदलने या किसी मॉड्यूल को लपेटने वाली विधि PySocks डिफ़ॉल्ट सेट करने से अलग कार्य करती है। यह उस मॉड्यूल को साझा करने वाली अन्य लाइब्रेरी को प्रभावित कर सकती है। बाद में मूल को अस्थायी रूप से बहाल करने से समवर्ती कनेक्शन इस परिवर्तन से अलग नहीं हो जाते।
एक कस्टम ftplib उपवर्ग कनेक्शन पथों को कवर कर सकता है, लेकिन प्रतिलिपि किए गए आंतरिक भाग उसी Python संस्करण की मान्यताएँ लेकर आते हैं जिनसे वे आए हैं, जिनमें टाइमआउट सेंटिनल और प्रोटोकॉल प्रबंधन शामिल हैं। मानक लाइब्रेरी के अपडेट इस प्रतिलिपि को अपडेट नहीं करते।
आवश्यक प्रॉक्सी और FTP मोड के लिए रखरखाव किया गया क्लाइंट या समर्थित एकीकरण चुनें। PycURL के साथ पैसिव FTP डाउनलोड का उदाहरण एक अलग क्लाइंट पथ दिखाता है। एप्लिकेशन के स्वामित्व वाले अनुकूलन के लिए, पहचानें कि कौन सा कंस्ट्रक्टर प्रत्येक नियंत्रण और डेटा socket खोलता है और वह जो अपस्ट्रीम व्यवहार प्रतिस्थापित करता है उसे सुरक्षित रखें। सही प्रॉक्सी मान तभी उपयोगी है जब वे कंस्ट्रक्टर वास्तव में उसका उपभोग करें।