Prenos FTP prek SOCKS s PycURL
Pustite libcurl, da upravlja krmilno in pasivno podatkovno povezavo prenosa FTP prek proxyja SOCKS5.
PycURL izpostavi podporo za FTP in SOCKS iz libcurl prek enega ročaja za prenos. Pri pasivnem prenosu FTP lahko aplikacija krmilno povezavo in ločeno podatkovno povezavo prepusti tej izvedbi.
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 je URL vira FTP v aplikaciji, output pa je že odprt binarni izhodni tok. Časovne omejitve so zgledne meje, ki jih izberete glede na pričakovano velikost datoteke in povezavo. Za javni vir FTP, kjer so dovoljeni javni posredniki, seznam proxyjev SOCKS5 ponuja kandidate za URL proxyja; preverite, ali izbrano vozlišče dovoljuje krmilni in pasivni podatkovni cilj.
socks5h prepusti razreševanje imena ciljnega gostitelja proxyju SOCKS. NOPROXY je namerno prazno, da podedovana nastavitev okolja no_proxy ne obide poti tega prenosa.
Aktivni FTP pustite onemogočen: pričakuje dohodno povezavo s strežnika in v tem načinu proxyja ni na voljo. Odhodna politika proxyja mora dovoljevati krmilna vrata FTP in pasivna podatkovna vrata, izbrana za prenos. Zato samo uspešna prijava ne dokazuje, da je datoteko mogoče prenesti.
Ko je potrebna avtentikacija, za posrednika uporabite PROXYUSERNAME in PROXYPASSWORD iz PycURL; poverilnice strežnika FTP spadajo k povezavi FTP.