Requests కోసం IPv4 ip:port:user:password నమోదులను మార్చండి
ip:port:user:password ను పరిమిత విభజనతో విశ్లేషించి, ప్రాక్సీ మ్యాప్ నిర్మించే ముందు ఆధారాల భాగాలను ఎన్కోడ్ చేయండి.
HTTP ప్రాక్సీ ప్రదాత IPv4 ఆకృతి ip:port:user:password అయితే, విలువను Requests కు ఇచ్చే ముందు ఫీల్డ్లను మార్చండి:
from ipaddress import IPv4Address
from urllib.parse import quote
def proxy_map(line):
host, port, user, password = line.rstrip('\r\n').split(':', 3)
host = str(IPv4Address(host))
port = int(port)
if not 1 <= port <= 65535:
raise ValueError('Proxy port is out of range')
credentials = quote(user, safe='') + ':' + quote(password, safe='')
url = f'http://{credentials}@{host}:{port}'
return {'http': url, 'https': url}
పరిమిత విభజన పాస్వర్డ్ లోపల ఉన్న అదనపు కోలన్లను కాపాడుతుంది. లైన్ ముగింపులను మాత్రమే తొలగించడం, ఆధారానికి చెందిన ఖాళీలు నిశ్శబ్దంగా తొలగించబడకుండా కూడా కాపాడుతుంది.
వినియోగదారు పేరు మరియు పాస్వర్డ్ను వేర్వేరు URL భాగాలుగా ఎన్కోడ్ చేయండి. ముడి పాస్వర్డ్లోని @ చిహ్నాన్ని ప్రాక్సీ హోస్ట్ ముందున్న విభజన చిహ్నంతో గందరగోళపరచకూడదు. ఈ ఫంక్షన్ ముడి ఆధారాలను ఆశిస్తుంది; ఇప్పటికే ఎన్కోడ్ చేసిన వచనాన్ని ఇచ్చినట్లయితే శాతం చిహ్నం మళ్లీ ఎన్కోడ్ కావచ్చు.
తిరిగి ఇచ్చిన మ్యాప్ HTTP మరియు HTTPS గమ్యాల కోసం ఈ ప్రాక్సీని ఎంచుకుంటుంది. http://192.0.2.10 వంటి కీకి Requests లో మరో అర్థం ఉంది: అది ఆ గమ్య హోస్ట్ కోసం మార్గాన్ని ఎంచుకుంటుంది. ఇది ప్రాక్సీ సర్వర్ల సమూహానికి సూచిక కాదు.
పార్సర్ పేర్కొన్న IPv4 ఆకృతిని ఉద్దేశపూర్వకంగానే అంగీకరిస్తుంది. కోలన్ ఉన్న వినియోగదారు పేర్లను లేదా బ్రాకెట్లు లేని IPv6 చిరునామాలను ఇది కవర్ చేయదు; వాటికి అస్పష్టత లేని ఇన్పుట్ ఆకృతి అవసరం. సృష్టించిన ఆధారాలతో కూడిన URL లను సాధారణ లాగ్లకు దూరంగా ఉంచండి.