我正在尝试在我的本地计算机上使用转发代理服务器(Apache Traffic Server或Squid)作为我的cURL调用的本地HTTP缓存.
我使用以下方法设置了代理:
curl_setopt($ch, CURLOPT_PROXY, 'http://localhost:8080');
Run Code Online (Sandbox Code Playgroud)
当我查询HTTP网站时,cURL执行标准HTTP GET代理请求,可以正确缓存:
GET http://example.com/ HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
但是,在查询HTTPs网站时,cURL执行CONNECT代替,有效地使用代理作为TCP隧道,并阻止它缓存响应:
CONNECT example.com:80 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
有没有办法迫使cURL GET甚至为HTTPs网站执行请求?
我可以理解在HTTP代理上使用TCP隧道进行HTTP隧道安全性的基本原理,但由于我的代理服务器在localhost上,我不关心使用不安全的HTTP连接到代理,并希望cURL执行GET请求:
GET https://example.com/ HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
我试过用:
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
Run Code Online (Sandbox Code Playgroud)
但这并没有改变任何事情.
我的目标是使用WebSocket .Net客户端实现(即不是浏览器)通过需要NTLM身份验证的公司代理连接到WebSocket.到目前为止,所有的解决方案(例如websocket-sharp-with-proxy,websocket4net)都很简短.
我试过这些:
据我所知,作者尚未更新有关添加NTLM代理支持的讨论.http://websocket4net.codeplex.com/discussions/448172
这个问题试图问为什么客户端实现不支持代理,但它没有得到回答,并没有说明为什么没有人想要解决这个问题.
回到我的问题,如何在NTLM代理后面的客户端应用程序中使用WebSocket技术?
即时为http-proxy使用以下代码:
var httpProxy = require('http-proxy');
var options = {
router: {
'url1.com': '127.0.0.1:3000',
'url2.com': '127.0.0.1:3001'
}
};
httpProxy.createServer(options).listen(80);
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以动态更新路由表吗?没有关闭代理服务器?
谢谢答案
我想保存并从mac网络上的Charles网络实用程序记录的多部分http上传中提取文件部分.有没有办法做到这一点?例如,我可以在请求文本中看到jpeg文件内容,但如果我尝试将其复制并粘贴到文件中,则它是无效文件.我只想将捕获的文件保存到磁盘.
我试图SBT在Windows 7上运行.为此,我按照类似线程" 如何从代理后面使用sbt? "中的步骤进行操作.
我有以下相关的"系统变量":
变量名称:
JAVA_OPTS
变量值:
-Dhttp.proxySet=true -Dhttp.proxyHost=192.168.0.150 -Dhttp.proxyPort=8080
变量名称:
SBT_OPTS
变量值:
-Dhttp.proxySet=true -Dhttp.proxyHost=192.168.0.150 -Dhttp.proxyPort=8080
和
变量名称:
SBT_HOME
变量值:
C:\Program Files (x86)\sbt\
我也改变了内容 C:\Program Files (x86)\sbt\conf\sbtconfig.txt
*****sbtconfig.txt开始*****
*将java args设置为高
-Xmx512M
-XX:MaxPermSize参数=256米
-XX:ReservedCodeCacheSize =128米
*设置额外的SBT选项
-Dsbt.log.format =真
*设置代理
-Dhttp.proxySet =真
-Dhttp.proxyHost = 192.168.0.150
-Dhttp.proxyPort = 8080
*****sbtconfig.txt结束*****
跑cmd.exe我输入sbt.cmd回声
获取org.fusesource.jansi jansi 1.11 ....
大约1分钟后,我收到很多警告和错误,如:
[...]
::::错误服务器访问错误:连接超时:connect url = https://repo.typesafe.com/typesafe/ivy-releases/org.fusesource.jansi/jansi/1.11.ivys/ivy.xml
[...]
这与我没有代理设置完全相同.当我在浏览器中输入上述地址时,我感到很惊讶,我得到的是:
*****浏览器显示BEGINNING*****
{
"错误":[{
"身份":404,
"消息":"找不到文件."
}]
}
*****浏览器显示END*****
如何判断SBT是否尝试使用代理,还是存在其他问题?
我似乎无法让JAX-RS客户端在Java 8上使用Web代理.我正在使用RESTEasy 3.0.10.Final,并在Windows 7 Professional 64位上运行Eclipse 4.4.2.
我在localhost运行时设置了一个FreeProxy服务器192.168.1.123:3128.我打开登录并telnet到192.168.1.123 3128并发出手册GET.请求显示在日志中.
然后我启动我的Java应用程序,设置http.proxyHost=192.168.1.123和http.proxyPort=3128系统属性.(我甚至-D在启动JVM时尝试使用它.)(注意,我不希望localhost问题发挥作用,因为我连接到实际的IP地址,而不是localhost.)
我使用ClientBuilder.newBuilder().build()并执行GET资源创建JAX-RS客户端.FreeProxy日志中没有显示任何内容.
为了让JAX-RS客户端使用代理,我该怎么办?
8080 - 托管后端的端口4200 - 我的Angular2前端
在My Angular2项目中,我有文件proxy.config.json,内容如下
{
"/api": {
"target": "http://localhost:8080",
"secure": false,
"changeOrigin": "true",
"pathRewrite": {"^/api": ""}
}
}
Run Code Online (Sandbox Code Playgroud)
在Angular2 package.json中,我将启动过程更改为"start": "ng serve --proxy-config proxy.config.json"
当我在命令器中输入时,npm start然后在开始时我可以看到代理创建:/ api - > http:// localhost:8080.好吧,到目前为止我觉得很好.
我正在尝试发送请求(Angular2)
constructor(private http: Http) {
this.getUsers();
}
getUsers(): any {
return this.http.get("/api/getusers")
.subscribe(response => {
console.log(response);
})
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误http:// localhost:4200/api/getusers 404(Not Found).我们可以看到,没有任何代理.为什么?我做错什么了吗?
visual studio代码的控制台输出是
10% building modules 2/2 modules 0 active[HPM] Proxy created: /api/ -> http://localhost:8080
[HPM] Proxy rewrite rule created: …Run Code Online (Sandbox Code Playgroud) 我知道有很多关于错误的问题,这些错误Malformed reply from SOCKS server主要指向代理的错误配置.
但是,就我而言,我正在使用系统HTTP(!)代理来执行带有apache httpclient库4.3.5(httpcore 4.3.2)的POST请求,如下所示:
SystemDefaultRoutePlanner routePlanner = new SystemDefaultRoutePlanner(
ProxySelector.getDefault());
CloseableHttpClient httpclient = HttpClients.custom()
.setRoutePlanner(routePlanner)
.build();
Run Code Online (Sandbox Code Playgroud)
这也是/sf/answers/1452048181/中的建议
在大多数情况下,这个httpclient和以下的http POST请求都能很好地工作.但是,在一个客户,它失败并出现以下日志错误:
Mrz 05, 2015 10:11:04 AM org.apache.http.impl.execchain.RetryExec execute
Information: I/O exception (java.net.SocketException) caught when processing request to {}->http://proxy.local:80->http://my-webservice.tld:80: Malformed reply from SOCKS server
Mrz 05, 2015 10:11:04 AM org.apache.http.impl.execchain.RetryExec execute
Information: Retrying request to {}->http://proxy.local:80->http://my-webservice.tld:80
Run Code Online (Sandbox Code Playgroud)
本地系统代理设置(在Windows 7上)未配置为SOCKS代理,而是配置为HTTP代理!我证实了这一点通过登录不同RoutePlanner和Proxy参数:
TunnelType: PLAIN
TargetHost: http://my-webservice.tld:80
ProxyHost: http://proxy.local:80
ProxyPort: 80
ProxyType: HTTP
Run Code Online (Sandbox Code Playgroud)
但是,我的POST请求未正确发送.在代理日志文件中,它显示如下: …
我设置了一个 Kubernetes 集群,但由于组织政策的原因,该集群无法连接互联网。现在有一些服务需要通过互联网进行通信。为了解决这个问题,我设置了一个位于 K8s 集群外部的转发代理 (Squid)。我的 K8s 集群的所有节点都可以使用正向代理访问“google.com”。但我无法让我的 Pod 通过该代理进行通信。
我在所有主节点和工作节点上设置了以下变量:
export http_proxy="http://10.x.x.x:3128"
export https_proxy="https://10.x.x.x:3128"
Run Code Online (Sandbox Code Playgroud)
我能够从主节点和工作节点卷曲 google.com。但是当我附加到容器中时,我注意到没有变量 http_proxy 和 https_proxy。并且它无法执行成功的卷曲。
我的 Pod 和服务网络与我的 VM 网络不同
pod-network-cidr=192.167.0.0/16
service-cidr 192.168.0.0/16
Run Code Online (Sandbox Code Playgroud)
我的虚拟机网络如下:
Master -> 10.2.2.40
Worker1 -> 10.2.2.41
Worker2 -> 10.2.2.42
Worker3 -> 10.2.2.43
Run Code Online (Sandbox Code Playgroud)
我的转发代理运行在
Forward Proxy: 10.5.2.30
Run Code Online (Sandbox Code Playgroud)
我使用的是 kubernetes 版本 v1.11.2。这里是否有任何帮助,例如我应该将 kubernetes 集群的 http_proxy 设置放在哪里,以使其对所有 Pod 和服务有效?
我想了解 http_proxy 和 https_proxy 环境变量之间的区别。
所以我的理解是,如果我(作为客户端)发送 http 请求,将使用 http_proxy。如果我(作为客户端)发送 https 请求,将使用 https_proxy。
有一些可能的设置来设置 http_proxy 和 https_proxy:
1. http_proxy = http://proxy:port
2. https_proxy = http://proxy:port
3. http_proxy = https://proxy:port
4. https_proxy = https://proxy:port
Run Code Online (Sandbox Code Playgroud)
据我了解,变体 1、2 可能是常见设置。变体 3 怎么样,它是一种可能的设置吗?请求是如何传输的?我认为4也是一个可能的设置,但我不清楚工作流程。
这是我的猜测:
在第一个设置中,如果我向目标服务器发送 http 请求,则将使用 http_proxy,使用此设置,请求将作为客户端发送 --(http 请求) --proxy --(http 请求) -- 服务器
在第二个设置中,如果我向目标服务器发送 https 请求,则将使用 https_proxy,使用此设置,请求将是客户端 --(https 请求)-- 代理 --(https 请求) --server。在这种情况下,代理只会将加密的数据包传输到服务器,数据包只会在服务器端解密。
在第三种设置中,如果我向目标服务器发送 http 请求,使用此设置,会发生什么?它是一个合格的设置吗?
在第四个设置中,如果我向目标服务器发送 https 请求,则将使用 https_proxy,使用此设置,请求将通过客户端发送 --(https 请求) --proxy --(https 请求) -- 服务器. 在这种情况下,这是否意味着客户端的 https 请求使用代理的公钥加密,哪个代理首先解密请求,然后使用目标服务器的 pk 加密,然后将请求转发到服务器?然而,在这种情况下,它是不是打破了客户端和服务器之间的端到端加密?如果我的假设是错误的,那么此设置的正确图片是什么?
具体来说,我想知道从客户端 - …