Για τη μορφή IPv4 ενός παρόχου proxy HTTP 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. Το @ σε έναν ακατέργαστο κωδικό δεν πρέπει να συγχέεται με τον διαχωριστή πριν από τον κεντρικό υπολογιστή του proxy. Αυτή η συνάρτηση περιμένει ακατέργαστα διαπιστευτήρια· αν περάσετε ήδη κωδικοποιημένο κείμενο, το σύμβολο τοις εκατό μπορεί να κωδικοποιηθεί ξανά.

Ο χάρτης που επιστρέφεται επιλέγει αυτό το proxy για προορισμούς HTTP και HTTPS. Ένα κλειδί όπως http://192.0.2.10 έχει άλλη σημασία στο Requests: επιλέγει μια διαδρομή για αυτόν τον κεντρικό υπολογιστή προορισμού. Δεν είναι δείκτης σε ομάδα διακομιστών proxy.

Ο αναλυτής δέχεται σκόπιμα μόνο τη δηλωμένη μορφή IPv4. Δεν καλύπτει ονόματα χρηστών με άνω τελείες ούτε διευθύνσεις IPv6 χωρίς αγκύλες· αυτά χρειάζονται αναμφίβολη μορφή εισόδου. Κρατήστε τα παραγόμενα URL με διαπιστευτήρια έξω από τα συνηθισμένα αρχεία καταγραφής.

Σχετικά άρθρα