urllib3 ಜೊತೆ ಪ್ರಾಕ್ಸಿ IP ಬಳಸಿ
HTTP ಪ್ರಾಕ್ಸಿಗೆ ProxyManager ಆಯ್ಕೆಮಾಡಿ, 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 ಕ್ಷೇತ್ರಗಳು; Requestsನ status_code ಮತ್ತು text ಬದಲಿಗಳಲ್ಲ. ವೆಬ್ಸೈಟ್ ನಿರಾಕರಣೆ ಕೆಲಸ ಮಾಡುವ ಪ್ರಾಕ್ಸಿ ಮೂಲಕ ಬರಬಹುದು. ಪ್ರತಿಕ್ರಿಯೆಗೆ ಮೊದಲಿನ ಅಪವಾದವು ವಿನಂತಿ ಪೂರ್ಣಗೊಳ್ಳಲಿಲ್ಲ ಎನ್ನುತ್ತದೆ.
retries=False ತಪಾಸಣೆಯ ಆಯ್ಕೆ, ಉತ್ಪಾದನಾ ಮರುಪ್ರಯತ್ನ ನೀತಿಯಲ್ಲ. ಸಂಪರ್ಕದ 5 ಸೆಕೆಂಡ್ ಮತ್ತು ಓದಿನ 10 ಸೆಕೆಂಡ್ ತಮ್ಮ ಹಂತಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತವೆ; ಒಟ್ಟಿಗೆ ಖಚಿತ 15 ಸೆಕೆಂಡ್ ಅಂತಿಮ ಗಡುವು ಆಗುವುದಿಲ್ಲ. DNS ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಯ ಪ್ರಗತಿ ಒಟ್ಟು ಕಾಯುವಿಕೆಗೆ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ.
ಉದಾಹರಣೆ ಬಾಡಿಯನ್ನು ಮುಂಚಿತವಾಗಿ ಲೋಡ್ ಮಾಡಿ ಕೊನೆಯಲ್ಲಿ ಮ್ಯಾನೇಜರ್ನ ಪೂಲ್ಗಳನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ. ಅದೇ ಎಂಡ್ಪಾಯಿಂಟ್ ಮೂಲಕ ಪುನರಾವರ್ತಿತ ವಿನಂತಿಗಳಿಗೆ ಸಂಪರ್ಕ ಮರುಬಳಕೆಗೆ ಕೆಲಸ ಮುಗಿಯುವವರೆಗೆ ಮ್ಯಾನೇಜರ್ ಇಡಿ. preload_content=Falseಗೆ ಬದಲಿಸುವುದು ಜೀವನಚಕ್ರವನ್ನು ಬದಲಿಸುತ್ತದೆ: ಕರೆಮಾಡುವವರು ಸ್ಟ್ರೀಮ್ ಪ್ರತಿಕ್ರಿಯೆ ಓದಿ ಬಿಡುಗಡೆ ಮಾಡಬೇಕು.
ಆಲಿಸುತ್ತಿರುವ ಸೇವೆಗೆ ತಕ್ಕ ಮ್ಯಾನೇಜರ್ ಆಯ್ಕೆಮಾಡಿ. ಬೇರೆಡೆ URL ಉಳಿಸಿದ್ದರಿಂದ ಸಾಮಾನ್ಯ PoolManager ಪ್ರಾಕ್ಸಿ ತಿಳಿದ ವ್ಯವಸ್ಥೆ ಆಗುವುದಿಲ್ಲ; SOCKS urllib3.contrib.socks.SOCKSProxyManager ಮತ್ತು ಅದರ ಐಚ್ಛಿಕ ಅವಲಂಬನೆಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಮೇಲಿನ ಕೋಡ್ HTTP ProxyManager ಮಾರ್ಗ ಅನುಸರಿಸುತ್ತದೆ.