如何配置Atom以使用代理文件(pac)设置?
在Windows上,是否可以将Atom配置为使用系统默认代理,而不是手动指定.apmrc文件中的代理设置?
我最近开始使用Windows的原子编辑器( Windows 7 Pro ),到目前为止我喜欢它。 我一直在寻找一些时间来让编辑能够连接到外部世界并且没有取得任何成功。
我们的网络(我不是网络专家)被配置为使用代理服务器(内部)访问互联网。 在我的系统中,这是通过“自动配置脚本”在代理设置中完成的,例如: http://internal-server-name/sub-dir/file-name.pac
。
许多资源建议手动设置.apmrc文件中的代理信息:
这些不回答我的问题,因为我需要系统默认值工作
我试图配置Atom来做同样的事情,但是当我更改.apmrc文件时:
http-proxy = http://internal-server-name/sub-dir/file-name.pac
https-proxy = https://internal-server-name/sub-dir/file-name.pac
strict-ssl = false
我得到以下错误(大概是因为上面的地址不是代理本身):
tunneling socket could not be established, cause=Parse Error
当我放开.apmrc文件时,在尝试查看包时收到以下错误消息:
getaddrinfo ENOTFOUND
即使我有一个代理服务器IP地址和端口号来指定,不仅我不想在配置文件中对我的凭证进行硬编码,但我敢肯定,无论如何,身份验证都设置为使用Kerberos令牌,所以我根本无法指定它们。
有趣的是,Atom更新说我的已安装软件包(开箱即用)是最新的,这似乎表明这部分工作正常,而软件包和主题却没有。
以下是一些截图供参考:
没有.apmrc更改
在.apmrc中指定的代理服务器
编辑08/31/2015
为了回应一些反馈,我尝试查看.pac文件并提取代理服务器地址信息。 我能够从文件中获取有关代理的信息并将其放入.apmrc文件,但它对结果没有影响(我仍然收到相同的错误)。 我也曾尝试使用CNTLM无济于事。
另请注意,我的代理确实需要如上所述的身份验证。 我一直在进一步研究这个问题,它可能是APM
代理设置和GitHub的代理设置的组合。 请参阅以下相关文章:
理想情况下,我想要一个不需要完整机器配置或脆弱的多配置文件设置的解决方案。
.pac
文件只是一个JavaScript文件,浏览器可以通过编程来确定要使用哪个代理。 如果您的网络需要使用不同的代理来访问不同的资源,这很有用。 如果你打开这个文件,你可能会理解它(毕竟它只是javascript),并找出你的网络使用哪个代理来访问网络。 将它设置为你的.apmrc
文件中的代理,它应该可以工作。
如果您的代理需要某种身份验证,事情会变得更加复杂。 如果这是你的问题,请告诉我。 我有一些处理它的经验。
认证
好的,所以你需要认证。 那么你的情况可能和我的很相似。 您在使用CNTLM时是正确的,我们只需要正确配置它。 你的cntlm.ini
文件看起来像这样:
Username <your windows username>
Domain <your domain name>
Password <leave this blank>
PassLM <get this by running `cntlm -H` on the command line>
PassNT <get this by running `cntlm -H` on the command line>
PassNTLMv2 <get this by running `cntlm -H` on the command line>
Proxy <Your proxy address like ip_address:port>
Proxy <If you have multiple proxies, you may list them each on a new line>
NoProxy localhost, 127.0.0.*, <any others that should bypass the proxy>
Listen <a local port to listen on (I use 53128)>
有一点有趣,你应该知道这个文件( cntlm.ini
)。 安装cntlm时,它包含在程序的文件夹中,但实际上只有位于C:Program Files (x86)cntlmcntlm.ini
。 我想可能更准确的说它应该在PROGRAMFILES
目录下的cntlm
文件夹中,所以你应该仔细检查是否是这种情况。
无论如何,做完所有这些之后,您现在可以启动cntlm
(自述文件中的说明)。 接下来,您需要配置apm
以实际使用您的本地代理。 您的.apmrc
应该如下所示:
http-proxy = http://localhost:<port # from cntlm.ini>
https-proxy = https://localhost:<port # from cntlm.ini>
strict-ssl = false
你会认为这足够了,但还有更多可能有所帮助。 我在npm
遇到了很多问题,直到我发现https
通过cntlm
无法正常工作,所以我需要将注册表从https://registry.npmjs.org/
更改为http://registry.npmjs.org/
。 由于apm
也使用相同的注册表,我决定也改变它:
apm config set registry http://registry.npmjs.org/
然后......它似乎也有助于进入Atom的config.cson
并将core.proxy
设置为http://localhost:<port # from cntlm.ini>
毕竟,我希望事情能为你工作。 如果它很酷且很好,Atom运行良好,还有一件事可能会让大多数(所有)应用程序(npm,git等)都能正常运行。 在命令行上,运行:
netsh winhttp set proxy localhost:<port # from cntlm.ini> "localhost, 127.0.0.*"
这将为您节省配置大多数(全部)其他应用程序的麻烦。 出于某种原因, apm
确实需要特别配置。 我想它不会使用winhttp设置出于某种原因? 我不知道这个答案。
新信息2016/03/18
我最近注意到,您可能需要为某些应用程序另外做一件事。 您还应该将以下环境变量设置为您的本地代理:
HTTP_PROXY
HTTPS_PROXY
FTP_PROXY
http_proxy
https_proxy
ftp_proxy
设置大写和小写似乎有点矫枉过正,但我最近安装了MSys2,发现它寻找小写版本,所以只需将它们全部设置好,并节省一些麻烦。
您应该下载文件http://internal-server-name/sub-dir/file-name.pac
并使用文本编辑器打开它,然后在其中找到实际的代理地址和端口(靠近PROXY
关键字)。
我用npm和.npmrc来解决麻烦
c:users%user%.atom.apmrc
(如果不存在则添加)并放入
proxy=http://YOUR-DOMAIN**%5C**USER-NAME:PASSWORD@YOUR-PROXY-SERVER:PORT/
链接地址: http://www.djcxy.com/p/62493.html
上一篇: How to configure Atom to use proxy file (pac) settings?