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.

Kapcsolódó cikkek