如何在 electron webview 中连接到代理?
How connect to proxy in electron webview?
因为我可以通过 a 连接到免费代理服务器(或付费),目前用作桌面应用程序的电子 JS 解决方案
示例代理列表服务器
您可以使用会话对象的.setProxy()方法。您可以像下面的示例一样直接指定代理:
// in main.js
var electron = require('electron');
var BrowserWindow = electron.BrowserWindow;
mainWindow = new BrowserWindow({
"width": 970,
"height": 500,
"center": true,
'title': 'Main window',
});
mainWindow.webContents.session.setProxy({proxyRules:"socks5://114.215.193.156:1080"}, function () {
mainWindow.loadURL('https://whatismyipaddress.com/');
});
或者您可以使用 PACscript:
// in main.js
mainWindow.webContents.session.setProxy({pacScript:"file://"+root+"/js/pacfile.js"}, function () {
mainWindow.loadURL('https://whatismyipaddress.com/');
});
// pacfile.js example
var blocked = ["site1.com", "site2.com", "site3.com"];
var proxyServer = "SOCKS5 114.215.193.156:1080";
function FindProxyForURL(url, host) {
var shost = host.split(".").reverse();
shost = shost[1] + "." + shost[0];
for(var i = 0; i < blocked.length; i++) {
if( shost == blocked[i] ) return proxyServer;
}
return "DIRECT";
}
我在 运行 单独的浏览器视图中使用建议的方法时遇到问题。
我没有在 BrowserWindow
上设置代理,而是在视图上设置了代理:
view.webContents.session
.setProxy({
proxyRules: proxyString,
})
然后使用 app.on('login')
处理程序授权代理。
所选答案在某种程度上是正确的,但库中的最后更改将使您这样做:
setProxy
现在是 Promise。所以现在你需要把最后一个函数放到 .then()
函数中。我希望这个评论能帮助其他人。我这样修好了我的:
mainWindow.webContents.session
.setProxy({proxyRules:"socks5://114.215.193.156:1080"})
.then(() => {
mainWindow.loadURL('https://whatismyipaddress.com/');
}).catch((err) => console.error(err));
因为我可以通过 a 连接到免费代理服务器(或付费),目前用作桌面应用程序的电子 JS 解决方案
示例代理列表服务器
您可以使用会话对象的.setProxy()方法。您可以像下面的示例一样直接指定代理:
// in main.js
var electron = require('electron');
var BrowserWindow = electron.BrowserWindow;
mainWindow = new BrowserWindow({
"width": 970,
"height": 500,
"center": true,
'title': 'Main window',
});
mainWindow.webContents.session.setProxy({proxyRules:"socks5://114.215.193.156:1080"}, function () {
mainWindow.loadURL('https://whatismyipaddress.com/');
});
或者您可以使用 PACscript:
// in main.js
mainWindow.webContents.session.setProxy({pacScript:"file://"+root+"/js/pacfile.js"}, function () {
mainWindow.loadURL('https://whatismyipaddress.com/');
});
// pacfile.js example
var blocked = ["site1.com", "site2.com", "site3.com"];
var proxyServer = "SOCKS5 114.215.193.156:1080";
function FindProxyForURL(url, host) {
var shost = host.split(".").reverse();
shost = shost[1] + "." + shost[0];
for(var i = 0; i < blocked.length; i++) {
if( shost == blocked[i] ) return proxyServer;
}
return "DIRECT";
}
我在 运行 单独的浏览器视图中使用建议的方法时遇到问题。
我没有在 BrowserWindow
上设置代理,而是在视图上设置了代理:
view.webContents.session
.setProxy({
proxyRules: proxyString,
})
然后使用 app.on('login')
处理程序授权代理。
所选答案在某种程度上是正确的,但库中的最后更改将使您这样做:
setProxy
现在是 Promise。所以现在你需要把最后一个函数放到 .then()
函数中。我希望这个评论能帮助其他人。我这样修好了我的:
mainWindow.webContents.session
.setProxy({proxyRules:"socks5://114.215.193.156:1080"})
.then(() => {
mainWindow.loadURL('https://whatismyipaddress.com/');
}).catch((err) => console.error(err));