匿名版
和平讨论 理性发言 | 我们已经启用最新域名  kukuku.cc | 官方微博  | 安卓客户端下载  | iOS客户端下载  | 本站源代码 On GitHub
轻文轻小说 |萌导航

No.6994034 - 技术宅


回应模式
No.6994034
标题
颜文字
正文
贴图
选择图片

•程序语言、压制投稿、视频制作以及各领域的技术问题
•本版发文间隔为@Time秒。


无标题 - 2018-01-13 15:27:07 ID:OXHLduGFgE [举报][订阅] 顶[0]踩[0] No.6994034[回应]管理
http代理的问题
请问有办法加密客户端和http代理之间的流量吗?
比如我通过http代理访问一个https的网站,客户端首先会向代理发送connect请求,这个请求是明文的吧?如何让这个connect请求也被加密呢?
无标题 - 2018-01-14 03:40:07ID:oDvRllziBl 顶[0]踩[0] [举报] No.10569372 管理
如果你的目标是要防止(客户端到HTTP代理之间的)MITM攻击的话,其实并不需要加密这个connect请求。为什么这么说呢?因为一个发给HTTP 代理的connect IP请求和直连HTTPS的SYN packet携带的信息其实是完全一样的。前者包含你的IP和目标网站的IP,后者也是如此。在连接建立之后,两种方式都要再经历一个TLS握手的过程,这个过程本身已经能防止MITM了。

这里有一点要注意:你可以让HTTP代理帮你做域名解析(这样connect请求里能看到明文的域名),也可以自己本地做(这样
connect请求里就只包含IP了)。但是考虑到自己本地解析所用的DNS很有可能也是不加密的,其实差别不大,不过确实是有差别的。

如果你另有目标,那么我们可以再讨论讨论为什么要加密...
无标题 - 2018-01-14 12:37:57ID:OXHLduGFgE (PO主) 顶[0]踩[0] [举报] No.10569450 管理
>>10569372
防火墙可以看到这个请求会过滤掉
无标题 - 2018-01-14 13:46:06ID:oDvRllziBl 顶[0]踩[0] [举报] No.10569467 管理
你指的是防火墙检测到HTTP connect这个请求头就会掐断连接吗?这一点是极为重要的信息,你应该在问题最开始就说明这一点... 事实上你应该多介绍一下你所处的网络环境,这样回答者就不用下各种猜测了,能节省大家的时间。

为了不让防火墙看到这个头,你有很多种方法,但是具体要用哪一种还是得看你的具体i情况:

- 如果HTTP proxy server在你控制下,那么你可以在它的协议上再套一层TLS,也就是 proxy client - TLS - TCP - wire - TCP - TLS - proxy server。
- 如果不在你控制下,那你和它之间的沟通协议已经定死了,这就意味着这条路没法用。
- 如果防火墙只白名单了HTTP GET/POST,那么你就需要X-over-HTTP(X是你想避免防火墙看到的协议,比如socks)的方法了,应该也很多,搜索一下就有不少。
无标题 - 2018-01-14 14:02:50ID:oDvRllziBl 顶[0]踩[0] [举报] No.10569468 管理
实际上这也是一个典型的提问技巧:提问的时候,要尽量描述自己遇到的问题,而不是问某种自己思考出来的、特定的解决这个问题的方法要如何实现。

前者介绍来龙去脉,给了回答者详细的问题背景。一种问题可能有多种解决方法,在这方面有经验的回答者可能会给你一个较好的解决方法。

后者的问题描述会抛弃很多细节——你会转而询问一个非常特化的解决方案,说不定效果不怎么样,也不一定能人联想到原本的问题。这是要避免的。

当然,有自己的思考是非常好的一件事情。所以很多时候你可以把原问题的详细描述,以及自己的思考,都写出来,这样就更好了。
无标题 - 2018-01-14 15:04:56ID:OXHLduGFgE (PO主) 顶[0]踩[0] [举报] No.10569478 管理
>>10569467
那么用https代理能否做到呢?
无标题 - 2018-01-15 13:59:14ID:oDvRllziBl 顶[0]踩[0] [举报] No.10569723 管理
>>No.10569478

呃,我不太明白你的意思。你在顶楼里描述的,使用connect请求的,正是一个HTTPS代理。严格来说,世界上只存在HTTP代理(RFC2068),不存在"HTTPS代理"。connect请求(RFC2817)设计出来就是为了让HTTP代理能将代理任意TCP协议的。

好难沟通啊!你能不能一次多写一些内容,详细一些,这样也能容易让人感觉到你问问题的诚意...
无标题 - 2018-01-16 14:07:31ID:BWXwrpbZGJ 顶[0]踩[0] [举报] No.10569970 管理
>>No.10569723
那为什么chrome的插件switchyomega代理设置有http/https/socks4/socks5这样的区别呢?
而且当我设置http的时候,访问https的网站也是用的http代理。
无标题 - 2018-01-18 02:10:40ID:oDvRllziBl 顶[0]踩[0] [举报] No.10570423 管理
>>No.10569970

该插件的源码在 https://github.com/FelisCatus/SwitchyOmega,如果你对其功能有疑问的话,非常推荐读一读,或者发个 issue 问问作者。很多情况下想要寻根究底,确实得这么读源码。我就是这么过来的... 而且还能获得很多新的知识
删除最后一次发的串
(* 不能反悔)

UP主: