Luakit代理设置

Luakit原生不支持Firefox/Chrome架构的WebExtension插件(例如Proxy SwitchyOmega 3, ZeroOmega),因为Luakit是一个基于WebKitGTK内核与Lua脚本扩展的极轻量级浏览器,没有提供浏览器扩展API接口。

不过,通过Luakit自带的Lua苦熬站机制,或者配合PAC(Proxy Auto-Configuration)自动代理脚本,在Luakit中能够实现极其轻量、无感的分流与扩展切换。

Luakit命令切换代理

如果不需要复杂的分流,只在需要时"一键开启/关闭代理",那么只需要利用Luakit的Lua脚本特性来实现。

  • 编辑 ~/.config/luakit/userconf.lua

自定义快捷键切换代理
local soup = require("soup")
local modes = require("modes")

-- 注册以 `:` 开头的浏览器命令
modes.add_binds("normal", {
	{
		":proxy-on",
		"Enable Shadowsocks SOCKS5 Proxy",
		function(w)
			soup.proxy_uri = "socks://127.0.0.1:1080"
			w:notify("Proxy: ON (socks://127.0.0.1:1080)")
		end,
	},

	{
		":proxy-off",
		"Disable Proxy (Direct)",
		function(w)
			soup.proxy_uri = ""
			w:notify("Proxy: OFF (Direct)")
		end,
	},

	-- 快捷键补全:按 `gp` 开启,按 `gP` 关闭 (可选)
	{
		"gp",
		"Enable Proxy",
		function(w)
			soup.proxy_uri = "socks://127.0.0.1:1080"
			w:notify("Proxy: ON (socks://127.0.0.1:1080)")
		end,
	},

	{
		"gP",
		"Disable Proxy",
		function(w)
			soup.proxy_uri = ""
			w:notify("Proxy: OFF (Direct)")
		end,
	},
})

PAC自动分流

PAC是一段JavaScript脚本,可以告诉浏览器哪些域名/IP走 Shadowssocks(SS) 代理( 127.0.0.1:1080 ),哪些直连。Luakit原生支持读取PAC规则。

参考

  • gemini