FTP-letöltés SOCKS-on át PycURL-lel
Hagyja, hogy a libcurl kezelje egy FTP-letöltés vezérlő- és passzív adatkapcsolatát egy SOCKS5-proxyn keresztül.
A PycURL egyetlen átviteli fogantyún keresztül teszi elérhetővé a libcurl FTP- és SOCKS-támogatását. Passzív FTP-letöltésnél az alkalmazás a vezérlőkapcsolatot és a különálló adatkapcsolatot is erre a megvalósításra bízhatja.
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()
Az ftp_url az alkalmazás FTP-erőforrásának URL-je, az output pedig egy már megnyitott bináris kimeneti adatfolyam. Az időtúllépések példaértékű korlátok, amelyeket a várható fájlméret és kapcsolat szerint kell megválasztani. Nyilvános FTP-erőforráshoz, ahol nyilvános közvetítők engedélyezettek, a SOCKS5-proxyk listája jelölteket kínál a proxy URL-jéhez; ellenőrizze, hogy a kiválasztott csomópont a vezérlő- és a passzív adatcélpontot is engedélyezi.
A socks5h a cél hosztnevének feloldását a SOCKS-proxyra bízza. A NOPROXY szándékosan üres, hogy egy örökölt no_proxy környezeti beállítás ne kerülje meg az átvitel útvonalát.
Hagyja az aktív FTP-t letiltva: az a kiszolgáló felől érkező kapcsolatra számít, és ebben a proxy módban nem érhető el. A proxy kimenő házirendjének engedélyeznie kell az FTP vezérlőportját és az átvitelhez kiválasztott passzív adatportot. A sikeres bejelentkezés önmagában tehát nem bizonyítja, hogy a fájl letölthető.
Ha hitelesítésre van szükség, használja a PycURL PROXYUSERNAME és PROXYPASSWORD beállítását a közvetítőhöz; az FTP-kiszolgáló hitelesítő adatai az FTP-kapcsolathoz tartoznak.