如何配置Atom以使用代理文件(pac)设置?

在Windows上,是否可以将Atom配置为使用系统默认代理,而不是手动指定.apmrc文件中的代理设置?


我最近开始使用Windows的原子编辑器( Windows 7 Pro ),到目前为止我喜欢它。 我一直在寻找一些时间来让编辑能够连接到外部世界并且没有取得任何成功。

我们的网络(我不是网络专家)被配置为使用代理服务器(内部)访问互联网。 在我的系统中,这是通过“自动配置脚本”在代理设置中完成的,例如: http://internal-server-name/sub-dir/file-name.pac

许多资源建议手动设置.apmrc文件中的代理信息:

  • 无法连接到主题和包的atom.io
  • 在这里:HTTPS://discuss.atom.io/t/is-there-any-proxy-settings/710/19
  • https://github.com/atom/atom/issues/1807
  • 这些不回答我的问题,因为我需要系统默认值工作

    我试图配置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更改

    在.apmrc中指定的代理服务器 在.apmrc中指定的代理服务器

    编辑08/31/2015

    为了回应一些反馈,我尝试查看.pac文件并提取代理服务器地址信息。 我能够从文件中获取有关代理的信息并将其放入.apmrc文件,但它对结果没有影响(我仍然收到相同的错误)。 我也曾尝试使用CNTLM无济于事。

    另请注意,我的代理确实需要如上所述的身份验证。 我一直在进一步研究这个问题,它可能是APM代理设置和GitHub的代理设置的组合。 请参阅以下相关文章:

  • https://discuss.atom.io/t/error-running-apm-install-behind-proxy/14812
  • 理想情况下,我想要一个不需要完整机器配置或脆弱的多配置文件设置的解决方案。


    .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?

    下一篇: Get windows proxy username/password