Как настроить прокси в Electron BrowserWindow - PullRequest
0 голосов
/ 03 февраля 2020

Я создаю приложение Electron, которое открывает браузер Windows.

Пользователи могут вводить список прокси в настройках, который сохраняется в JSON. Они также вводят ссылки по умолчанию, которые должны быть открыты в окне.

Я хочу, чтобы при открытии окна BrowserWindow предоставлялся случайный прокси.

Как мне добиться этого, проверяя, прошел ли пользователь user: pass? Если кто-то может помочь мне, это будет оценено. В настоящее время я получаю сообщение об ошибке

*

Uncaught (в обещании) Ошибка: (-111) загрузка 'https://kith.com/' в rejectAndCleanup (электрон /js2c/browser_init.js:5903) в WebContents.failListener (электрон / js2c / browser_init. js: 5913) в WebContents.emit (события. js: 203)

*

Мой код прикреплен к этому вопросу. Пожалуйста, нет токсичности, я просто учусь в старших классах. `

         function initTask(site) {
        const settings = JSON.parse(fs.readFileSync('potions/settings.json'));
        const {
            BrowserWindow
        } = require('electron').remote;
    
        let win = new BrowserWindow({
            icon: 'mirrors/brand.png',
            webPreferences: {
                allowRunningInsecureContent: false,
                enableRemoteModule: true,
                webSecurity: false,
    
            },
            center: true,
            show: true,
            width: 800,
            height: 600
        })
    
        var link = decodeURI(site);
        const importProxies = JSON.parse(fs.readFileSync('potions/proxies.json'));
        var randProxy = importProxies.proxies[Math.floor(Math.random() * 
           importProxies.proxies.length)];
    
         this.proxyHostPort = getProxyHostPort(randProxy);
        this.proxy = getProxyData(randProxy);
    
        function getProxyData(proxy) {
            if (proxy) {
                const splitProxy = proxy.split(":");
                const hostPort = `${splitProxy[0]}:${splitProxy[1]}`;
    
                // # ONLY RETURN IF PROXY IS USER PASS
                if (splitProxy.length > 2) {
                    return {
                        host: splitProxy[0],
                        port: splitProxy[1],
                        user: splitProxy[2],
                        pass: splitProxy[3]
                    };
                }
    
                // ELSE ITS IP AUTH
                return {
                    host: splitProxy[0],
                    port: splitProxy[1]
                };
            }
        }
    
        function getProxyHostPort(proxy) {
            if (proxy) {
                const splitProxy = proxy.split(":");
                const final = splitProxy[0] + ":" + splitProxy[1];
                return final;
            }
        }
    
        // # load using proxy or not
        if (this.proxy) {
            win.webContents.session.setProxy({
                    proxyRules: this.proxyHostPort
                },
                () => {}
            );
    
    
            // # LOGIN IF PROXY HAVE USER PASS
            win.webContents.on(
                "login",
                (event, authenticationResponseDetails, authInfo, callback) => {
                    if (authInfo.isProxy) {
                        event.preventDefault();
                        // # FILL
                        callback(this.proxy.user, this.proxy.pass); //supply credentials to server
                    }
                }
            )
        }
    
        win.loadURL(link)
       } 
...