Accesser icon indicating copy to clipboard operation
Accesser copied to clipboard

某网站出现错误: [WinError 10054] 远程主机强迫关闭了一个现有的连接

Open majiayeah opened this issue 5 years ago • 18 comments

感谢作者的的这个软件,非常有用!

在Windows上使用,现在出现了个问题。 配置方面,使用自己安装的python启动accessor.py。 证书已导入。 DNS使用本地自建DNS。 打开大部分网站没有问题,但是打开某个网站(软件自带pac里面支持的某个网站,具体就不明说了:)),出现了错误。错误代码如下:

2019-06-24 10:51:03 DEBUG Accesser: CONNECT www.XXXXXX.com:443 HTTP/1.1 2019-06-24 10:51:03 DEBUG Accesser: GET / HTTP/1.1

Exception happened during processing of request from ('127.0.0.1', 64965) Traceback (most recent call last): File "C:\Users\XXX\Anaconda3\lib\socketserver.py", line 650, in process_request_thread self.finish_request(request, client_address) File "C:\Users\XXX\Anaconda3\lib\socketserver.py", line 360, in finish_request self.RequestHandlerClass(request, client_address, self) File "C:\Users\XXX\Anaconda3\lib\socketserver.py", line 720, in init self.handle() File "accesser.py", line 212, in handle self.remote_sock = remote_context.wrap_socket(self.remote_sock, server_hostname=server_hostname) File "C:\Users\XXX\Anaconda3\lib\ssl.py", line 412, in wrap_socket session=session File "C:\Users\XXX\Anaconda3\lib\ssl.py", line 853, in _create self.do_handshake() File "C:\Users\XXX\Anaconda3\lib\ssl.py", line 1117, in do_handshake self._sslobj.do_handshake() ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

目前仅发现在该网站出现此问题。其他网站均工作正常。

请问是怎么回事?

majiayeah avatar Jun 24 '19 03:06 majiayeah

看起来是TLS握手过程中被RST了,先检查下DNS返回是否正确(虽然出问题可能性不大),其他原因可能是服务器不接受域前置或者GFW干的之类的。

没有具体网站也无法具体分析。。

URenko avatar Jun 24 '19 11:06 URenko

DNS确认是正确的。 应该也不是墙在干扰,因为其他网站都没问题。

该网站是xxxxxxxx 请去掉中间的~ 😁

majiayeah avatar Jun 24 '19 18:06 majiayeah

我这里测试是没问题的,能提供下你的DNS得到的IP吗,我去试一下。

URenko avatar Jun 25 '19 00:06 URenko

66.254.114.41

此外,用 https://github.com/SeaHOH/GotoX 这个软件的自定义SNI功能,可以直连打开该网站。在同一个位置同一台电脑上。

majiayeah avatar Jun 25 '19 02:06 majiayeah

我这里用这个IP是可以的,也许是你的Python带的OpenSSL版本导致TLS版本不符?我是Python3.7.3带的OpenSSL1.1.0j

如果有抓包结果就好分析了,可以使用Wireshark+Npacp

URenko avatar Jun 25 '19 04:06 URenko

应该不是Openssl版本的问题。我的版本是Openssl 1.1.1c 我在另外一台电脑上,用Windows版的打包程序,也不能打开这个网站。

抓包的结果如附件PDF所示。 capture.pdf

majiayeah avatar Jun 25 '19 08:06 majiayeah

问题是出在Accesser和远程服务器通信之间,所以不需要本地的东西,不过你似乎只抓了本地的😅

URenko avatar Jun 25 '19 11:06 URenko

问题是出在Accesser和远程服务器通信之间,所以不需要本地的东西,不过你似乎只抓了本地的

怎么抓需要的东西?不太会用

majiayeah avatar Jun 25 '19 13:06 majiayeah

我想可能是我说的Npcap误导你在“捕获”界面选了Npcap Lookback Adapter

你按照你当前使用的网络来判断就好了,比如无线一般就是WLAN那个,另外也可以结合“捕获”界面的流量图来判断,有流量的一般就是(Npcap Lookback Adapter除外),停止捕获后,文件-保存,最好用pcap、pcapng这些格式(PDF看得有点累😅)

URenko avatar Jun 25 '19 13:06 URenko

capture.zip

请查看。

majiayeah avatar Jun 26 '19 05:06 majiayeah

@URenko 追加内容。 在Android上,用termux运行了Accesser。 第一次能成功打开此网站。 关闭后,后面再就打不开了。一直报SSLv3 handshake错误。 跟电脑上这个症状很类似。电脑上也是在handshake时失败。

不知是不是同一个原因。

majiayeah avatar Jun 27 '19 09:06 majiayeah

从抓包来看,有点像是GFW做的? 不过只针对该网站有点奇怪,此外GotoX也是一样的原理 你GotoX的SNI是怎么配置的,空还是随机之类的?

URenko avatar Jun 27 '19 10:06 URenko

再追加一下。 发现不仅仅是针对这个网站,对别的一些网站也有这个问题。

由于手机的firefox不支持pac代理,所以只能全部走代理。 然后发现其他有一些网站也有这个问题。 比如mozilla.org,也是报ssl的handshake错误。

Gotox的SNI设置的是全部随机,连接所有网站都没问题。有时偶尔会出现ssl建立失败,但刷新一下就又可以了。

所以现在我不确定是墙的问题,还是本程序的问题。

majiayeah avatar Jun 27 '19 17:06 majiayeah

应该是墙的问题,过一段时间再详细地研究下,再决定是否要改进或升级技术。感谢你的汇报和调试!

URenko avatar Jun 28 '19 13:06 URenko

好的,耐心等待。谢谢!

此外,由于GotoX在电脑上使用无此问题,个人猜测,这个问题是否与SSL/TLS的版本和加密算法有关?或者与伪造的SNI值有关? 当然,一切结论需要依赖作者研究和调试来确定。

majiayeah avatar Jun 28 '19 14:06 majiayeah

此外,由于GotoX在电脑上使用无此问题,个人猜测,这个问题是否与SSL/TLS的版本和加密算法有关?或者与伪造的SNI值有关?

从抓包结果(大量RST,且RST后服务器端还有正常返回)来看,可能性不大

URenko avatar Jun 28 '19 14:06 URenko

此外,由于GotoX在电脑上使用无此问题,个人猜测,这个问题是否与SSL/TLS的版本和加密算法有关?或者与伪造的SNI值有关?

从抓包结果(大量RST,且RST后服务器端还有正常返回)来看,可能性不大

那可真不是一个好消息。全依赖你从技术上克服这一点了🙏

majiayeah avatar Jun 29 '19 09:06 majiayeah

https://blog.csdn.net/illegalname/article/details/77164521

jeanru avatar Mar 31 '20 06:03 jeanru

stale

URenko avatar Jun 08 '24 10:06 URenko