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

标签 windows configuration proxy atom-editor 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 token 无论如何,所以我根本无法指定它们。

有趣的是,Atom 更新说我安装的包(开箱即用)是最新的,这似乎表明这部分工作正常,而包和主题没有。


这里有一些截图供引用:

.apmrc 没有变化 No .apmrc changes

.apmrc 中指定的代理服务器 Proxy server specified in .apmrc

编辑 08/31/2015

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

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

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

最佳答案

A .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 时它才会起作用。 .我想说它应该在 cntlm 中可能更准确PROGRAMFILES 里面的文件夹目录,因此您应该仔细检查是否属于这种情况。

无论如何,完成所有这些后,您现在可以开始了 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.proxyhttp://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 并发现它会寻找小写版本,所以只需设置它们就可以省去一些麻烦。

关于windows - 如何配置 Atom 以使用代理文件 (pac) 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25997440/

相关文章:

windows - 在 Jenkins 中执行批处理文件

c# - 是否有 Visual Studio 加载项的配置类型文件?

带有代理的 Java websocket

json - 服务器未将 JSON 从 Express 返回到 React(代理)

java - Spring XML中常见的值配置

iOS Safari开发 ".local"域问题

windows - 如果通过计划任务调用 BAT 文件,则无法将文件复制到 UNC 目标

windows - 在 cmake 中强制构建 x64 位

windows - 您如何找到音频延迟? (Windows/OSX)

php - 如何检查错误代码是否与error_reporting相匹配