PycURL montras la FTP- kaj SOCKS-subtenon de libcurl per unu transiga tenilo. Ĉe pasiva FTP-elŝuto la aplikaĵo povas lasi kaj la regan konekton kaj la apartan datenkonekton al tiu realigo.

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 estas la FTP-risurca URL de la aplikaĵo, kaj output estas jam malfermita binara eliga fluo. La tempolimoj estas ekzemplaj limoj elektendaj laŭ la atendata dosiergrando kaj konekto. Por publika FTP-risurco, kie publikaj perantoj estas permesitaj, la listo de SOCKS5-prokuriloj proponas kandidatojn por la prokurila URL; kontrolu, ĉu la elektita nodo permesas kaj la regan kaj la pasivan datencelon.

socks5h delegas la solvon de la cela gastigantnomo al la SOCKS-prokurilo. NOPROXY estas intence malplena, por ke heredita no_proxy-medioagordo ne preterpasu la itineron por ĉi tiu transigo.

Lasu aktivan FTP malŝaltita: ĝi atendas envenantan servilan konekton kaj ne disponeblas kun ĉi tiu prokurila reĝimo. La elira politiko de la prokurilo devas permesi la FTP-regan pordon kaj la pasivan datenpordon elektitan por la transigo. Sekve sukcesa ensaluto sola ne pruvas, ke la dosiero elŝuteblas.

Kiam aŭtentikigo necesas, uzu PROXYUSERNAME kaj PROXYPASSWORD de PycURL por la peranto; la legitimiloj de la FTP-servilo apartenas al la FTP-konekto.

Rilataj artikoloj