Python urllib: ការផ្ទៀងផ្ទាត់ Basic របស់ប្រូកស៊ីសម្រាប់សំណើ HTTP
បង្កើត opener urllib ច្បាស់លាស់សម្រាប់ការប្រឈម Basic ពីប្រូកស៊ី HTTP ហើយបែងចែកការផ្លាស់ប្តូរ HTTP ធម្មតានេះពីការផ្ទៀងផ្ទាត់ HTTPS CONNECT។
សម្រាប់ការប្រឈម Basic ពីប្រូកស៊ី HTTP សូមប្រើ ProxyBasicAuthHandler។ ឧទាហរណ៍ HTTP ធម្មតានេះរក្សាផ្លូវ និងគណនីក្នុង opener តែមួយ៖
import os
from urllib.request import (
ProxyHandler, ProxyBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener,
)
proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
None, proxy_url,
os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
ProxyHandler({'http': proxy_url}),
ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
print(response.status)ប្រើចំណុចបញ្ចប់ពិត និងគណនីដែលប្រតិបត្តិករផ្តល់ឱ្យ។ ឧបករណ៍ដោះស្រាយនេះ ប្រើអ្នកគ្រប់គ្រងពាក្យសម្ងាត់សម្រាប់ការប្រឈមរបស់ប្រូកស៊ី; ផ្គូផ្គង URI និង realm របស់ប្រូកស៊ីដែលបានបម្រុង។ ការផ្ទៀងផ្ទាត់ Basic នៅគោលដៅប្រើឧបករណ៍ដោះស្រាយផ្សេង។
ការហៅ opener ដោយផ្ទាល់រក្សាការដំឡើងនេះឱ្យនៅក្នុងមូលដ្ឋាន។ URL នៃសំណើនៅតែជាគេហទំព័រ មិនមែនអ្នកកណ្តាល។ ផ្លូវ HTTP ច្បាស់លាស់នេះមិនអ៊ិនគ្រីបការផ្លាស់ប្តូរ Basic ទេ។
កុំសន្និដ្ឋានពីឧទាហរណ៍នេះថាមានការគាំទ្រផ្លូវរូង HTTPS។ 407 អំឡុង CONNECT កើតឡើងនៅពេលដំឡើង មុនពេលឆ្លើយតបធម្មតាពីគោលដៅ; ការរួមបញ្ចូលដែលបានជ្រើសរើសត្រូវដោះស្រាយការផ្ទៀងផ្ទាត់នៅទីនោះ។ ការផ្លាស់ប្តូរឧបករណ៍ដោះស្រាយការចូលរបស់គេហទំព័រមិនអាចជួសជុលការប្រឈមមុននោះបានទេ។
URL ប្រូកស៊ីដែលផ្ទុកព័ត៌មានសម្ងាត់គឺជាទម្រង់មួយទៀតដែលឃើញក្នុងឧទាហរណ៍ចាស់។ ប្រសិនបើប្រើ សូមអ៊ិនកូដសញ្ញាខណ្ឌ URL ឱ្យបានត្រឹមត្រូវ ហើយរក្សា URL ដែលផ្ទុកអាថ៌កំបាំងឱ្យនៅក្រៅកំណត់ហេតុ។