Comments (20)
QUIC
反向代理相关支持的前置条件是完成 #413
from reqable-app.
我理解你说的功能和反向代理看起来没有关系
from reqable-app.
有关系的,而且是直接相关的需求,我说的这一套方案我今天用 https://github.com/masx200/http3-reverse-proxy-server-experiment 走通了。
比如说我这有一个客户端需要抓包,但是它的流量是走quic的,而且不支持自适应降级,所以只能连接到https。
我可以通过修改客户端二进制文件来控制其接口的域名,所以我可以将其改成一个反向代理的域名,这时候可以通过反向代理抓包。
但是因为上述的必须要连接到https的原因,这个反向代理必须要是能够配置证书来监听和解密tls流量的,但是这个需求目前 Reqable 并不支持。
from reqable-app.
@WankkoRee 抱歉,忘记跟进这个issue了。不知道你说的反向代理是不是和Reqable的反向代理功能是同一个?
from reqable-app.
是同一个。
当前的Reqable只支持:客户端-http-http/https服务端。
我的需求是支持:客户端-http/https/quic-http/https/quic服务器。
from reqable-app.
目前反向代理涉及下面:
- 客户端和反向代理服务器。这个目前是
HTTP1.1
明文协议。 - 反向代理客户端到真实服务器。这个目前是
HTTP1.1
协议,如果真实服务器强制HTTP2
或者QUIC
则会请求失败。
不知道你说的是否是第二个要支持HTTP2
和QUIC
?
from reqable-app.
我的需求是第一个和第二个都支持HTTP2
和QUIC
,因为我遇到的情况是,除了有些服务器端会强制协议外,有些客户端也会强制协议,这一点我在上面有提到过。
比如说我这有一个客户端需要抓包,但是它的流量是走quic的,而且不支持自适应降级
from reqable-app.
我的需求是第一个和第二个都支持
HTTP2
和QUIC
,因为我遇到的情况是,除了有些服务器端会强制协议外,有些客户端也会强制协议,这一点我在上面有提到过。比如说我这有一个客户端需要抓包,但是它的流量是走quic的,而且不支持自适应降级
我还是不能理解你的这个需求,或者是你没有理解反向代理功能的工作原理,所以我们说的应该不是同一件事情。关于Reqable的反向代理,请阅读文档:https://reqable.com/zh-CN/docs/capture/reverse-proxy
from reqable-app.
我说的就是反向代理,这一点我可以确认,因为我使用 https://github.com/traefik/traefik 和 https://github.com/masx200/http3-reverse-proxy-server-experiment 都实现了一部分我的需求,这两个项目都是反向代理功能直接相关的。
我就是在试了其他项目确认这个需求是可行的,才过来提 issue 的。
我还是不能理解你的这个需求
如果可以的话,希望能够提出不理解的地方。
from reqable-app.
我说的就是反向代理,这一点我可以确认,因为我使用 https://github.com/traefik/traefik 和 https://github.com/masx200/http3-reverse-proxy-server-experiment 都实现了一部分我的需求,这两个项目都是反向代理功能直接相关的。
你看下Reqable的文档,此反向代理
非Reqable的反向代理。
from reqable-app.
我看了,而且我确认两个反向代理的含义是一致的,你说的两者的不同是?
from reqable-app.
Reqable的反向代理是用来解决客户端不走系统代理和证书信任问题的。要求客户端通过HTTP1.1明文连接到Reqable代理服务器,不存在你说的我的需求是第一个和第二个都支持HTTP2和QUIC,因为我遇到的情况是,除了有些服务器端会强制协议外,有些客户端也会强制协议,这一点我在上面有提到过。
这种需求。
from reqable-app.
但是HTTP2和QUIC也存在证书信任问题,我是在确认客户端不承认本地额外配置的证书后,才尝试反向代理方案的。
而HTTP2和QUIC很明显是不支持直接使用只支持HTTP/1.1的反向代理的。
from reqable-app.
我理解的是你认为 Reqable 实现 C-http-R-http/https-S 来解决不走代理和证书不可信的痛点就足够,但是实际情况是客户端在只支持http2或quic的情况下, Reqable 的反向代理并不能很好地满足需求。
from reqable-app.
客户端只支持http2或quic
请问这是为啥呢?现在基本上所有HTTP网络库都支持HTTP1吧。
from reqable-app.
我这边碰到的是使用 golang 手搓客户端的一个项目,其大致代码如下:
- http2
return &http.Client{
Transport: &http2.RoundTripper{
},
}
- quic
return &http.Client{
Transport: &http3.RoundTripper{
QuicConfig: &quic.Config{
MaxIncomingStreams: 100,
MaxIncomingUniStreams: 100,
},
},
}
http2 那个我不确定能否自适应降级为 https over http1.1 ,但是 quic 那个我是测试过不支持自适应降级为 https over http1.1 的。
from reqable-app.
我不了解golang,但是你请求http://127.0.0.1
肯定都是走HTTP1。如果你说客户端无法请求http://127.0.0.1
,那你需要修改代码了,Reqable反向代理本来就需要修改代码将真实域名替换成127.0.0.1
。
现在唯一的问题是,如果真实服务器强制要求HTTP2或QUIC,会导致反向代理失败。你希望解决的就是这个吧?
from reqable-app.
Reqable反向代理本来就需要修改代码将真实域名替换成
127.0.0.1
我无法修改代码来实现复杂的逻辑,如自适应降级、更换http协议版本,但是我可以通过修改二进制文件中的字符串来实现一些简单的域名替换需求。
现在唯一的问题是,如果真实服务器强制要求HTTP2或QUIC,会导致反向代理失败。你希望解决的就是这个吧?
是的。
from reqable-app.
我无法修改代码来实现复杂的逻辑,如自适应降级、更换http协议版本,但是我可以通过修改二进制文件中的字符串来实现一些简单的域名替换需求。
那你这个估计就用不了Reqable反向代理,本来就是要通过将https改成http明文请求来解决证书问题的。HTTP2和QUIC的实现都是强制要走HTTPS的。
from reqable-app.
证书问题我在最开始有提到过解决方案。
这种情况下,反向代理的证书问题需要用户自行解决,如反向代理监听一个域名,这个域名会解析到反向代理的主机IP上,而这个域名在事先已经在公网中申请了一个可信的证书,用户只需要导入这个证书和私钥即可实现客户端可信的反向代理。
我有一个域名,并且这个域名已经事先通过公网服务器申请了一个可信的证书,我现在只需要将这个域名指向 127.0.0.1 ,即可使用这个域名作为反向代理使用。
from reqable-app.
Related Issues (20)
- 请教下数据开了脚本后数据异常的问题
- 请教下数据开了脚本后数据异常的问题
- 请教下数据开了脚本后数据异常的问题
- [bug] 在 `2.17.0` 版本后 MuMu模拟器12 无法正常抓包
- [bug] Mac 在开启代理一段时间之后端口无法使用,需要重启 Reqable HOT 1
- [bug] 开启脚本后,会自动对原请求参数值进行URL解码处理,导致出错 HOT 1
- [feature] Websocket 消息支持搜索 HOT 1
- [feature] 脚本中是否可以动态的指定二级代理 HOT 1
- [bug] HOT 1
- 无法设置系统代理 HOT 2
- [bug] 当一组请求的URL的IP部分为环境变量时,登录接口获取的cookies将不会自动带入其他接口的请求头 HOT 7
- 增加过滤功能 HOT 6
- [bug] 响应体过大时,搜索相应不出结果
- [bug] 打开软件闪屏、黑白屏 HOT 2
- [bug] 打开软件闪屏、黑白屏
- [bug] 在Socks5代理下,无法查看使用IP地址通信的HTTPS报文内容 HOT 13
- [bug] 启动脚本后,响应时间变长了几十倍
- 关于改进建议
- [feature] 导出响应体时以 url 中的文件名命名
- 同时保存请求和响应到书签之类的地方用于分析和版本差异对比
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from reqable-app.