PycURL libcurl-ün FTP və SOCKS dəstəyini bir ötürmə tutacağı vasitəsilə təqdim edir. Passiv FTP yükləməsində tətbiq həm idarəetmə bağlantısını, həm də ayrı məlumat bağlantısını bu tətbiqetməyə buraxa bilər.

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 tətbiqin FTP resurs URL-idir, output isə artıq açılmış binar çıxış axınıdır. Taymautlar gözlənilən fayl ölçüsünə və bağlantıya görə seçilən nümunə hədləridir. İctimai vasitəçilərə icazə verilən ictimai FTP resursu üçün SOCKS5 proxy siyahısı proxy URL-i üçün namizədlər təklif edir; seçilmiş qovşağın həm idarəetmə, həm də passiv məlumat təyinatlarına icazə verdiyini yoxlayın.

socks5h təyinat host adının həllini SOCKS proxy-yə həvalə edir. NOPROXY qəsdən boşdur ki, miras qalmış no_proxy mühit parametri bu ötürmə üçün marşrutu yan keçməsin.

Aktiv FTP-ni deaktiv saxlayın: o, serverdən gələn bağlantı gözləyir və bu proxy rejimində mövcud deyil. Proxy-nin xaricə çıxış siyasəti FTP idarəetmə portuna və ötürmə üçün seçilmiş passiv məlumat portuna icazə verməlidir. Buna görə yalnız uğurlu giriş faylın yüklənə biləcəyini təsdiqləmir.

Autentifikasiya lazım olduqda vasitəçi üçün PycURL-in PROXYUSERNAME və PROXYPASSWORD parametrlərindən istifadə edin; FTP server məlumatları FTP bağlantısına aiddir.

Əlaqəli məqalələr