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 కనెక్షన్‌కు చెందుతాయి.

సంబంధిత వ్యాసాలు