PycURL излаже libcurl-ову подршку за FTP и SOCKS кроз једну ручку за пренос. Код пасивног FTP преузимања апликација може и контролну везу и засебну податковну везу препустити тој имплементацији.

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 је URL FTP ресурса апликације, а output је већ отворени бинарни излазни ток. Временска ограничења су примерни лимити које треба одабрати према очекиваној величини датотеке и вези. За јавни FTP ресурс на којем су дозвољени јавни посредници, листа SOCKS5 проксија нуди кандидате за proxy URL; проверите да ли изабрани чвор дозвољава и контролно и пасивно податковно одредиште.

socks5h преписује разрешавање имена хоста одредишта SOCKS проксију. NOPROXY је намерно празан како наследена no_proxy поставка окружења не би заобишла путању за овај пренос.

Оставите активни FTP онемогућен: он очекује долазну везу са сервера и није доступан у овом режиму са проксијем. Излазна политика проксија мора да дозволи FTP контролну порту и пасивну податковну порту изабрану за пренос. Зато сама успешна пријава не доказује да се датотека може преузети.

Када је потребна аутентикација, користите PycURL-ове PROXYUSERNAME и PROXYPASSWORD за посредника; акредитиви FTP сервера припадају FTP вези.

Повезани чланци