Ei FTP-nedlasting gjennom SOCKS med PycURL
Lat libcurl handsame kontroll- og passiv dataforbindelse for ei FTP-nedlasting gjennom ein SOCKS5-proxy.
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.