አንድ urllib opener በቀጥታ መገናኘት ሲኖርበት ለProxyHandler ባዶ ማዛመጃ ይስጡ፦

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))

with direct.open("https://example.com/", timeout=10) as response:
    print(response.status)

ባዶው መዝገበ ቃላት የፕሮክሲ መንገዶችን አይሰጥም። ማዛመጃውን መተው ግን አስተናጋጁ ፕሮክሲዎችን ከአካባቢው እና ከመድረኩ ቅንብሮች እንዲያገኝ ያስችለዋል። እነዚህ ሁለት የመፍጠሪያ መንገዶች የተለያዩ ፖሊሲዎችን ይገልጻሉ።

ምሳሌው የPython መደበኛ ቤተ መጻሕፍትን ይጠቀማል፣ መደበኛውን የHTTPS ማረጋገጥም ይጠብቃል። የwith ብሎኩ ምላሹን ይዘጋል፤ በልዩ ሁኔታ (exception) ምክንያት ከብሎኩ ሲወጣም ጭምር።

በአንድ መተግበሪያ ውስጥ ቀጥተኛ እና በፕሮክሲ የሚያልፉ ጥያቄዎች

በጥሪዎች መካከል የአካባቢ ተለዋዋጮችን ሳይቀይሩ ሁለት opener እነዚህን ሁለት ፖሊሲዎች ሊይዙ ይችላሉ፦

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}))

with proxied.open("https://example.com/", timeout=10) as response:
    print(response.status)

የloopback አድራሻውን በራስዎ HTTP ፕሮክሲ ይተኩ፣ ወይም በፕሮክሲ ለማወዳደር ከHTTP ፕሮክሲ ዝርዝር አንዱን ይምረጡ። አገልግሎቱ ከፈቀደ፣ ወደ HTTPS መዳረሻው የሚደረገውን ግንኙነት በCONNECT በኩል ሊያስተላልፍ ይችላል። የማዳመጫው ፕሮቶኮል እና የማንነት ማረጋገጥ ድጋፍ ከአስተናጋጁ ጋር መጣጣም አለባቸው።

ነባሪውን opener አይቀይሩ

direct.open ወይም proxied.openን ለመንገዱ ኃላፊ በሆነው ነገር በኩል ይጥሩ። install_opener የurllib አጋዥ ጥሪዎች የሚጠቀሙበትን ለሂደቱ ሁሉ የሚሠራ ነባሪ ይቀይራል፤ ስለዚህ የሚጠቀምበት ቤተ መጻሕፍት ያልተዛመደ ኮድን ሊነካ ይችላል። ከላይ ላለው የተለየ opener ይህ አያስፈልግም።

የtimeout ነጋሪ እሴት የአንድ ክወና ቅንብር ነው፣ የእያንዳንዱ ማስተላለፍ ሙሉ እውነተኛ ጊዜ ገደብ አይደለም። ሥራው የሚፈልገውን ውሂብ ብቻ ያንብቡ፤ ጥብቅ አጠቃላይ የጊዜ በጀት ካለው ከፍተኛ ደረጃ ያለው የመጨረሻ ጊዜ ይጠቀሙ።

እነዚህ የopener ነገሮች የሌላ ቤተ መጻሕፍትን ደንበኛ፣ አስቀድሞ ያለ ሂደት ወይም የአሳሽ ፕሮክሲ ቅንብሮችን አይቀይሩም።

ተዛማጅ ጽሑፎች