PycURL exponéiert d'FTP- an SOCKS-Ënnerstëtzung vu libcurl iwwer een eenzegen Transfer-Handle. Bei engem passive FTP-Download kann d'Applikatioun souwuel d'Kontrollverbindung wéi och déi separat Dateverbindung där Implementatioun iwwerloossen.

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 ass d'FTP-Ressourcen-URL vun der Applikatioun, an output ass en already opgemaachten binären Ausgabflux. D'Timeouts sinn Beispillgrenzen, déi no der erwaarter Dateigréisst an der Verbindung ze wielen sinn. Fir eng ëffentlech FTP-Ressource, wou ëffentlech Vermëttler erlaabt sinn, bitt d'SOCKS5-Proxy-Lëscht Kandidaten fir d'Proxy-URL; kontrolléiert, ob den ausgewielten Node souwuel d'Kontroll- wéi och d'passiv Datenzil erlaabt.

socks5h delegéiert d'Opléisung vum Zil-Hostnumm un de SOCKS-Proxy. NOPROXY ass bewosst eidel, sou datt eng geierft no_proxy-Ëmweltastellung d'Route fir dësen Transfer net ëmgeet.

Loosst aktiv FTP deaktivéiert: et erwaart eng erakommend Verbindung vum Server a steet an dësem Proxy-Modus net zur Verfügung. D'Ausgangspolitik vum Proxy muss den FTP-Kontrollport an de passive Datenport, deen fir den Transfer gewielt gouf, erlaben. Dofir beweist eng erfollegräich Umeldung eleng net, datt d'Datei kann erofgeluede ginn.

Wann Authentifikatioun néideg ass, benotzt PROXYUSERNAME a PROXYPASSWORD vum PycURL fir de Vermëttler; d'FTP-Server-Innloggdaten gehéieren zur FTP-Verbindung.

Ähnlech Artikelen