PycURL libcurl'ning FTP va SOCKS qo'llab-quvvatlashini bitta uzatish tutqichi orqali taqdim etadi. Passiv FTP yuklab olishda dastur boshqaruv ulanishini ham, alohida ma'lumot ulanishini ham shu amalga oshirishga topshirishi mumkin.

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 — dasturning FTP resursi URL manzili, output esa allaqachon ochilgan ikkilik chiqish oqimi. Taym-autlar kutilayotgan fayl hajmi va ulanishga qarab tanlanadigan namuna chegaralardir. Ommaviy vositachilarga ruxsat berilgan ommaviy FTP resursi uchun SOCKS5 proksilar ro'yxati proksi URL manzili uchun nomzodlar taklif qiladi; tanlangan tugun boshqaruv va passiv ma'lumot manzillarining ikkalasiga ham ruxsat berishini tekshiring.

socks5h manzil host nomini hal qilishni SOCKS proksiga topshiradi. NOPROXY ataylab bo'sh, shunda meros qolgan no_proxy muhit sozlamasi bu uzatish yo'lini chetlab o'tmaydi.

Faol FTP o'chirilgan holda qoldiring: u serverdan keladigan ulanishni kutadi va bu proksi rejimida mavjud emas. Proksining tashqi siyosati FTP boshqaruv portiga va uzatish uchun tanlangan passiv ma'lumot portiga ruxsat berishi kerak. Shuning uchun faqat muvaffaqiyatli kirish faylni yuklab olish mumkinligini isbotlamaydi.

Autentifikatsiya kerak bo'lganda vositachi uchun PycURL'ning PROXYUSERNAME va PROXYPASSWORD parametrlaridan foydalaning; FTP server hisob ma'lumotlari FTP ulanishiga tegishli.

O'xshash maqolalar