2.13测试版

试了试,很完美,无论32位还是64位都正常支持emoji了。


顺带一提,打开彗星后,看到这个提示


考虑到(大)部分用户不知道怎么切换为64位,不如弹出个单独的提示窗口,窗口上有一个按钮,按下去后退出彗星,并在安装路径改动文件如下:
①重命名【BitComet.exe】为【BitComet_x32.exe】。
②原地复制粘贴【BitComet_x64.exe】并重命名为【BitComet.exe】。

完成后重启彗星。
(或者下一版直接只出一个exe,里面集成64位和32位,系统支持哪个就启动哪个)

做不了,32位系统无法运行64位应用,比如说xp,server2003,server2008,Windows7等用户。
除非做个32位启动器,然后生成到桌面快捷方式运行启动器,启动目录里面的压缩包(包含2个进程文件),或者分别单个进程,但是这种方法多此一举,这种做法就和点击 启动.bat 运行程序一样

早期版本没有这个提示,这个提示是特别做的,引导用户启用64位版

是种子文件制作好后,我这个做种任务的下载进度只有60%。然后会对那40%的文件进行下载,这样就会多下载了一份文件。
并且我暂停该任务,重新检查完整性也没办法识别到那些文件。但实际上那些文件是有的。

正常情况下,制作种子文件,在制作好后,双击可以进入上传状态,并且任务进度应该是100%。

如果是文件名含有emoji表情符造成的,那beta6已修复,可以试试看

错误提示以成功通过横幅形式

也许接下来可以把WEBUI上的通知显示做一下
目前右下角可以显示通知数量但是不能显示通知内容


额 其实就是想让端口监听设置划归到webui的分组框里面
不过这个端口是手机app和WEBUI共用的 这样设置其实也可以

@wxhere15

真要做的话,需要搭建测试环境。方便的话,最好能提供你正在使用的相关代理服务器配置信息。

为了方便您的开发,我帮助您构建一个本地环境的frp(frp服务器+frp客户端),您可以用此环境构建proxy procotol v2测试环境。

  1. 您需要先下载frps和frpc,github release下载链接:https://github.com/fatedier/frp/releases/tag/v0.61.2
  2. 解压缩,将下述配置文件(frps.toml和frpc.toml)放到目录下
#frps.toml
bindPort = 7000
#frpc.toml
serverAddr = "192.168.1.4"
serverPort = 7000
transport.protocol = "tcp"

log.level = "debug"

[[proxies]]
name = "bt_tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22223
remotePort = 11113

[[proxies]]
name = "ed2k_tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22224
remotePort = 11114

transport.proxyProtocolVersion = "v2"
  1. 运行测试环境
    注意frps要优先运行,否则frpc连不上会自动退出
    在假设为vps的机器上运行./frps -c frps.toml
    在运行bitcomet的机器上运行./frpc -c frpc.toml

【解释】上述环境中,假设frps运行在ip为192.168.1.4的机器上(您需要根据您设备的具体ip修改这个值),则所有发往192.168.1.4的11113端口的tcp连接均会被转发到运行frpc的机器的22223端口上。同理,tcp连接发往运行frps机器的11114端口,连接会被转发到运行frpc的机器的22223端口。其中,frpc在转发连接到22223和22224时,会先行发送proxy protocol v2头(frpc.toml的最后一行做了这个配置,你可以用井号注释掉来开关proxy protocol v2)

在我给您提供的配置文件frpc.toml中,启用了proxy procotol v2,因此当frpc成功连接到本地服务后,会先按照协议内容发送真实ip:port,您可以据此完成测试开发

