PycURL eksponerer libcurls FTP- og SOCKS-støtte gjennom ett overføringshåndtak. Ved en passiv FTP-nedlasting kan programmet overlate både kontrollforbindelsen og den separate dataforbindelsen til den implementasjonen.

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 er programmets FTP-ressurs-URL, og output er en allerede åpnet binær utstrøm. Tidsavbruddene er eksempelgrenser som velges etter forventet filstørrelse og forbindelse. For en offentlig FTP-ressurs der offentlige mellommenn er tillatt, tilbyr SOCKS5-proxylisten kandidater for proxy-URL-en; kontroller at den valgte noden tillater både kontroll- og den passive datadestinasjonen.

socks5h delegerer oppløsningen av destinasjonens vertsnavn til SOCKS-proxyen. NOPROXY er uttrykkelig tom, slik at en nedarvet no_proxy-miljøinnstilling ikke omgår ruten for denne overføringen.

La aktiv FTP være deaktivert: det forventer en innkommende serverforbindelse og er utilgjengelig i denne proxy-modusen. Proxyens utgående policy må tillate FTP-kontrollporten og den passive dataporten som er valgt for overføringen. Derfor beviser en vellykket innlogging alene ikke at filen kan lastes ned.

Når autentisering trengs, bruk PycURLs PROXYUSERNAME og PROXYPASSWORD for mellommannen; FTP-serverens legitimasjon hører til FTP-forbindelsen.

Relaterte artikler