Proxy IP ಮತ್ತು ಪೋರ್ಟ್: ನಿಮ್ಮ ಆ್ಯಪ್ಗೆ ಯಾವ ಸ್ವರೂಪ ಬೇಕು?
Proxy ಪಟ್ಟಿಯ ನಮೂದನ್ನು HTTP ಅಥವಾ SOCKS URL ಆಗಿ ಪರಿವರ್ತಿಸಿ, ಪ್ರತ್ಯೇಕ host ಮತ್ತು port ಕ್ಷೇತ್ರಗಳನ್ನು ಭರ್ತಿ ಮಾಡಿ ಮತ್ತು IPv6 ವಿಳಾಸಗಳನ್ನು ಸರಿಯಾಗಿ ಬರೆಯಿರಿ.
ಕೆಲವು ಆ್ಯಪ್ಗಳು IP:port ಕೇಳುತ್ತವೆ. ಇತರವುಗಳಿಗೆ http:// ಅಥವಾ socks5:// ನಿಂದ ಆರಂಭವಾಗುವ URL ಬೇಕು. ಬ್ರೌಸರ್ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ವಿಳಾಸ ಮತ್ತು ಪೋರ್ಟ್ ಸಾಮಾನ್ಯವಾಗಿ ಬೇರೆ ಕ್ಷೇತ್ರಗಳಲ್ಲಿರುತ್ತವೆ. ಹೀಗಾಗಿ ಒಂದೇ endpoint ವಿಳಾಸ ಬದಲಾಗದೆ ಹಲವು ಸ್ವರೂಪಗಳಲ್ಲಿ ಕಾಣಬಹುದು.
IPv4 ನಮೂದು
HTTP proxy ಪಟ್ಟಿ ಉದಾಹರಣೆಯ HTTP proxy 203.0.113.10:8080 ನೀಡುತ್ತದೆ ಎಂದುಕೊಳ್ಳಿ.
| ಆ್ಯಪ್ ಕೇಳುವುದು | ನಮೂದಿಸಿ |
|---|---|
| Host ಅಥವಾ IP | 203.0.113.10 |
| ಪೋರ್ಟ್ | 8080 |
| HTTP proxy URL | http://203.0.113.10:8080 |
ಪೋರ್ಟ್ ಅನ್ನು ಎರಡು ಬಾರಿ ಸೇರಿಸಬೇಡಿ. ಆ್ಯಪ್ನಲ್ಲಿ ಈಗಾಗಲೇ ಪೋರ್ಟ್ ಕ್ಷೇತ್ರವಿದ್ದರೆ, host ಕ್ಷೇತ್ರದಲ್ಲಿ 203.0.113.10:8080 ಹಾಕುವುದರಿಂದ ಇಡೀ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು hostname ಎಂದು resolve ಮಾಡಲು ಪ್ರಯತ್ನಿಸಬಹುದು. ಹಾಗೆಯೇ ಕೇವಲ IP ವಿಳಾಸವನ್ನೇ ಸ್ಪಷ್ಟವಾಗಿ ಕೇಳುವ ಕ್ಷೇತ್ರಕ್ಕೆ scheme ಸೇರಿಸಬೇಡಿ.
Scheme ಸೇವೆಗೆ ಹೊಂದಿಕೆಯಾಗಬೇಕು. ವಿಳಾಸ ಪರಿವರ್ತಿಸುವ ಮೊದಲು ಕ್ಲೈಂಟ್ ಬೆಂಬಲಕ್ಕೆ ಅನುಗುಣವಾಗಿ HTTP ಅಥವಾ SOCKS5 ಆರಿಸಿ. HTTP endpoint ಮುಂದೆ socks5:// ಬರೆಯುವುದರಿಂದ ಕ್ಲೈಂಟ್ ಕಳುಹಿಸುವುದು ಬದಲಾಗುತ್ತದೆ; ಸರ್ವರ್ನಲ್ಲಿ SOCKS5 ಸಕ್ರಿಯವಾಗುವುದಿಲ್ಲ.
URL ನಲ್ಲಿ IPv6 ಗೆ ಚೌಕ ಆವರಣ ಬೇಕು
IPv6 ವಿಳಾಸದಲ್ಲಿ ಈಗಾಗಲೇ ಕೊಲನ್ಗಳಿರುತ್ತವೆ; ಆದ್ದರಿಂದ URL ಪೋರ್ಟ್ ಸೇರಿಸುವ ಮೊದಲು ವಿಳಾಸವನ್ನು ಚೌಕ ಆವರಣದಲ್ಲಿ ಇಡುತ್ತದೆ:
http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080
ಆವರಣವಿಲ್ಲದೆ ವಿಳಾಸ ಮತ್ತು ಪೋರ್ಟ್ ನಡುವಿನ ಗಡಿ ಅಸ್ಪಷ್ಟವಾಗುತ್ತದೆ. ಪ್ರತ್ಯೇಕ ಕ್ಷೇತ್ರಗಳಿರುವ ಆ್ಯಪ್ ಸಾಮಾನ್ಯವಾಗಿ host ಗೆ 2001:db8::10 ಮತ್ತು ಪೋರ್ಟ್ಗೆ 8080 ಕೇಳುತ್ತದೆ; ಅದರ ಇನ್ಪುಟ್ ಸ್ವರೂಪವನ್ನು ಅನುಸರಿಸಿ. ಇಲ್ಲಿನ ಎರಡೂ ವಿಳಾಸಗಳು ದಾಖಲೆಗಳ ಉದಾಹರಣೆಗಳು, ಕಾರ್ಯನಿರತ proxy ಗಳಲ್ಲ.
ಪ್ರತಿ ಕೊಲನ್ನಲ್ಲಿ ವಿಭಜಿಸದೆ URL ಪಾರ್ಸ್ ಮಾಡಿ
ಚಿಕ್ಕ Python ಸ್ಕ್ರಿಪ್ಟ್ ಪ್ರಮಾಣಿತ URL parser ಮೂಲಕ IPv4 ಮತ್ತು ಆವರಣವಿರುವ IPv6 URL ಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು:
from urllib.parse import urlsplit
proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)
hostname ಗುಣಲಕ್ಷಣವು ಆವರಣವಿಲ್ಲದ ವಿಳಾಸವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಮೂಲ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪ್ರತಿ ಕೊಲನ್ನಲ್ಲಿ ವಿಭಜಿಸಿದರೆ ಈ ಉದಾಹರಣೆ ಹಾಳಾಗುತ್ತದೆ. ನಿಜವಾದ importer ನಲ್ಲಿ host ಇಲ್ಲದಿರುವುದು, ಬೆಂಬಲವಿಲ್ಲದ scheme ಮತ್ತು 1–65535 ಹೊರಗಿನ ಪೋರ್ಟ್ಗಳನ್ನೂ ತಿರಸ್ಕರಿಸಿ. URL ಪಾರ್ಸಿಂಗ್ ಅದರ ಭಾಗಗಳನ್ನು ಕೊಡುತ್ತದೆ; ಸೇವೆ ಇದೆ ಎಂದು ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ.
ಪಟ್ಟಿಯಲ್ಲಿ ಬಳಕೆದಾರಹೆಸರು ಮತ್ತು ಪಾಸ್ವರ್ಡ್ ಇದ್ದಾಗ
ಸಾಮಾನ್ಯ URL ರಚನೆ http://username:password@host:port ಆಗಿದೆ. ಪ್ರವೇಶ ಮಾಹಿತಿಯಲ್ಲಿನ @, # ಮತ್ತು / ಮುಂತಾದ ಅಕ್ಷರಗಳಿಗೆ ಸರಿಯಾದ URL encoding ಬೇಕು. ಕ್ಲೈಂಟ್ ಪ್ರತ್ಯೇಕ ಪ್ರವೇಶ ಮಾಹಿತಿ ಕ್ಷೇತ್ರಗಳನ್ನು ನೀಡಿದರೆ, ಕೈಯಾರೆ URL ರಚಿಸುವುದಕ್ಕಿಂತ ಅವನ್ನು ಬಳಸುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಸುಲಭ.
ಕೊಲನ್ನಿಂದ ಬೇರ್ಪಟ್ಟ ಪ್ರವೇಶ ಮಾಹಿತಿ ಸ್ಟ್ರಿಂಗ್ ಪರಿವರ್ತಿಸುವ ಮೊದಲು ಪೂರೈಕೆದಾರರ ಮೂಲ ಸ್ವರೂಪ ಪರಿಶೀಲಿಸಿ. ಕೊಲನ್ನಿಂದ ಬೇರ್ಪಟ್ಟ ನಾಲ್ಕು ಕ್ಷೇತ್ರಗಳಿಗೆ ಸಾರ್ವತ್ರಿಕ ಅರ್ಥವಿಲ್ಲ; ಪಾಸ್ವರ್ಡ್ನಲ್ಲೇ ಕೊಲನ್ ಇರಬಹುದು. ಸರಳ IP:port ಸಾಲುಗಳಿಗಾಗಿ ರೂಪಿಸಿದ parser ಬೇರೆ ಸ್ವರೂಪವನ್ನು ಮೌನವಾಗಿ ಊಹಿಸಬಾರದು.