Linux 支持代理 PAC 文件

Joe*_*der 9 linux proxy

我的公司环境设置了代理阻止外部 Internet 访问并需要 NTLM 身份验证。内部地址不会被代理路由,必须直接访问。

我正在尝试在这种环境中设置一台 Linux 机器(通常只有 Windows),并且有需要外部互联网访问的命令行工具。我发现NTLMaps非常适合对代理进行身份验证 - 但是现在的问题是当我设置 Linux 的 HTTP_PROXY 环境变量时,许多程序使用它来确定代理,它们总是使用代理服务器。相反,我需要他们使用基于 PAC 文件的代理/直接连接。

非常非常手动的解决方案是,当我想访问内网时清除 HTTP_PROXY 环境变量,并在我想访问互联网时填写它——但这很痛苦。

有人知道这样做的方法吗?(Linux 全局 .pac 设置等...)

Eva*_*son 11

在 Windows 上对代理自动配置的支持看起来非常“无缝”,因为它是由 WinHTTP 客户端实现的,它存储在所有具有公共 API 的应用程序都可以访问的 DLL 中。许多应用程序使用 WinHTTP 并“免费”获得代理自动配置。

在 Linux 世界中,每个应用程序通常都会进行自己的套接字调用并使用自己的 HTTP 协议实现。那里有 HTTP 库,但与 Windows 相比,更有可能的是,应用程序将自己处理 HTTP,并且可能没有处理代理自动配置文件所需的 Javascript 解释器。

您可能会考虑在 Linux 机器上运行本地代理服务器,将自身指定为系统范围内的 HTTP_PROXY,然后使用必要的规则配置该本地代理服务器以直接访问某些站点,而不是使用公司代理作为父代理。

Squid 可以做你想做的,但它是相当重量级的。我刚刚发现了这个有趣的tinyproxy 项目,它看起来很有希望(允许按域选择性使用上游代理,非常轻量级等),但我从未亲自使用过它,对此一无所知。(理论上,可以修改 tinyproxy 来实际解析代理自动配置文件。这将是一个非常巧妙的技巧,尽管我没有时间做这些......)