PycURL көмегімен SOCKS арқылы FTP жүктеу
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 — қолданбаның FTP ресурсының URL-і, ал output — бұрыннан ашылған бинарлық шығыс ағыны. Тайм-ауттар күтілетін файл өлшемі мен қосылымға қарай таңдалатын үлгі шектер. Қоғамдық делдалдарға рұқсат етілген қоғамдық FTP ресурсы үшін SOCKS5 проксилер тізімі прокси URL-іне үміткерлер ұсынады; таңдалған түйіннің басқару және пассивті деректер межелерінің екеуіне де рұқсат беретінін тексеріңіз.
socks5h межелі хост атауын шешуді SOCKS проксиіне тапсырады. NOPROXY әдейі бос, осылайша мұраланған no_proxy орта айнымалысы бұл тасымалдаудың маршрутын айналып өтпейді.
Белсенді FTP өшірулі күйде қалдырыңыз: ол серверден келетін кіріс қосылымын күтеді және бұл прокси режимінде қолжетімсіз. Проксидің сыртқа шығу саясаты FTP басқару портына және тасымалдау үшін таңдалған пассивті деректер портына рұқсат беруі керек. Сондықтан тек сәтті кіру файлды жүктеуге болатынын дәлелдемейді.
Аутентификация қажет болғанда, делдал үшін PycURL-дың PROXYUSERNAME және PROXYPASSWORD параметрлерін пайдаланыңыз; FTP серверінің тіркелгі деректері FTP қосылымына жатады.