【问题标题】:How to configure Atom to use proxy file (pac) settings?如何配置 Atom 以使用代理文件 (pac) 设置?
【发布时间】:2014-11-17 19:09:12
【问题描述】:

在 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 的代理设置的组合。请参阅以下相关文章:

理想情况下,我想要一个不需要完整的机器配置或脆弱的多配置文件设置的解决方案。

【问题讨论】:

    标签: atom-editor windows configuration proxy atom-editor pac


    【解决方案1】:

    您应该下载文件http://internal-server-name/sub-dir/file-name.pac 并使用文本编辑器打开它,然后在其中找到实际的代理地址和端口(靠近PROXY 关键字)。

    【讨论】:

    • 感谢您的回答!我试图这样做但没有成功(我收到与以前相同的错误)。请参阅我对问题的编辑以获取更多详细信息。
    【解决方案2】:

    .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)\cntlm\cntlm.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:&lt;port # from cntlm.ini&gt; 似乎也有帮助

    毕竟,我希望事情对你有用。如果它又酷又好并且 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,发现它会查找小写版本,所以只需将它们都设置好,省点麻烦。

    【讨论】:

    • 感谢您的回答!我对.pac 文件一无所知,因此感谢您提供的信息。我尝试了您的建议,但没有奏效(请参阅更新后的问题)。此外,代理确实需要身份验证。
    • 我添加了一些关于使用cntlm的细节。如果它仍然不适合你,请告诉我。
    • 我之前已经尝试过很多这样的事情,但是这里有一些新的想法我会尝试。测试完我会回复的,谢谢。
    • 我无法让它工作;我收到“无法建立隧道套接字,原因=读取 ECONNRESET”。也许是因为我使用的是“便携式”原子。我不是 100% 确定在什么 .apmrc 中设置 http-proxy 的东西。我在“~(progs/atom)/.atom/.apm”文件夹中只有一个,但那个说“你应该编辑位于 ~/.atom/.apmrc 中的 .apmrc 配置”但该文件不存在.如果我在“Atom/resources/app/apm”中启动一个 apm 配置,它会在我的用户目录中创建一个 .apmrc。我已经尝试在我能找到的所有 .apmrc 中添加 http-proxy + 在“.atom”文件夹中创建新的。但没有一个工作。
    • 如果它说你应该使用~/.atom/.apmrc 但它不存在,只需创建它。
    【解决方案3】:

    我用它来解决 npm 和 .npmrc 的问题

    c:\users\%user%\.atom\.apmrc(如果不存在则添加)并放这个

    proxy=http://YOUR-DOMAIN**%5C**USER-NAME:PASSWORD@YOUR-PROXY-SERVER:PORT/
    

    【讨论】:

    • 通过添加~/.atom/.apmrc 文件在 Ubuntu Linux 中为我工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    相关资源
    最近更新 更多