reqable / reqable-app

Reqable issue track repo
https://reqable.com
2.55k stars 87 forks source link

[bug] 请求内网地址api,出现“未知异常:net::ERR_EMPTY_RESPONSE” #589

Open zyzling opened 2 months ago

zyzling commented 2 months ago

环境

windows 10 软件版本:2.12.0

问题

通过API测试功能,请求内网域名,报未知异常,但是请求外网,如www.baidu.com,是可以正常获取结果。如下图: image 在调试页面,发现是aborted状态,如图: image 而请求外网域名,这里是拿https://sa-token.cc/doc.html#/ 举例,是可以获取到响应的,如下: image 请问大佬,这个是什么问题?是我哪里没配置好吗?

MegatronKing commented 2 months ago

看起来像是DNS没解析出来

zyzling commented 2 months ago

看起来像是DNS没解析出来

但实际上,使用postman是可以请求的(把调试的系统代理关了),是不是代理引起的呢?但貌似把系统代理给关闭,或者在设置里选择不使用代理,也是这个问题。

MegatronKing commented 2 months ago

这个就很奇怪了,没什么特别的配置。从报错来看,就是没法访问这个URL地址,试试http不用https?

zyzling commented 2 months ago

这个就很奇怪了,没什么特别的配置。从报错来看,就是没法访问这个URL地址,试试http不用https?

我明天检查下DNS看看,再试一波,感谢大佬。另外想问一下,如果想抓访问本地端口的请求,该怎么配置?相当于程序在本地开了个端口,然后自己访问,我想抓到他们间的数据包,该怎么设置?还是暂时不支持?

MegatronKing commented 2 months ago

本地流量看这个文档:https://reqable.com/zh-CN/docs/capture/localhost

zyzling commented 2 months ago

本地流量看这个文档:https://reqable.com/zh-CN/docs/capture/localhost

感谢大佬,明天试完同步结果给到您

zyzling commented 2 months ago

这个就很奇怪了,没什么特别的配置。从报错来看,就是没法访问这个URL地址,试试http不用https?

大佬,刚刚试了下,通过ipconfig /flushdns命令刷新dns后也不行,dns服务器目前是用的公司内部的,而请求的地址也是公司内网,所以应该排除了dns的问题。而且我同时用postman去访问是可以的: image

但奇怪的是,只要我开了这里的代理,就访问不了了。 image postman访问就出错: image 然后看系统代理设置里,这个框中是有出现我请求的内网域名的 image 但是从描述来看,出现在这里面的地址,应该是不走代理的,我把框里的内容清空,再次访问也是同样的错误(不管是postman还是该软件)

MegatronKing commented 2 months ago

感谢测试,麻烦按照下面的步骤在操作下。

  1. 打开Reqable设置,开启调试日志。
  2. API测试输入框末尾的图标(跟随调试)点亮。
  3. 再次测试这个内网请求。
  4. 点击Reqable底部栏5下,打开日志窗口。
  5. 日志复制出来,脱敏,发我看看(脱敏部分备注下)。
zyzling commented 2 months ago

感谢测试,麻烦按照下面的步骤在操作下。

  1. 打开Reqable设置,开启调试日志。
  2. API测试输入框末尾的图标(跟随调试)点亮。
  3. 再次测试这个内网请求。
  4. 点击Reqable底部栏5下,打开日志窗口。
  5. 日志复制出来,脱敏,发我看看(脱敏部分备注下)。
