我可以在環境中手動設定多個代理嗎?

我可以在環境中手動設定多個代理嗎?

考慮以下 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猴子修補記憶,所以沒有簡單或不瘋狂的方法

相關內容