【注意】一个完整的链路需要同时拥有正代和反代,但proxy procotol v2仅存在于反代链路中,所以未提供正代。实际上以您的技术力应该可以轻松构建出正代链路(最简单的就是用ssh来个socks5

【警告】上述配置中未进行加密和身份验证,请仅在局域网内测试,千万不要在公网上运行没有加密和身份验证的frps!

如果有任何其他问题,无需顾虑、直接向我提出,我非常愿意提供帮助。
祝开发顺利! :slightly_smiling_face:

请问为何需要设正代?发起BT连接的peerA直接连接frps机器,就可以连到frpc机器上的peerB了吧?(peerA、peerB都是彗星客户端)

参考我的文章,正向代理的主要作用是把请求在frp远程服务器上发起,以便提交frp服务器的ip地址给tracker,这样别人才能找到frp的ip地址来连接到本地的比特彗星
本地发起的请求不会经过frp服务器,只接收远程的流量,然后搭配socks5正向代理,把本地发向tracker服务器连接的请求通过正向代理,实现在frp服务器上发起给tracker

别人不知道frp的ip地址,正向代理的用途就是告知tracker服务器,frp的ip和端口,然后frp在把请求转发给peerB就成功了

我文章底部也有说,frp没有提供正向代理,所以要搭配v2之类的其它代理软件,安装在与frp同一个服务器上,他的意思是你在frp服务器上的测试过程可以用ssh来创建一个socks5正向代理,这样才能把frp的ip地址给tracker服务器

需要注意的是,应当使用ip白名单,仅允许填写的ip地址使用proxy protocol v2,大部分非特殊的情况下,frp流量都来自127.0.0.1,但也可能是其他方式建立连接来获取tcp端口(网页在线一键端那种,这种情况本地电脑不需要运行frp客户端,或者是把frp客户端运行在局域网其它设备上),也可能要用CIDR来处理多个frp服务器比较方便点

就开发测试而言,似乎用不着搭建一个正向代理让peerB去连接tracker,因为在peerA上可以手动添加frps的IP和端口,用不着通过tracker获取

文件是图片,名字是(1)、(2)、(3)这样

上面提到 gost 的方案,就是因为它集成了 TUN/TAP 与 Proxy,一个工具就能自我完结。
特别值得注意的是 gost 具备分流,特别是 IPv4 与 IPv6 分流的能力,也就是说可以使用中继服务器穿透 IPv4 端口的同时,不影响本机 IPv6 端口的连通性。
具体实现方法是在客户端上启动 gost 的虚拟隧道的同时,搭建一个简单的本地 Proxy,对于 Tracker 连接,IPv4 走中继服务器,IPv6 走本地网络,就能达到两者都能汇报最优 IP 地址的效果。

关于 GFW,gost 使用转发链的机制,虚拟隧道上可以套任何受支持的通信协议,包括 UDP 转 TCP 以及加密甚至自定义通信。当然用的人多了也会被针对。

至于性能方面,TUN/TAP 驱动与 netfilter 的 NAT 理应比用户空间转发的 frp 效率要高。只是服务端和用户的都需要管理员权限执行。

其实有一点我没有弄明白:正反代架构中,到底哪些流量需要使用正代连接?

比特彗星的正代面板有一堆选项,比如【使用代理连接peer】【使用代理连接通行证】。如果想要让正反代架构正常工作,我需要勾选哪些?

其实正代也是可以单独配置的

比如如果用xray,则可以通过修改配置,单独让v6分流到本地直连,v4分流到服务器

性能方面我没有仔细考究。按照我的理解,本地连接方面性能瓶颈较小,性能瓶颈应该主要集中在服务器向本地转发的部分。

当然没有否定这些优秀的工具的意思。

选择 gost 的原因是一个轻量高效的二进制程序就能完成整个流程,配置会简便很多,推广起来更容易被接受。

对于现有2.12最新版比特彗星,需要勾选的是
使用代理连接Tracker:汇报frp的ip地址给追踪器服务器,以便其它peer连接
使用代理端口转发检测:让比特彗星客户端实现绿灯,可作用于长效种子上传

可选
使用Socks5代理进行DNS解析:在远程服务器中解析域名,防止国内dns污染

性能问题tap和nf wfp确实是极好的,拉满网卡完全不在话下,frp测过极限宽带在200M,也就是大约30MB/s的速度,本地性能就是上面haproxy文章提到的实现proxy procotol v2获取会有一定性能损耗

1個讚

如果不使用代理连接peer,是否会导致去中心化网络中出现非公网地址?

其他peer在dht中会不会传播错误的地址?

推荐这样做的,可以最大程度节省frp服务器宽带和性能消耗
本地发起的peer请求并不需要通过远程服务器,这是没有任何意义的(除非你是想当vpn用,隐藏你本地的真正ip)

1個讚

DHT 的对端看到的是 NAPT 后的公网地址,所以几乎不会传播内网地址出去
极低的可能性是你连上了同一内网的 DHT 节点,但这时候的内网地址也只会在内网中传播

另外补充一点,如果要通过穿透端口提供长效上传,还需要勾选 “使用代理查询长效种子”(不需要勾选 “使用代理连接长效种子”)
跟 Tracker 一样,使用代理查询才会汇报中继服务器的 IP 地址

哦对,2.11版本把这个细分了一下,还要勾上 使用代理查询长效种子

@zhuxiaoying85309
如果不使用代理连接peer,理论上来说对方应该会看到本地运营商提供的、外部不能直连的nat的出口地址,而非代理服务器的公网地址

所以,不使用代理连接peer,会不会导致dht中错误地传播运营商nat的出口地址?(我们预期在dht中传播代理服务器的可以直连的公网地址)

毕竟除了tracker,dht也是一个重要传播路径