PycURL ја изложува поддршката за FTP и SOCKS на libcurl преку една рачка за пренос. При пасивно 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 проксија нуди кандидати за URL-то на проксито; проверете дали избраниот јазол дозволува и контролна и пасивна податочна дестинација.

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

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

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

Поврзани статии