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 байланышына таандык.