PycURL एका ट्रान्सफर हँडलद्वारे libcurl चे FTP आणि SOCKS समर्थन उपलब्ध करते. निष्क्रिय FTP डाउनलोडमध्ये अनुप्रयोग नियंत्रण कनेक्शन आणि वेगळे डेटा कनेक्शन दोन्ही त्या अंमलबजावणीकडे सोपवू शकतो.

import pycurl

transfer = pycurl.Curl()
try:
    transfer.setopt(pycurl.URL, ftp_url)
    transfer.setopt(pycurl.PROXY, "socks5h://proxy.example.net:1080")
    transfer.setopt(pycurl.NOPROXY, "")
    transfer.setopt(pycurl.WRITEDATA, output)
    transfer.setopt(pycurl.CONNECTTIMEOUT, 10)
    transfer.setopt(pycurl.TIMEOUT, 60)
    transfer.perform()
finally:
    transfer.close()

ftp_url हा अनुप्रयोगाचा FTP संसाधन URL आहे, आणि output हा आधीच उघडलेला बायनरी आउटपुट प्रवाह आहे. टाइमआउट हे अपेक्षित फाइल आकार आणि कनेक्शननुसार निवडायचे उदाहरण मर्यादा आहेत. जिथे सार्वजनिक मध्यस्थांना परवानगी आहे अशा सार्वजनिक FTP संसाधनासाठी, SOCKS5 प्रॉक्सी सूची प्रॉक्सी URL साठी उमेदवार देते; निवडलेला नोड नियंत्रण आणि निष्क्रिय डेटा दोन्ही गंतव्यांना परवानगी देतो का ते तपासा.

socks5h गंतव्य होस्टनामाचे विश्लेषण SOCKS प्रॉक्सीकडे सोपवते. NOPROXY जाणूनबुजून रिकामे आहे जेणेकरून वारसाहक्काने मिळालेली no_proxy पर्यावरण सेटिंग या हस्तांतरणाचा मार्ग टाळणार नाही.

सक्रिय FTP बंद ठेवा: ते सर्व्हरकडून येणाऱ्या कनेक्शनची अपेक्षा करते आणि या प्रॉक्सी मोडमध्ये उपलब्ध नाही. प्रॉक्सीच्या बाहेरगामी धोरणाने FTP नियंत्रण पोर्ट आणि हस्तांतरणासाठी निवडलेला निष्क्रिय डेटा पोर्ट परवानगी देणे आवश्यक आहे. म्हणून केवळ यशस्वी लॉगिन फाइल डाउनलोड होऊ शकते हे सिद्ध करत नाही.

प्रमाणीकरण आवश्यक असल्यास मध्यस्थासाठी PycURL चे PROXYUSERNAME आणि PROXYPASSWORD वापरा; FTP सर्व्हरची ओळख FTP कनेक्शनची आहे.

संबंधित लेख