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 միացմանը։

Առնչվող հոդվածներ