FTP allalaadimine läbi SOCKS-i PycURL-iga
Lase libcurl-il hallata FTP allalaadimise juht- ja passiivset andmeühendust SOCKS5 puhverserveri kaudu.
PycURL pakub libcurli FTP- ja SOCKS-tuge ühe ülekandekäepideme kaudu. Passiivse FTP allalaadimise puhul võib rakendus jätta nii juhtühenduse kui ka eraldi andmeühenduse selle teostuse hooleks.
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 on rakenduse FTP-ressursi URL ja output on juba avatud binaarne väljundvoog. Aegumisajad on näidispiirid, mis tuleb valida eeldatava failisuuruse ja ühenduse järgi. Avaliku FTP-ressursi puhul, kus avalikud vahendajad on lubatud, pakub SOCKS5 puhverserverite loend kandidaate puhverserveri URL-ile; kontrollige, et valitud sõlm lubaks nii juht- kui ka passiivset andmesihtkohta.
socks5h delegeerib sihtkoha hostinime lahendamise SOCKS-puhverserverile. NOPROXY on meelega tühi, et päritud no_proxy keskkonnaseade ei mööduks selle ülekande marsruuti.
Jätke aktiivne FTP välja lülitatuks: see ootab serverist sissetulevat ühendust ja pole selles puhverserveri režiimis saadaval. Puhverserveri väljundpoliitika peab lubama FTP juhtporti ja ülekandeks valitud passiivset andmeporti. Seega ainuüksi edukas sisselogimine ei tõenda, et faili saab alla laadida.
Kui autentimine on vajalik, kasutage vahendaja jaoks PycURL-i PROXYUSERNAME ja PROXYPASSWORD; FTP-serveri mandaadid kuuluvad FTP-ühenduse juurde.