windows  Windows 10 Home China 10.0 (Build 19045) 2.12.0(83) x86_64 cpu(16)
04-18 10:11:15.2414 [I][Dart]: App logger is ready now.
04-18 10:11:15.2414 [V][Dart]: Pre-initing app...
04-18 10:11:15.2414 [V][Dart]: App pre-init done.
04-18 10:11:15.2424 [V][Dart]: Post-initing app...
04-18 10:11:15.2834 [V][Dart]: Initing netbare engine...
04-18 10:11:15.2844 [V][Dart]: Loading CA certificate...
04-18 10:11:15.2844 [V][Dart]: CA certificate is found from cache.
04-18 10:11:15.3984 [V][Dart]: App post-init done.
04-18 10:11:15.3984 [V][Dart]: Event: app_start
04-18 10:11:15.4044 [V][Dart]: Starting netbare engine on port 9000
04-18 10:11:15.4054 [I][Dart]: Netbare engine is ready!
04-18 10:11:15.4064 [V][Dart]: Checking netbare engine state...
04-18 10:11:15.4174 [V][Dart]: Detecting python env version: python3.exe
04-18 10:11:15.4092 [I][Netbare]: [0] TCP proxy session created!
04-18 10:11:15.4092 [I][Netbare]: [0] TCP proxy session started!
04-18 10:11:15.5634 [I][Dart]: [Collabrotive] Server is running on port 12312
04-18 10:11:15.4509 [V][Netbare]: [0] Internal forwarder: 127.0.0.1 => 127.0.0.1:12412
04-18 10:11:15.4514 [V][Netbare]: [0] Connecting to 127.0.0.1:12412
04-18 10:11:15.4518 [V][Netbare]: [0] Connected 127.0.0.1:12412
04-18 10:11:15.6234 [V][Dart]: Receive a internal request: /
04-18 10:11:15.6234 [V][Dart]: Local IP detected: 10.122.26.31
04-18 10:11:15.6234 [I][Dart]: Use local IP: 10.122.26.31
04-18 10:11:15.6254 [I][Dart]: Capture SSL enabled: true
04-18 10:11:15.6764 [I][Dart]: Netbare engine state is ok!
04-18 10:11:15.6764 [E][Netbare]: [0] "Read from server": End of file
04-18 10:11:15.6768 [I][Netbare]: [0] TCP proxy session closed!
04-18 10:11:15.6974 [I][Dart]: Capture redundancy file clean done!
04-18 10:11:15.7810 [I][Dart]: Check update ok, has update: false
04-18 10:11:15.9140 [V][Dart]: Detecting python env version: python.exe
04-18 10:11:16.1530 [I][Dart]: Python env detect output: Python 3.7.7
04-18 10:11:17.5203 [V][Dart]: Event: rest_request_send
04-18 10:11:17.5281 [I][Netbare]: [1] TCP proxy session created!
04-18 10:11:17.5282 [I][Netbare]: [1] TCP proxy session started!
04-18 10:11:17.5284 [V][Netbare]: [1] Using https proxy protocol.
04-18 10:11:17.5287 [V][Netbare]: [1] Connecting to xxxx.xxxx.com(10.0.100.221):443
04-18 10:11:17.5289 [E][Netbare]: [1] Failed to connect: xxxx.xxxx.com
04-18 10:11:17.5290 [I][Netbare]: [1] TCP proxy session closed!
04-18 10:11:18.5589 [W][Dart]: Failed to detect process info for 60677
04-18 10:11:19.8794 [V][Dart]: Showing window debug_logger
04-18 10:11:19.8794 [V][Dart]: Popuping window debug_logger
04-18 10:11:19.8794 [V][Dart]: Event: window_popup_debug_logger

其中域名部分,被替换成xxxx.xxxx.com。地址都是内网地址,而且对应的ip也是可以ping通,如下图: image

MegatronKing commented 2 months ago

10.0.100.221这个IP是实际的域名解析地址吗,ping能通说明网络路由没问题,但是不代表tcp连接没问题。我猜测可能是443端口没开放,你试试不用https用http呢?

zyzling commented 2 months ago

10.0.100.221这个IP是实际的域名解析地址吗,ping能通说明网络路由没问题,但是不代表tcp连接没问题。我猜测可能是443端口没开放,你试试不用https用http呢?

