Ar gyfer fformat IPv4 darparwr dirprwy HTTP ip:port:user:password, trowch y meysydd cyn rhoi'r gwerth i 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}

Mae'r rhaniad cyfyngedig yn cadw unrhyw golonau ychwanegol y tu mewn i'r cyfrinair. Mae dileu terfynau llinell yn unig hefyd yn atal tynnu bylchau a allai fod yn rhan o gyfrif yn dawel.

Amgodiwch yr enw defnyddiwr a'r cyfrinair fel cydrannau URL ar wahân. Ni ddylid drysu @ mewn cyfrinair crai â'r gwahanwr o flaen gwesteiwr y dirprwy. Mae'r ffwythiant hwn yn disgwyl cyfrifon crai; mae trosglwyddo testun sydd eisoes wedi'i amgodio yn gallu amgodio'r arwydd canran eto.

Mae'r map a ddychwelwyd yn dewis y dirprwy hwn ar gyfer cyrchfannau HTTP a HTTPS. Mae allwedd fel http://192.0.2.10 yn golygu rhywbeth arall yn Requests: mae'n dewis llwybr ar gyfer y gwesteiwr cyrchfan hwnnw. Nid yw'n fynegeiad i gronfa o weinyddion dirprwy.

Mae'r dosbarthwr yn derbyn y fformat IPv4 a nodwyd yn fwriadol yn unig. Nid yw'n ymdrin ag enwau defnyddiwr sy'n cynnwys colanau nac â chyfeiriadau IPv6 heb gromfachau; mae'r rheini angen fformat mewnbwn diamwys. Cadwch URLau a gynhyrchwyd sy'n cario cyfrifon allan o logiau arferol.

Erthyglau cysylltiedig