当前位置: 首页 > 知识库问答 >
问题:

使用Http代理v/s https代理的优缺点?

乐山
2023-03-14

JVM 允许代理属性 http.代理主机和 http.代理端口用于指定 HTTP 代理服务器,以及 https.proxyHost 和 https.proxyPort 用于指定 HTTPS 代理服务器。

我想知道与HTTP代理服务器相比,使用HTTPS代理服务器是否有任何优势?

通过HTTPS代理访问https url是否比从HTTP代理访问它更麻烦?

共有3个答案

罗飞宇
2023-03-14

如果您的意思是通过 TLS 连接到 HTTP 代理服务器,则

我想知道与HTTP代理服务器相比,使用HTTPS代理服务器是否有任何优势?

优点是您的客户端到代理服务器的连接是加密的。例如,防火墙无法看到您使用< code>CONNECT方法连接到哪个主机。

通过HTTPS代理访问https url是否比从HTTP代理访问它更麻烦?

一切都是一样的,除了使用HTTPS代理,浏览器到代理服务器的连接是加密的。

但您需要在代理服务器上部署证书,就像https网站一样,并使用pac文件配置浏览器,以启用通过SSL连接到代理。

有关更多详细信息和实际示例,请在此处查看我的问答HTTPs代理服务器仅适用于SwitchOmega

麹学文
2023-03-14

没有优劣之分。也没有“HTTPS代理”服务器。

您可以告诉协议处理程序为不同的协议使用哪个代理服务器。这可以用于超文本传输协议httpsftp袜子。不多也不少。

我无法告诉您是否应该为https连接使用不同的代理。视情况而定。我只能解释http和https对代理的请求的区别。

由于HTTP代理(或Web代理)理解HTTP(因此得名),客户端可以将请求发送到代理服务器,而不是实际的去中心化。这不适用于HTTPS。这是因为代理不能进行TLS握手,这种情况最初会发生。因此客户端必须向代理发送CONNECT请求。代理建立传输控制协议,只需来回发送包而不接触它们。所以TLS握手发生在客户端和去中心化之间。HTTP代理服务器看不到一切,也不会验证去中心化服务器的证书。

整个超文本传输协议https代理可能会有些混乱。可以使用https连接到HTTP代理。在这种情况下,客户端和代理之间的通信是加密的。

也有所谓的TLS终止或拦截代理服务器,如Squid的SSL Peek和Splice或burp,它们可以看到一切。但这不应该开箱即用,因为代理使用自己的证书,这些证书没有被受信任的CA签名。

  • https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html
  • https://parsiya.net/blog/2016-07-28-thick-client-proxying---part-6-how-https-proxies-work/
  • http://dev.chromium.org/developers/design-documents/secure-web-proxy
  • https://www.rfc-editor.org/rfc/rfc2817#section-5
  • https://www.rfc-editor.org/rfc/rfc7231#section-4.3.6
毛博
2023-03-14

HTTP代理获得一个纯文本请求,然后[在大多数情况下,但不是所有情况下]向远程服务器发送一个不同的HTTP请求,然后向客户端返回信息。

HTTPS代理是一个中继,它接收特殊的HTTP请求(CONNECT动词),并构建到目标服务器(甚至不一定是HTTPS服务器)的不透明隧道。然后,客户端向服务器发送SSL/TLS请求,并继续进行SSL握手,然后使用HTTPS(如果请求)。

如您所见,这是两种完全不同的代理类型,具有不同的行为和不同的设计目标。HTTPS代理不能缓存任何东西,因为它看不到发送到服务器的请求。有了HTTPS代理,你就有了一个到服务器的通道,客户端接收并验证服务器的证书(反之亦然)。另一方面,HTTP代理可以看到并控制从客户端收到的请求。

虽然HTTPS请求可以通过HTTP代理发送,但这几乎永远不会完成,因为在这种情况下,代理将验证服务器的证书,但客户端将能够接收和验证代理的证书,并且由于代理证书中的名称与套接字连接到的地址不匹配,在大多数情况下,将发出警报并且SSL握手不会成功(我不会详细说明如何尝试解决这个问题)。

最后,由于HTTP代理可以查看请求,这使HTTPS通道提供的安全性概念无效,因此对HTTPS请求使用HTTP代理通常仅用于调试目的(我们再次省略了需要监控公司员工所有HtTPS流量的偏执公司安全策略的情况)。

补充:也请在这里阅读我对类似主题的回答。

 类似资料:
  • 以下是我对这些的理解,我看到了很少的差距;特别是何时何地使用 HTTP(s)代理: 可用作TLS终止代理 可用于修改HTTP标头 可用作DMZ前面的负载均衡器或公共IP提供程序,以屏蔽后端服务器 TCP代理 可以用作TCP连接的反向代理,不仅支持HTTP而且支持其他应用层协议,如FTP 我的问题 如果我只接受HTTP web流量,我们应该使用TCP代理而不是HTTP代理的用例是什么 这种理解是连接

  • 本文向大家介绍Java中的代理原理及代理使用示例,包括了Java中的代理原理及代理使用示例的使用技巧和注意事项,需要的朋友参考一下 今天再测试Socket编程时,无法连接外网。公司用的是Http的代理。上网搜索也没看太懂,所以花了大量时间来学习。看了HTTP和TCP协议的关系好,才有所明白。现在能通过Socket使用HTTP代理了,结果很简单,过程却好难。 1. 先简要说说HTTP和TCP(具体内

  • 我在react应用程序中遇到了很多CORS问题,我做了很多研究,发现我必须使用代理。 我尝试在包中使用代理。通过添加 然后我尝试删除上面的内容并创建setupProxy。包含以下内容的js: 我的请求在应用程序中看起来像这样。点击按钮时会发生这种情况: 我也尝试在. get中使用https://api.clashroyale.com/v1/players/#123TAG,但也没有运气。任何关于如何

  • 13.1 代理服务的介绍: 我们在做爬虫的过程中经常最初爬虫都正常运行,正常爬取数据,一切看起来都是美好,然而一杯茶的功夫就出现了错误。 如:403 Forbidden错误,“您的IP访问频率太高”错误,或者跳出一个验证码让我们输入,之后解封,但过一会又出现类似情况。 出现这个现象的原因是因为网站采取了一些反爬中措施,如:服务器检测IP在单位时间内请求次数超过某个阀值导致,称为封IP。 为了解决此

  • 问题内容: 如何配置用户名和密码以使用Java验证http代理服务器? 我刚刚发现以下配置参数: 但是,我的代理服务器需要身份验证。如何配置我的应用程序以使用代理服务器? 问题答案: (编辑:正如OP所指出的,也需要使用a 。为了正确起见,我相应地更新了我的答案。) (编辑#2:正如另一个答案中指出的那样,在JDK 8中,需要从属性中删除身份验证方案) 对于身份验证,用于设置代理的配置并设置系统属

  • 让我首先说这是工作昨天,所以我完全不明白为什么它停止工作所有突然。而Java/插件真的不是我的专长。 我正在开发一个应用程序,它可以对另一个域上的服务器进行POST和GET调用。这是一个Maven项目。为了避免跨源问题,我有一个HttpProxy.ProxyServlet插件。 我将在这里列出所有的工作peics,但基本上问题和错误都在这篇文章的底部总结出来。 pom.xml web.xml 第二