FTP преузимање кроз SOCKS помоћу PycURL-а
Нека libcurl управља контролном и пасивном податковном везом FTP преузимања кроз SOCKS5 прокси.
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 вези.