2017-12-29 34 views
0

プロキシを迂回することに問題があります。私はJavaScriptとElectronの両方に新しいです。Electron.jsのプロキシをバイパスする

私はこの問題(以下の写真)に直面しているか、白い空白の画面が表示されます。

enter image description here

マイpacfile.pac:

function findProxyForURL(url, host) { 

// If the hostname matches, send direct. 
if (dnsDomainIs(host, “http://000.00.0.0:0000”) || 
shExpMatch(host, “(*.domain.com)”)) 
return “DIRECT”; 

} 

私のindex.js:

const electron = require('electron') 
// Module to control application life. 
const app = electron.app 
// Module to create native browser window. 
const BrowserWindow = electron.BrowserWindow 

const path = require('path') 
const url = require('url') 
var fs = require('fs'); 
var pac = require('pac-resolver'); 
// Keep a global reference of the window object, if you don't, the window will 
// be closed automatically when the JavaScript object is garbage collected. 
let mainWindow 
let ProxyFunc 
let pacVariable 

function createWindow() { 
    // Create the browser window. 
    mainWindow = new BrowserWindow({width: 800, height: 600}) 

    // and load the index.html of the app. 

    //proxy: "http://000.00.0.0:0000" 
// /* src="https://domain.name.com/#/random/login" */ 
    /*mainWindow.webContents.session.setProxy({proxyRules:"http://000.00.0.0:0000"}, function() { 
    mainWindow.loadURL('https://domain.name.com/#/random/login'); 
});*/ 

app.commandLine.appendSwitch('proxy-bypass-list', '*.google.com;*domain.name.com;'); 
pacVariable = new pacfile(); 
pacVariable.findProxyForURL("https://domain.name.com/#/random/login", "*domain.name.com"); 
//ProxyFunc = new FindProxyForURL("https://domain.name.com/#/random/login","domain.name.com"); 
mainWindow.webContents.session.setProxy({proxyRules:"http://000.00.0.0:0000",proxyBypassRules:"domain.name.com"}, function() { 
    mainWindow.loadURL(path.join('file://', __dirname, 'index.html')); 
}); 

/*mainWindow.webContents.session.setProxy({proxyRules:"http://000.00.0.0:0000"}, function() { 
    mainWindow.loadURL('https://domain.name.com/#/random/login'); 
});*/ 

mainWindow.openDevTools({ mode: 'bottom' }); 
    // Open the DevTools. 
    // mainWindow.webContents.openDevTools() 

    // Emitted when the window is closed. 
    mainWindow.on('closed', function() { 
    // Dereference the window object, usually you would store windows 
    // in an array if your app supports multi windows, this is the time 
    // when you should delete the corresponding element. 
    mainWindow = null 
    }) 
} 

// This method will be called when Electron has finished 
// initialization and is ready to create browser windows. 
// Some APIs can only be used after this event occurs. 
app.on('ready', createWindow) 

// Quit when all windows are closed. 
app.on('window-all-closed', function() { 
    // On OS X it is common for applications and their menu bar 
    // to stay active until the user quits explicitly with Cmd + Q 
    if (process.platform !== 'darwin') { 
    app.quit() 
    } 
}) 

app.on('activate', function() { 
    // On OS X it's common to re-create a window in the app when the 
    // dock icon is clicked and there are no other windows open. 
    if (mainWindow === null) { 
    createWindow() 
    } 
}) 

// In this file you can include the rest of your app's specific main process 
// code. You can also put them in separate files and require them here. 
+0

あなたはpacファイルをインポートしていません – illiteratewriter

+0

どうすればいいか教えてください。追加後の –

+0

var pacfile = require( './ pacfile.pac');私はUncaught Exceptionを取得しています。 ReferenceError:shExpMatchは定義されていません 。私はnpmプロキシエージェントとnpmパックリゾルバ –

答えて

0

var FindProxyForURL = pac(fs.readFileSync('pacfile.pac')); 
FindProxyForURL('https://domain.name.com/#/random/login').then((res) => { 
    console.log(res);  

}); 

pacVariable = new pacfile()を置き換えを参照してください。 APIの

FindProxyForURLは約束であるため、.thenの内部で応答が必要なコードを記述する必要があります。

+0

ありがとうございます。私はあなたのソリューションを試して、結果を得ていない、後で他のいくつかの問題が私たちのWebアプリケーション側からそこにあることがわかった。一度修正されると、この部分を再チェックします。 –

関連する問題