Azure Blob ၏ Python client အတွက် SOCKS5 proxy ကို ပြင်ဆင်ခြင်း
ပေးထားသော Requests session ကို ကိုယ်တိုင်ပြင်ဆင်ပြီး ၎င်း၏ သက်တမ်းကို synchronous Blob client ပြင်ပတွင် session_owner=False ဖြင့် ထားရှိပါ။
import requests
from azure.core.pipeline.transport import RequestsTransport
from azure.storage.blob import BlobServiceClient
with requests.Session() as session:
session.trust_env = False
session.proxies["https"] = "socks5h://proxy.example:1080"
transport = RequestsTransport(session=session, session_owner=False)
with BlobServiceClient(
account_url=account_url,
credential=credential,
transport=transport,
) as client:
passpass အစား ရည်ရွယ်ထားသော Blob လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပါ၊ application ၏ account_url နှင့် credential ကို အသုံးပြု၍။ Requests ၏ ရွေးချယ်နိုင်သော SOCKS မှီခိုမှုများ သည် ရှိပြီးသား ဖြစ်ရမည်။ socks5h သည် ဦးတည်ရာ DNS ကို proxy သို့ လွှဲအပ်သည်။ အများသူငှာ ဝင်ရောက်နိုင်သော Blob endpoint အတွက်၊ အများသူငှာ ကြားခံများကို ခွင့်ပြုသည့်နေရာတွင် SOCKS5 proxy စာရင်း သည် session ၏ proxy URL အတွက် ကိုယ်စားလှယ်လောင်းများကို ပေးသည်။
Requests ၏ ပတ်ဝန်းကျင် ပေါင်းစပ်မှု ကို ထိန်းချုပ်ရန် ဤ session တွင် trust_env ကို သတ်မှတ်ပါ။ RequestsTransport သည် session တစ်ခု ဖန်တီးသောအခါ ပတ်ဝန်းကျင် စတင်ခြင်းကို ကျင့်သုံးသည်၊ ရှိပြီးသား session ကို ပေးသောအခါ မဟုတ်ပါ။ ရှင်းလင်းသော false တန်ဖိုးသည် proxy ပတ်ဝန်းကျင် ထည့်သွင်းချက်များက ဤလမ်းကြောင်းကို အစားထိုးခြင်းမှ တားဆီးသည်။
ထိုရွေးချယ်မှုသည် ပတ်ဝန်းကျင် အခြေခံ CA ရွေးချယ်မှုကိုလည်း ပိတ်ပစ်သည်။ လိုအပ်ပါက အမှန်တကယ် ဝန်ဆောင်မှုအတွက် လိုအပ်သော root များနှင့်အတူ connection_verify="/path/to/ca-bundle.pem" ကို RequestsTransport သို့ ပေးပါ။
Blob client သည် အပြင်ဘက် session context မတိုင်မီ ပိတ်သည်။ session_owner=False သည် ပိုင်ဆိုင်မှုကို ထို အပြင်ဘက် block တွင် ထားခဲ့သည်။ သီးခြား ဖန်တီးထားသော token အထောက်အထားတွင် အခြား HTTP သယ်ယူပို့ဆောင်မှု ရှိနိုင်သည်။ ၎င်း၏ ရယူမှုတွင် SOCKS လိုအပ်ပါက ၎င်းကိုလည်း ပြင်ဆင်ပါ။