是的,10.0.100.221是实际解析的地址,实际上443端口是开放了的,不然通过postman也不会请求成功,而且在浏览器中是可以访问的。使用http请求,也是不行,如下图: image 下面是对应的日志

windows  Windows 10 Home China 10.0 (Build 19045) 2.12.0(83) x86_64 cpu(16)
04-18 16:03:20.7960 [I][Dart]: App logger is ready now.
04-18 16:03:20.7960 [V][Dart]: Pre-initing app...
04-18 16:03:20.7960 [V][Dart]: App pre-init done.
04-18 16:03:20.7980 [V][Dart]: Post-initing app...
04-18 16:03:20.8160 [V][Dart]: Initing netbare engine...
04-18 16:03:20.8180 [V][Dart]: Loading CA certificate...
04-18 16:03:20.8180 [V][Dart]: CA certificate is found from cache.
04-18 16:03:20.9702 [V][Dart]: App post-init done.
04-18 16:03:20.9702 [V][Dart]: Event: app_start
04-18 16:03:20.9771 [V][Dart]: Starting netbare engine on port 9000
04-18 16:03:20.9781 [I][Dart]: Netbare engine is ready!
04-18 16:03:20.9791 [V][Dart]: Checking netbare engine state...
04-18 16:03:20.9823 [I][Netbare]: [0] TCP proxy session created!
04-18 16:03:20.9823 [I][Netbare]: [0] TCP proxy session started!
04-18 16:03:20.9838 [V][Netbare]: [0] Internal forwarder: 127.0.0.1 => 127.0.0.1:12412
04-18 16:03:20.9845 [V][Netbare]: [0] Connecting to 127.0.0.1:12412
04-18 16:03:20.9848 [V][Netbare]: [0] Connected 127.0.0.1:12412
04-18 16:03:20.9851 [V][Dart]: Receive a internal request: /
04-18 16:03:20.9861 [I][Dart]: Netbare engine state is ok!
04-18 16:03:20.9863 [E][Netbare]: [0] "Read from server": End of file
04-18 16:03:20.9866 [I][Netbare]: [0] TCP proxy session closed!
04-18 16:03:20.9971 [V][Dart]: Detecting python env version: python3.exe
04-18 16:03:21.2131 [I][Dart]: [Collabrotive] Server is running on port 12312
04-18 16:03:21.2161 [V][Dart]: Local IP detected: 10.122.26.31
04-18 16:03:21.2161 [I][Dart]: Use local IP: 10.122.26.31
04-18 16:03:21.2291 [I][Dart]: Capture SSL enabled: true
04-18 16:03:21.2431 [I][Dart]: Capture redundancy file clean done!
04-18 16:03:21.3451 [I][Dart]: Check update ok, has update: false
04-18 16:03:21.4921 [V][Dart]: Detecting python env version: python.exe
04-18 16:03:21.6901 [I][Dart]: Python env detect output: Python 3.7.7
04-18 16:03:24.9330 [V][Dart]: Event: rest_request_send
04-18 16:03:24.9420 [I][Netbare]: [1] TCP proxy session created!
04-18 16:03:24.9421 [I][Netbare]: [1] TCP proxy session started!
04-18 16:03:24.9423 [V][Netbare]: [1] Using http proxy protocol.
04-18 16:03:24.9428 [V][Netbare]: [1] Connecting to xxxx.xxxx.com(10.0.100.221):80
04-18 16:03:24.9429 [E][Netbare]: [1] Failed to connect: xxxx.xxxx.com
04-18 16:03:24.9431 [I][Netbare]: [1] TCP proxy session closed!
04-18 16:03:25.9728 [W][Dart]: Failed to detect process info for 52906
04-18 16:03:26.9246 [V][Dart]: Showing window debug_logger
04-18 16:03:26.9246 [V][Dart]: Popuping window debug_logger
04-18 16:03:26.9246 [V][Dart]: Event: window_popup_debug_logger

同样是把域名脱敏成xxxx.xxxx.com

