Python urllib: HTTP વિનંતીઓ માટે Basic પ્રોક્સી પ્રમાણીકરણ
Basic HTTP પ્રોક્સી પડકાર માટે સ્પષ્ટ urllib opener બનાવો, અને આ સામાન્ય HTTP વિનિમયને HTTPS CONNECT પ્રમાણીકરણથી અલગ પાડો.
HTTP પ્રોક્સી તરફથી આવતા Basic પડકાર માટે 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 ટનલ સપોર્ટ માની ન લો. CONNECT દરમિયાન 407 સેટઅપ વખતે, સામાન્ય ગંતવ્ય પ્રતિસાદ પહેલાં થાય છે; પસંદ કરેલા ઇન્ટિગ્રેશને ત્યાં પ્રમાણીકરણ સંભાળવું પડશે. વેબસાઇટના લોગિન હેન્ડલર બદલવાથી એ પહેલાનો પડકાર સુધારી શકાતો નથી.
ઓળખપત્રો ધરાવતા પ્રોક્સી URL જૂનાં ઉદાહરણોમાં મળતું બીજું ફોર્મેટ છે. વાપરો તો URL ડિલિમિટર યોગ્ય રીતે એન્કોડ કરો અને બનેલું ગુપ્ત-ધારક URL લોગની બહાર રાખો.