PycURL eksponerer FTP- og SOCKS-støtta til libcurl gjennom eitt overføringshandtak. Ved ei passiv FTP-nedlasting kan programmet overlate både kontrollforbindinga og den separate dataforbindinga 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 FTP-ressurs-URL-en til programmet, og output er ein allereie opna binær utstraum. Tidsavbrota er døme på grenser som må veljast etter forventa filstorleik og samband. For ein offentleg FTP-ressurs der offentlege mellomledd er tillatne, tilbyr SOCKS5-proxylista kandidatar for proxy-URL-en; kontroller at den valde noden tillèt både kontroll- og den passive datadestinasjonen.

socks5h delegerer oppløysinga av vertsnamnet til destinasjonen til SOCKS-proxyen. NOPROXY er uttrykkeleg tom, slik at ei arva no_proxy-miljøinnstilling ikkje omgår ruta for denne overføringa.

Lat aktiv FTP vere deaktivert: det ventar ei innkommande tenarforbinding og er utilgjengeleg i denne proxy-modusen. Utgåande policy for proxyen må tillate FTP-kontrollporten og den passive dataport som er vald for overføringa. Derfor beviser ei vellukka innlogging åleine ikkje at fila kan lastast ned.

Når autentisering trengst, bruk PROXYUSERNAME og PROXYPASSWORD i PycURL for mellomleddet; legitimasjonen til FTP-tenaren høyrer til FTP-forbindinga.

Relaterte artiklar