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

xDa*_*vax 19 windows configuration proxy pac atom-editor

在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
Run Code Online (Sandbox Code Playgroud)

我收到以下错误(大概是因为上面的地址不是代理本身):

tunneling socket could not be established, cause=Parse Error
Run Code Online (Sandbox Code Playgroud)

当我保持.apmrc文件不受干扰时,我在尝试查看包时收到以下错误:

getaddrinfo ENOTFOUND
Run Code Online (Sandbox Code Playgroud)

即使我有一个代理服务器IP地址和端口号来指定,我不仅不想在配置文件中硬编码我的凭据,而且我很确定无论如何都要以某种方式设置认证使用Kerberos令牌,所以我根本无法指定它们.

有趣的是,Atom更新说我安装的软件包(开箱即用)是最新的,这似乎表明这部分正在运行而软件包和主题没有.


以下是一些参考屏幕截图:

没有.apmrc更改 没有.apmrc更改

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

编辑08/31/2015

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

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

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

Oko*_*000 6

一个.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)>
Run Code Online (Sandbox Code Playgroud)

你应该知道这个文件有点搞笑(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
Run Code Online (Sandbox Code Playgroud)

你认为这已经足够了,但还有更多可能会有所帮助.我遇到了很多问题,npm直到我发现https它不能正常工作,cntlm因此我需要将注册表从更改https://registry.npmjs.org/http://registry.npmjs.org/.既然apm也使用相同的注册表,我决定改变它:

apm config set registry http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

然后......它似乎也有助于进入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.*"
Run Code Online (Sandbox Code Playgroud)

这将为您省去配置大多数(所有?)其他应用程序的麻烦.出于某种原因,apm确实需要进行具体配置.我猜它出于某种原因不使用winhttp设置?我不知道答案.

新信息2016/03/18

我最近注意到,对于某些应用程序,您可能还需要做一件事.您还应将以下环境变量设置为本地代理:

HTTP_PROXY
HTTPS_PROXY
FTP_PROXY
http_proxy
https_proxy
ftp_proxy
Run Code Online (Sandbox Code Playgroud)

设置大小写似乎有点过分但我最近安装了MSys2并发现它寻找小写版本所以只需设置它们并省去一些麻烦.

  • 我无法使它正常工作;我收到“无法建立隧道套接字,原因=读取ECONNRESET”。也许是因为我使用的是原子“便携式”。我不确定要在哪个.apmrc中设置http-proxy的东西。我在“〜(progs / atom)/。atom / .apm”文件夹中只有一个,但是那个却说“您应该编辑位于〜/ .atom / .apmrc中的.apmrc配置”,但该文件不存在。如果我在“ Atom / resources / app / apm”中启动apm配置,它将在我的用户目录中创建一个.apmrc。我试过在所有.apmrc中添加http-proxy,我可以在“ .atom”文件夹中找到+创建新的代理。但是没有任何作用。 (2认同)

fly*_*and 4

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