Python urllib: ಒಂದೇ opener ಗಾಗಿ ಪ್ರಾಕ್ಸಿಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ
ಇತರ ಕ್ಲೈಂಟ್ಗಳು ಮತ್ತು ಪ್ರಕ್ರಿಯೆಯ ಪರಿಸರವನ್ನು ಬದಲಿಸದೆ ProxyHandler({}) ಮೂಲಕ ನೇರವಾಗಿ ಸಂಪರ್ಕಿಸುವ urllib opener ರಚಿಸಿ.
ಒಂದು 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 ಬ್ಲಾಕ್ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಮುಚ್ಚುತ್ತದೆ; ಅಪವಾದದಿಂದ ಬ್ಲಾಕ್ ಹೊರಬಂದಾಗಲೂ ಹಾಗೆಯೇ.
ಒಂದೇ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ನೇರ ಮತ್ತು ಪ್ರಾಕ್ಸಿ ಮೂಲಕ ವಿನಂತಿಗಳು
ಕರೆಗಳ ನಡುವೆ ಪರಿಸರ ಚರಗಳನ್ನು ಬದಲಿಸದೆ ಎರಡು 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)
ಲೂಪ್ಬ್ಯಾಕ್ ವಿಳಾಸವನ್ನು ನಿಮ್ಮ HTTP ಪ್ರಾಕ್ಸಿಯಿಂದ ಬದಲಿಸಿ ಅಥವಾ ಪ್ರಾಕ್ಸಿ ಹೋಲಿಕೆಗೆ HTTP ಪ್ರಾಕ್ಸಿ ಪಟ್ಟಿಯಿಂದ ಅಭ್ಯರ್ಥಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ. ಸೇವೆ ಅನುಮತಿಸಿದರೆ ಅದು HTTPS ಗುರಿಯ ಸಂಪರ್ಕವನ್ನು CONNECT ಮೂಲಕ ಸಾಗಿಸಬಹುದು. ಆಲಿಸುವ ಸೇವೆಯ ಪ್ರೋಟೋಕಾಲ್ ಮತ್ತು ದೃಢೀಕರಣ ಬೆಂಬಲ ಹ್ಯಾಂಡ್ಲರ್ಗೆ ಹೊಂದಬೇಕು.
ಡೀಫಾಲ್ಟ್ opener ಅನ್ನು ಬದಲಿಸಬೇಡಿ
ಮಾರ್ಗದ ಹೊಣೆ ಹೊಂದಿರುವ ಆಬ್ಜೆಕ್ಟ್ ಮೂಲಕ direct.open ಅಥವಾ proxied.open ಕರೆಮಾಡಿ. install_opener urllib ಅನುಕೂಲಕರ ಕರೆಗಳು ಬಳಸುವ ಪ್ರಕ್ರಿಯೆಯಾದ್ಯಂತದ ಡೀಫಾಲ್ಟ್ ಅನ್ನು ಬದಲಿಸುತ್ತದೆ; ಅದನ್ನು ಬಳಸುವ ಲೈಬ್ರರಿ ಸಂಬಂಧವಿಲ್ಲದ ಕೋಡ್ ಮೇಲೂ ಪರಿಣಾಮ ಬೀರಬಹುದು. ಮೇಲಿನ ಪ್ರತ್ಯೇಕ opener ಗೆ ಇದು ಅಗತ್ಯವಿಲ್ಲ.
timeout ಆರ್ಗ್ಯುಮೆಂಟ್ ಒಂದು ಕಾರ್ಯಾಚರಣೆಯ ಸೆಟ್ಟಿಂಗ್; ಪ್ರತಿ ವರ್ಗಾವಣೆಯ ಸಂಪೂರ್ಣ ನೈಜ ಸಮಯದ ಗಡುವು ಅಲ್ಲ. ಕೆಲಸಕ್ಕೆ ಬೇಕಾದ ದತ್ತಾಂಶವನ್ನಷ್ಟೇ ಓದಿ; ಕಟ್ಟುನಿಟ್ಟಿನ ಒಟ್ಟು ಸಮಯ ಮಿತಿ ಇದ್ದರೆ ಮೇಲಿನ ಹಂತದ ಗಡುವನ್ನು ಬಳಸಿ.
ಈ opener ಆಬ್ಜೆಕ್ಟ್ಗಳು ಬೇರೆ ಲೈಬ್ರರಿಯ ಕ್ಲೈಂಟ್, ಈಗಿರುವ ಪ್ರಕ್ರಿಯೆ ಅಥವಾ ಬ್ರೌಸರ್ನ ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬದಲಿಸುವುದಿಲ್ಲ.