MegatronKing commented 2 months ago

🤔这太奇怪了啊,看起来和我这边逻辑没什么关系了,难不成是库的bug?

不知掉你是否会使用wireshark,需要抓下传输层(tcp)的包,看看tcp握手是哪一步出现问题了。

MegatronKing commented 2 months ago

补充一下。这个问题出在Reqable的概率感觉不大,更像是被系统限制了访问。比如说第一次启动应用的时候,windows系统会弹出来让用户选择是公用网络还是家庭网络,选择不同的结果可能会影响到;另外,就是一些杀毒软件或者监控软件可能也会限制某些应用程序的网络访问。

zyzling commented 2 months ago

补充一下。这个问题出在Reqable的概率感觉不大,更像是被系统限制了访问。比如说第一次启动应用的时候,windows系统会弹出来让用户选择是公用网络还是家庭网络,选择不同的结果可能会影响到;另外,就是一些杀毒软件或者监控软件可能也会限制某些应用程序的网络访问。

不太会用wireshark,但感觉和代理服务器有点关系。我在这里 image 填入需要访问的域名,发现postman是可以通的。但Reqable不通。而如果这里不填需要访问的域名,postman也不通。 image

MegatronKing commented 2 months ago

这个问题是这样的。

这里面填了域名,postman就不会走代理服务器(也就是Reqable的中间人代理服务器)而是直连,没问题是正常的。如果填了域名,Postman会先访问Reqable的中间人代理服务器,Reqable的中间人代理服务器再去连接实际的服务器地址,看到Postman也访问不了,是因为Reqable的中间人代理服务器无法访问实际的服务器地址。但是这个地址填不填,对Reqable来讲都没有影响,都会走自己的中间人代理服务器。而问题就出在Reqable整个应用程序都无法访问实际的服务器地址,所以我觉得很可能是Reqable的网络访问被系统或者某些其他进程限制了。

zyzling commented 2 months ago

这个问题是这样的。

这里面填了域名,postman就不会走代理服务器(也就是Reqable的中间人代理服务器)而是直连,没问题是正常的。如果填了域名,Postman会先访问Reqable的中间人代理服务器,Reqable的中间人代理服务器再去连接实际的服务器地址,看到Postman也访问不了,是因为Reqable的中间人代理服务器无法访问实际的服务器地址。但是这个地址填不填,对Reqable来讲都没有影响,都会走自己的中间人代理服务器。而问题就出在Reqable整个应用程序都无法访问实际的服务器地址,所以我觉得很可能是Reqable的网络访问被系统或者某些其他进程限制了。

感谢大佬,如果全部限制了,那还好说,但关键是只限制了内网请求,我也是懵逼。想不出办法了~跟开clash有关吗?但我关掉也不行呀。。。

MegatronKing commented 2 months ago

有可能是防火墙,例如Windows Definder。当然也可以通过换个设备来验证是不是Reqable程序的问题,比如你可以下个Reqable手机版本,请求下试试。

zyzling commented 2 months ago

有可能是防火墙,例如Windows Definder。当然也可以通过换个设备来验证是不是Reqable程序的问题,比如你可以下个Reqable手机版本,请求下试试。

好的,我试试。谢谢大佬先,有结果我同步给到您

zyzling commented 2 months ago

大佬,我用手机版Reqable试了下,可以访问内网,PC端不能的问题还是有点懵。不知道是不是公司有啥策略之类的。感谢大佬回复

MegatronKing commented 2 months ago

@zyzling 你试试这个:https://www.zhihu.com/question/308712641/answer/3285107143

zyzling commented 2 months ago

@zyzling 你试试这个:https://www.zhihu.com/question/308712641/answer/3285107143

针对Reqable都是开了的。 image

zyzling commented 2 months ago

@zyzling 你试试这个:https://www.zhihu.com/question/308712641/answer/3285107143

而且防火墙的入站和出站规则都没有任何拦截 image image