我正在使用 HTTP 代理服务器连接到 Internet。
因此,我的 ping 无法正常工作
ping www.google.com
Run Code Online (Sandbox Code Playgroud)
说无法访问的主机
如何配置ping
以使用 HTTP 代理?
问题很简单,但答案不是:
ssh -D 8080 user@host
Run Code Online (Sandbox Code Playgroud)
或者
ssh -gCNf -D 8080 user@host
Run Code Online (Sandbox Code Playgroud)
或者
wathever with -D #
Run Code Online (Sandbox Code Playgroud)
我需要一种可以在不支持 SOCKS 的嵌入式设备中与 http_proxy 变量一起使用的代理。
我该怎么办?
似乎很多程序都被设计为读取这些环境变量来决定通过哪个代理来连接到互联网上的资源。这些程序也可能有自己的、单独的代理设置,但如果没有设置,他们会很乐意使用这些环境变量......
我只是想知道:
我正在尝试在 Windows 机器上设置 HTTP 代理。问题是,密码中有一个特殊字符 (@),导致set
命令失败。
我试过转义字符 ( \@
) 和使用十六进制值 ( %40
)对其进行百分比编码,但无济于事。
例如,使用用户名 Foo 和密码 B@r,我尝试了以下命令:
set http_proxy=http://foo:B\@r@http-gateway.domain.org:80
set http_proxy=http://foo:B%40r@http-gateway.domain.org:80
Run Code Online (Sandbox Code Playgroud)
除了更改密码,我如何让代理使用密码?
情况
我想在工作电脑上安装 minGW 和 msys,但我在代理后面。代理设置被配置为在 Internet Explorer 和 Firefox 中自动检测。代理是一个需要认证的 80 端口上的 http 代理。
我还有代理的 url 和一个 .pac 配置脚本。
系统是windows 7 64位。
问题
MinGW 安装程序无法识别代理设置,因此无法下载任何安装包。
到目前为止
我已经尝试过将 Internet Explorer 的 Internet 选项中的代理设置从自动检测更改为手动设置。我也试过通过代理运行安装程序。两者都不起作用。
当我尝试启动 CNTLM 时,它失败了。如果我检查我的 Windows 事件日志,我会看到以下消息:
启动服务“cntlm”失败:fork 11,资源暂时不可用
在我更新到最新的 Windows 10(从 1511 到 1607)之前,它起作用了。我该如何解决这个问题?(我已经重新安装了 CNTLM)。
我坐在公司代理后面。要开始流浪,我不得不使用
set HTTP_proxy=http://http-proxy.example.org:9999
Run Code Online (Sandbox Code Playgroud)
我尝试使用,netsh winhttp
但没有用。所以现在我的命令行使用代理,但现在它也将它用于localhost
/ 127.0.0.1
。
有没有办法绕过代理?
我已经尝试过像这样设置 no_proxy
set no_proxy=localhost;127.0.0.*
Run Code Online (Sandbox Code Playgroud) 我支持经过身份验证的代理,并且我计划安装 Windows 8。我知道可以通过netsh winhttp
.
我记得不能通过设置身份验证设置netsh
(至少不是在 Windows 7 上,我怀疑它已经改变了),那么有没有其他方法可以与身份验证一起使用?
据我所知,Linux 是区分大小写的。我通常导出 http 代理,如下所示:
export http_proxy= proxy:port
export https_proxy= proxy:port
所以我认为如果我像下面这样写,它会起作用。
export HTTP_PROXY= proxy:port
export HTTPS_PROXY= proxy:port
但是,它也有效,我想知道原因,以及为什么它有效。
我在这里找到了描述: http: //curl.haxx.se/docs/manpage.html
环境变量可以用小写或大写指定。小写版本优先。http_proxy 是一个例外,因为它仅适用于小写。
这个约定可以应用到任何地方吗?
参考:
在进入真正的问题之前,让我解释一下我的项目是如何工作的:为了简单起见,我的代理在我的笔记本电脑上,客户端(我的浏览器)也在那里;例如,远程服务器将是 YouTube。
由于 SwitchOmega 插件,客户端连接到代理的特定端口:客户端想要连接到 www.youtube.com 并且代理收到以下请求:
CONNECT www.youtube.com:443 HTTP/1.1
Host: www.youtube.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36
Run Code Online (Sandbox Code Playgroud)
有人告诉我,当代理收到CONNECT
请求时,它应该打开一个到 IP:Port 的 TCP 连接,200 OK
向客户端返回一条消息并发送数据,直到连接的一侧关闭。
使用另一个跟踪 HTTP 请求的插件 HTTP Trace,我在浏览器上看到了不同的请求:
GET https://www.youtube.com/
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
and other data...
Run Code Online (Sandbox Code Playgroud)
那么,为什么我的代理会CONNECT www.youtube.com:443 HTTP/1.1
在 HTTP Trace 显示时收到GET https://www.youtube.com/
?他们的意思是一样的吗?
http-proxy ×10
proxy ×5
linux ×3
command-line ×2
windows-7 ×2
cntlm ×1
http ×1
https ×1
mingw ×1
msys ×1
networking ×1
ntlm ×1
ping ×1
socks-proxy ×1
ssh ×1
windows ×1
windows-8 ×1