ប្រើ IP ប្រូកស៊ីជាមួយ urllib3
ជ្រើស ProxyManager សម្រាប់ប្រូកស៊ី HTTP ពិនិត្យវាលចម្លើយ urllib3 និងគិតពីការសាកល្បងឡើងវិញនិងកម្មវិធីគ្រប់គ្រង SOCKS ដាច់ដោយឡែក។
សម្រាប់ការពិនិត្យប្រូកស៊ី urllib3 តូចមួយ ប្រើ ProxyManager ដោយបិទការសាកល្បងឡើងវិញ។ វារាយការណ៍ការសាកល្បងដំបូង ជំនួសការចំណាយពេលបន្ថែមលើធាតុដែលលែងដំណើរការ។ ក្នុងគម្រោងគ្រប់គ្រងដោយ uv៖
uv add urllib3ជំនួសចំណុចចុងឯកសារដោយប្រូកស៊ី HTTP ពីសេវារបស់អ្នក ឬបញ្ជីប្រូកស៊ី HTTP ហើយផ្ញើសំណើតាមកម្មវិធីគ្រប់គ្រងនោះ៖
import urllib3
proxy = urllib3.ProxyManager(
"http://203.0.113.10:8080",
timeout=urllib3.Timeout(connect=5, read=10),
retries=False,
)
try:
response = proxy.request("GET", "https://example.com/")
print(response.status)
print(response.data.decode("utf-8", errors="replace")[:200])
finally:
proxy.clear()
អាន response.status មុន រួចពិនិត្យ response.data។ ទាំងនេះជាវាលរបស់ urllib3។ status_code និង text តាមបែប Requests មិនមែនជំនួសទេ។ ការបដិសេធរបស់គេហទំព័រអាចមកតាមប្រូកស៊ីដែលដំណើរការ។ ផ្ទុយទៅវិញ ករណីលើកលែងមុនចម្លើយបង្ហាញថាសំណើមិនបានបញ្ចប់។
retries=False ជាជម្រើសសម្រាប់ពិនិត្យ មិនមែនគោលការណ៍សាកល្បងឡើងវិញសម្រាប់ប្រើប្រាស់ពិតទេ។ ការកំណត់តភ្ជាប់ 5 វិនាទី និងអាន 10 វិនាទីកំណត់ដំណាក់កាលរៀងៗខ្លួន មិនបូកជាកម្រិតពេលសរុប 15 វិនាទីដែលធានាទេ។ DNS និងវឌ្ឍនភាពចម្លើយអាចប៉ះពាល់ពេលរង់ចាំសរុប។
ឧទាហរណ៍ផ្ទុកតួចម្លើយជាមុន ហើយសម្អាតក្រុមការតភ្ជាប់របស់កម្មវិធីគ្រប់គ្រងនៅចុងក្រោយ។ សម្រាប់សំណើដដែលៗតាមចំណុចដូចគ្នា រក្សាកម្មវិធីគ្រប់គ្រងរហូតដល់ចប់ការងារ ដើម្បីប្រើការតភ្ជាប់ឡើងវិញ។ ការប្ដូរទៅ preload_content=False ផ្លាស់ប្ដូរវដ្តជីវិត៖ អ្នកហៅត្រូវអាន និងដោះលែងចម្លើយស្ទ្រីម។
ជ្រើសកម្មវិធីគ្រប់គ្រងឱ្យត្រូវនឹងសេវាដែលកំពុងស្ដាប់។ PoolManager ធម្មតាមិនស្គាល់ប្រូកស៊ីដោយសាររក្សា URL នៅកន្លែងផ្សេងទេ។ SOCKS ប្រើ urllib3.contrib.socks.SOCKSProxyManager និងភាពអាស្រ័យជាជម្រើសរបស់វា។ កូដខាងលើតាមផ្លូវ HTTP ProxyManager។