私は電子を使用して簡単なWebブラウザを作成しています。私のユースケースは、それぞれのURLを異なる/それぞれのプロキシIP経由でルーティングする必要があるということです。ユーザーがgoogle.comと入力した場合は、123.123.122.1:8081
を経由しなければならず、gmail.com
と入力すると、111.111.111.123:8080
[Proxy/Port] .Iこれを見ましたが、プロキシは動的に変更されません。それを電子で行うことは可能ですか?どのように電子webview - 動的にプロキシに接続
2
A
答えて
1
この問題を解決するには2通りの方法があります。
var proxyIp ='12.12.133.12’
var port =‘8080’
<webview id="wv1" src="https://github.com" partition="persist:webviewsession"></webview>
if(proxyIp.trim() =='noproxy'){
var my_proxy = 'direct://';
session.fromPartition('persist:webviewsession').setProxy({proxyRules:my_proxy}, function(){
console.log('using the proxy ' + proxyIp);
});
}else{
var my_proxy = "http://"+proxyIp+":"+port;
session.fromPartition('persist:webviewsession').setProxy({proxyRules:my_proxy}, function(){
console.log('using the proxy ' + proxyIp);
});
}
はproxy.pac方法
proxy.js
const {app, BrowserWindow} = require('electron');
const {session} = require('electron')
let mainWindow;
app.on('window-all-closed', function() {
app.quit();
});
app.on('ready', function() {
mainWindow = new BrowserWindow({width: 1024, height: 768 });
session.defaultSession.allowNTLMCredentialsForDomains('*')//to access internal sites
var myVar = setInterval(myTimer, 3000);
function myTimer() {
mainWindow.webContents.session.setProxy({pacScript:'file://' + __dirname + '/proxy.pac'}, function() {return true;});
}
mainWindow.webContents.session.setProxy({pacScript:'file://' + __dirname + '/proxy.pac'}, function() {mainWindow.loadURL('file://' + __dirname + '/browser.html');});
mainWindow.openDevTools();
});
: いずれかのプロキシに
がセッション方式存続を変更する方法やセッション/プロキシルールをはproxy.pac使用することができます
proxy.pac
function FindProxyForURL(url, host) {
if (shExpMatch(url, "*google*"))
return "PROXY 164.83.99.74:80";
if (shExpMatch(url, "*amazon*"))
return "PROXY 194.73.29.74:8080";
return "DIRECT";
}
proxy.pacメソッドの問題は、proxy.pacでプロキシIPを変更するときです。proxy.pacファイルをリロードする必要があります。そのため、3秒ごとにリロードしています。
両方とも正常に動作し、両方とも自分自身でテストしました。 ユースケースに基づいて任意のものを使用できます。
詳細な議論はここ https://discuss.atom.io/t/how-to-set-proxy-for-each-webview-tag-in-electronjs/37307/2
電子文書見つけることができます:電子メンテナからhttps://github.com/electron/electron/blob/master/docs/api/session.md#sessetproxyconfig-callback
提案: https://github.com/electron/electron/issues/8247#issuecomment-268435712
関連する問題
- 1. ルビーのすべてのHTTP接続に自動的にプロキシを追加する
- 2. 電子メール接続のデバッグ
- 3. 永続的なプロキシ接続を無効にする方法
- 4. URLSessionとのプロキシ接続はどのように行われますか?
- 5. 動的サーバーに接続
- 6. 電子でWebviewの内容をプログラム的に変更する
- 7. スイングアプリケーションのDBに自動的に接続
- 8. VoIPサービスは固定電話にどのように接続しますか?
- 9. P2PのようにGenymotionと物理的なAndroidの携帯電話を接続
- 10. れるtcpClientは、どのように適切に接続するには、接続を維持し、最終的に
- 11. どのようにIMAP電子メールアカウントに電子メールフィルタを追加しますか?
- 12. はどのようにNode.jsのmysqlの接続起動時
- 13. SQL Serverデータベースを電子メールシステムに接続するにはどうすればよいですか?
- 14. Nodejs - 電子メールテンプレートを動的にする
- 15. 自動的に電子メールを送信
- 16. PIP - プロキシ - 接続が
- 17. doctrine 2で接続がどのように動作するか?
- 18. Exchange経由の電子メール:既存の接続がリモートホストによって強制的にクローズされました
- 19. Pythonでソックス/プロキシ接続を閉じる
- 20. プロキシ経由でPythonスクリプトに接続
- 21. jolokiaプロキシでリモートcassandra JMXに接続
- 22. RリモートSSH接続でローカルにプロキシ
- 23. HTTPSプロキシに接続する方法は?
- 24. 電子メールによるSQL動的ピボットの結果
- 25. どのようにマウスオーバーすると、電子メニューに移動するには、 "携帯電話のセクション" に
- 26. [PYTHON]電子メールとファイルの接続エラー
- 27. 充電器が接続されているときに自動的にAndroidの電源をオンにします
- 28. finalクラスの動的プロキシはどのように作成できますか?
こんにちはJeyaを、あなたは最終的にこれを解決したのですか? –
@ViceSallés:下記の答えを確認してください –