FTP ներբեռնում SOCKS-ով՝ PycURL-ի միջոցով
Թող 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 միացմանը։