我的公司环境设置了代理阻止外部Internet访问并需要NTLM身份验证.内部地址不会被路由为代理,必须直接访问.
我正在尝试在此环境(通常是Windows)中设置Linux计算机,并且具有需要外部Internet访问的命令行工具.我发现NTLMaps对于代理进行身份验证非常有用 – 但现在的问题是当我设置Linux的HTTP_PROXY环境变量时,许多程序使用它来确定代理,它们总是使用代理服务器.相反,我需要它们使用基于PAC文件的代理/ DIRECT连接.
非常非常手动的解决方案是在我想要访问内联网时清除HTTP_PROXY环境变量,并在我想访问互联网时填写它 – 但这很痛苦.
有人知道这样做的方法吗? (Linux全球.pac设置等…)
解决方法
在Windows上支持代理自动配置似乎是“无缝的”,因为它是由WinHTTP客户端实现的,WinHTTP客户端存储在一个DLL中,可以通过公共API访问所有应用程序.许多应用程序使用WinHTTP并“免费”获取代理自动配置.
在Linux世界中,每个应用程序通常都会自己进行套接字调用并使用自己的HTTP协议实现.那里有HTTP库,但与Windows相比,它更有可能是应用程序将自己处理HTTP,并且可能没有处理代理自动配置文件所需的Javascript解释器.
您可以考虑在Linux计算机上运行本地代理服务器,在系统范围内将自己指定为HTTP_PROXY,然后使用必要的规则配置本地代理服务器以直接访问某些站点,而不是使用公司代理作为父代.
鱿鱼可以做你想要的,但它是相当重量级的.我刚刚发现这个有趣的tinyproxy project,它肯定看起来很有前途(允许通过域选择性地使用上游代理,非常轻量级等),但我从来没有亲自使用它并且对它一无所知. (理论上,人们可以修改tinyproxy以实际解析代理自动配置文件.这是一个非常巧妙的技巧,虽然不是我有时间工作……)