# aardio 范例: web.view( WebView2 浏览器控件) - 启动参数 / 代理



```aardio
//web.view( WebView2 浏览器控件) - 启动参数 / 代理
//运行时变更 SOCKS5 代理: https://www.aardio.com/zh-cn/docs/examples/WebUI/web.view/OtherApps/socks5.html

import web.view;
import win.ui;
/*DSG{{*/
var winform = win.form(text="WebView2 - 设置启动参数";right=966;bottom=622)
winform.add()
/*}}*/

//创建浏览器，参数 @1 指定窗口或 custom 控件对象。
var wb = web.view(winform,{
	extensions = true;//启用浏览器扩展，可用 wb.loadExtension() 函数加载扩展
	//language =  "zh-CN"; //自定义浏览器界面语言（影响 影响 Accept-Language 请求头 ），格式参考 sys.locale 库
	startArguments = {
		/*
		指定浏览器启动参数，兼容 string.args 支持的所有参数格式 ，
		自动合成浏览器启动命令行并按需添加引号、处理转义。
		参数表中驼峰风格的参数名自动转为连字符格式并添加 -- 前缀。
		
		仅仅是配置浏览器地址栏域名走代理是不够的，效果会更好。
		改用 WebView2 + 代理，不开系统全局代理就可以实现 WebView2 内的连接全部走代理。 
		
		代理配置格式: 
		https://www.aardio.com/zh-cn/docs/library-guide/std/inet/proxy.html
		https://chromium.googlesource.com/chromium/src/+/HEAD/net/docs/proxy.md 
		
		指定不同协议代理服务器应当以分号隔开，
		",direct://"这里用逗号隔开仅用于隔开备选连接方式。
		
		参数里不能指定代理服务器登录密码。
		HTTP 代理自动认证: https://www.aardio.com/zh-cn/docs/examples/WebUI/web.view/DevTools/auth.html
		
		SOCKS5 代理请可使用  wsock.tcp.socks5Server.async 创建本地中转代理。
		然后调用其 setUpstreamProxy 方法设置上游代理服务器，以实现转发代理请求。
		通过这种方式可以实现自动登录或动态修改游代理服务器地址。 
		*/
		proxyServer = "SOCKS5://IP地址:端口,direct://"; //代理服务器（--proxy-server）
		userAgent = "Mozilla/5.0 (Linux; Android 13) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/115.0.5790.166";
		enableFeatures = "msWebView2EnableDraggableRegions" //启用指定特性（--enable-features），多个值用逗号分开
	};
	
	/*
	自定义用户数据目录，每个不同的目录都可以创建独立会话。
	创建多个 web.view 对象时除了第一个构造参数以外的其他参数如果不同（指 browserArguments,createBrowserOptions 等），
	则应避免使用相同的 userDataDir（这会导致干扰、无法创建新的 web.view 实例等问题）。
	
	userDataDir 的默认值为 web.view.defaultUserDataDir，
	其值为 io.appData("/aardio/webview2/user-data/" + io._exefile)。
	要特别注意在发布为 EXE 之前运行代码时  io._exefile 的值总是相同的。
	*/
	userDataDir = ..io.appData("/aardio/webview2/user-data/" + ..io._exefile);
	
	/*
	浏览器最低兼容版本，一般不必指定，不能低于 "86.0.616.0"，否则不能启动。
	关于 WebView2 发行版本: https://aka.ms/webviewrelease
	*/
	//compatibleBrowserVersion = "86.0.616.0";
})

//也可以用参数 @2 指定 userDataDir，参数 @3 开始指定浏览器启动参数，可传入一个参数表，或多个非 null 参数。
//var wb = web.view(winform,,"--proxy-server=SOCKS5://IP地址:端口 --accept-lang=zh-CN");

//禁用开发工具，在打开网页前设置才会生效
wb.enableDevTools(false);

//WebView2（Chromium）启动参数大全请参考以下链接（可能有一些 WebView2 是不支持的 ）：
wb.go("https://peter.sh/experiments/chromium-command-line-switches/");

winform.show(3/*_SW_MAXIMIZE*/);
win.loopMessage();
```

