我可以在环境中手动设置多个代理吗?

我可以在环境中手动设置多个代理吗?

考虑以下 PAC 文件:

function FindProxyForURL(url, host) {
    if (dnsDomainIs(host, "intranet.domain.com"))
        return "DIRECT";

    if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0"))
        return "PROXY 1.2.3.4:8080";

    return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";
}

有没有办法将这些设置转移到$http_proxy环境$no_proxy变量中?

答案1

no_proxy可以设置为类似的值no_proxy="intranet.domain.com,*.local,...",但否则环境变量是每个进程的字符串,因此无法[†]a)表达任何内容的逻辑isInNet或b)更新具有一些旧的且现在无效的字符串集的现有进程的环境。除非您杀死所有进程,否则http_proxy根据isInNet所做的任何操作设置一个新进程,然后重新启动所有进程,以便它们从父进程fork收到新进程的新副本。http_proxy

如果所有进程都在您的控制之下,您可以编写一个 API 来调整环境变量。如果您遇到fork一些不受您控制的事情(因为该过程中可能很快就会设置一些错误的字符串),这将会失败,并且与仅使用现有业务逻辑相比,这可能会不必要地复杂。

[†] 好吧,有gdb猴子修补记忆,所以没有简单或不疯狂的方法

相关内容