Οι προβολές Electron μπορούν να έχουν ξεχωριστούς λογαριασμούς διακομιστή μεσολάβησης HTTP
Δημιουργήστε μια συνεδρία ειδική για κάθε λογαριασμό για κάθε WebContentsView και απαντήστε μόνο στην αντίστοιχη πρόκληση Basic του διακομιστή μεσολάβησης αυτής της προβολής.
Στις τρέχουσες εφαρμογές Electron, δώστε σε κάθε WebContentsView που σχετίζεται με λογαριασμό τη δική του ονομασμένη συνεδρία. Μόλις η εφαρμογή είναι έτοιμη, ένας ασύγχρονος βοηθός στην κύρια διεργασία μπορεί να διαμορφώσει μία προβολή:
const routeSession = session.fromPartition(partitionName);
await routeSession.setProxy({
mode: 'fixed_servers',
proxyRules: `http://${proxyHost}:${proxyPort}`,
});
const view = new WebContentsView({
webPreferences: { session: routeSession },
});
view.webContents.on('login', (event, details, authInfo, callback) => {
if (!authInfo.isProxy
|| authInfo.scheme.toLowerCase() !== 'basic'
|| authInfo.host !== proxyHost
|| authInfo.port !== proxyPort) return;
event.preventDefault();
if (details.firstAuthAttempt) callback(proxyUser, proxyPassword);
else callback();
});
Δώστε ξεχωριστό partitionName για κάθε απομονωμένο λογαριασμό και κρατήστε τις μεταβλητές του ακροατή στο closure αυτής της προβολής. Ένα όνομα χωρίς persist: δημιουργεί συνεδρία στη μνήμη. Η επαναχρησιμοποίηση του ίδιου διαμερίσματος επαναχρησιμοποιεί σκόπιμα την κατάσταση της συνεδρίας του.
Συνδέστε την προβολή στο υπάρχον παράθυρο και μεταβείτε μόνο όταν ο διακομιστής μεσολάβησης και ο χειριστής της είναι έτοιμοι. Ο κώδικας στοχεύει το τρέχον συμβόλαιο συμβάντος login, συμπεριλαμβανομένου του firstAuthAttempt, και ακυρώνει μια απορριφθείσα επαναλαμβανόμενη προσπάθεια αντί να υποβάλλει ξανά τον ίδιο λογαριασμό επ' άπειρον.
Ο χειριστής ελέγχει ότι η πρόκληση προέρχεται από τον προβλεπόμενο Basic HTTP διακομιστή μεσολάβησης. Η σύνδεση σε ιστότοπο δεν είναι κατάλληλη για αυτά τα διαπιστευτήρια.
Οι κανόνες διακομιστή μεσολάβησης επιλέγουν το τελικό σημείο· το login παρέχει τον λογαριασμό. Τα αρχεία PAC και οι χειροκίνητοι κανόνες δεν φέρουν τα ίδια τον κωδικό αυτού του callback.
Αυτή είναι πιστοποίηση διακομιστή μεσολάβησης HTTP. Δεν προσθέτει πιστοποίηση SOCKS5 στο Chromium. Οι υπάρχουσες συνδέσεις συνεδρίας χρειάζονται επίσης τη συνήθη διαχείριση κύκλου ζωής όταν μια διαδρομή αλλάξει αργότερα.