在 v2rayN-v7 节点列表 右键菜单 批量计算 证书指纹 pinSHA256

前言 我们已经有了 从客户端查询证书计算pinSHA256的工具 进一步的, 可以在 v2rayN 中调用这个工具 那么, 如果机场提供了多于1条的hy2节点, 需要能批量处理.

在 v2rayN-v7 中 "获取pinSHA256"按钮 调用hysteria2-pinSHA256-tool工具

前言 我们已经实现了一个  hysteria2-pinSHA256-tool 小工具来查询 hysteria2节点自签证书的pinSHA256 现在我们将这个算法合并到 v2rayN 项目

hysteria2-pinSHA256-tool从客户端计算hysteria2节点自签证书的pinSHA256填写到v2rayN-v7的hysteria2节点中

前言 之前, 我们 通过v2ray客户端计算hysteria2节点自签证书的 pinSHA256(base64) 现在xray需要pinSHA256(hex)

Hysteria2服务端自签证书 搭建节点时未获取证书指纹 v2ray客户端测试查询证书指纹 pinSHA256

前言 如果你使用Hysteria2服务端自签证书, 搭建脚本/面板没有提供证书的指纹. 而你担心被中间人攻击, 你希望在客户端指定证书的指纹. 那么, 你可以这么做:

Hysteria2 服务端自签证书 V2ray客户端指定证书指纹 pinSHA256 证书锁定 Certificate Pinning

前言 上一篇我们解决了 Hysteria2 客户端指定证书 现在我们来尝试用 V2ray作为客户端, 指定证书

Hysteria2 服务端自签证书 客户端指定证书指纹 pinSHA256 证书锁定 Certificate Pinning

前言 最近翻墙圈的氛围是研究服务端自签证书时, 客户端最好固定证书以避免中间人攻击.

极简一键脚本 搭Hysteria2梯子 UDP 使用BBR策略

本文是整理博客补一篇. 并没有新的一键脚本发布. 一键执行 bash <(curl -L https://github.com/crazypeace/hy2/raw/main/install.sh) 这个一键脚本超级简单。有效语句 6 行(其中 安装Hysteria2 1 行, 安装Hysteria2服务 2 行, 生成自签证书 3 行) + 配置文件28行(其中你需要修改 4 行), 其它都是用来检验小白输入错误参数或者搭建条件不满足的。 你如果不放心开源的脚本,你可以自己执行那 6 行有效语句,再修改配置文件中的 4 行,也能达到一样的效果。 Github  https://github.com/crazypeace/hy2 前提条件 一个没有被墙的VPS Hysteria2底层是UDP直连,如果你的VPS已经被墙,那肯定用不了。出门左转  https://github.com/crazypeace/v2ray_wss 如果你能确定只是UDP有问题, 想试试TCP, 那么可以尝试 Reality https://github.com/crazypeace/xray-vless-reality

v2rayN-HY2 测试真连接延迟

总功能列表在 这篇分析 里. 我们现在实现第 9 项 Ctrl+R 测速 打开主窗口 .cs 文件的设计器 找到菜单项, 双击,  打开菜单项 "测试真连接延迟" 的响应函数 走读代码, 跳转到 RunRealPing 函数. 继续走读代码, 一路跳转到 V2rayStartNew 函数 我们用 上一篇 一样的方法, 在 p.Start() 上设置断点. 再检查设置的启动参数. 可以看到, 实际上相当于在命令行执行 D:\_work\v2rayN-3.29-VLESS\v2rayN\bin\Debug\v2ray.exe -config stdin: 同样的, 这是 v2ray v4版本的启动语法. 我们要参考 v5 版本的启动语法了. 官方文档 https://www.v2fly.org/guide/start.html#运行 要注意, 测速的启动过程, 并不要指定配置文件. 而是, 先把程序启动起来, 再往 stdin (标准输入流) 输入json格式的配置文本. 而 v2ray v5版本, 要从stdin (标准输入流) 获取json格式的文本, 就要以 不指定配置文件的方式启动, 而且在同目录下不能有 config.json 文件. 所以, 我们把 生成配置文件的文件名, 修改为 不是config.json  比如, runconfig.json 进一步的, 我们使用的是 v4格式的json配置文本, 所以参数还要加上 -format json 最终, 修改启动参数为 run -format json 跑起来测试一下.   记得把以前生成的 config.json 文件删掉哦. 功能正常. ======== 开了一个分支, 本文的修改内容已提交. https://github.com/crazypeace/v2rayN-3.29-VLESS/tree/hy2 如果你有兴趣, 可以看到整个的开发过程. 本次修改记录 https://github.com/crazypeace/v2rayN-3.29-VLESS/commit/3129b5e ======== 如果只是使用 hy2 的话, 应该是可用的状态了. 所以发布了一个 pre release https://github.com...

v2rayN-HY2 导出分享链接至剪贴板 显示分享二维码

总功能列表在 这篇分析 里. 我们现在实现第 8 项 导出分享链接至剪贴板 打开主窗口 .cs 文件的设计器 找到菜单项, 双击,  打开菜单项 "导出分享URL至剪贴板" 的响应函数 走读代码, 一路 F12 跳进去, 直到 GetVmessQRCode 函数. 这里就是生成分享URL的地方. 很明显, 函数名称没有及时更新, 还叫 Vmess  Hy2 分享链接的格式有官方定义. https://v2.hysteria.network/zh/docs/developers/URI-Scheme/ 示例: hysteria2://密码@服务器IP域名:端口?insecure=跳过证书验证#备注 我们照着 VLESS 的逻辑抄一遍. 没有encryption参数, 所以去掉. 继续跳进 GetStdTransport 函数. 这里面是处理 streamSettings 结构中的数据. 我们添加 hy2 的处理. 跑起来测试一下. 能复制出分享URL了. 但是里面多了一些参数. hysteria2://7c6c918f-6e80-3283-9cf0-a8d34e80f86e@104.168.128.251:2053?security=tls&type=hysteria2&insecure=1#HY2-104.168.128.251 security 和 type 参数在 hy2 的官方定义中是不应该出现的. 所以我们改一下, 不要调用 GetStdTransport 函数了, 直接在 GetVmessQRCode 函数中, 把 insecure 参数填充了就算了. 测试一下, 分享的URL正常. 生成的二维码用 Shadowrocket 扫一下, 也能正常使用. ======== 开了一个分支, 本文的修改内容已提交. https://github.com/crazypeace/v2rayN-3.29-VLESS/tree/hy2 如果你有兴趣, 可以看到整个的开发过程. 本次修改记录 https://github.com/crazypeace/v2rayN-3.29-VLESS/commit/16dd2f6

v2rayN-HY2 能正常使用

总功能列表在 这篇分析 里. 我们现在实现第 7 项 能正常使用 首先要在 v2rayN.exe 同目录下放一个支持 hy2 的 v2ray 内核. 写本文时, 最新版本 v5.21.0  https://github.com/v2fly/v2ray-core/releases/tag/v5.21.0 下面, 开始处理代码. 打开主窗口 .cs 文件的设计器 找到菜单项, 双击,  打开菜单项 "设定为活动服务器" 的响应函数 一路走读代码, 遇到函数就 F12 跳进去.  最终看到 V2rayConfigHandler 模块的 GenerateClientConfig 函数. 然后我们需要在 outbound 函数里面 添加 生成 hy2 内容的逻辑. 抄一下原来的 Trojan 的流程框架, 把 hy2 相关的数据处理一下. 从配置文件上看, hy2 的参数, 要写在 streamSettings 里面. 所以我们还要继续修改 boundStreamSettings 函数. 跳进去一看, 对不同的 network, 相应地生成不同的 streamSettings. 也是照着其它的逻辑框架, 实现 hy2 的处理. 为了照样子抄呢, 还要新增一个结构 Hy2Settings 看一下其它的 Settings 定义在哪里, 鼠标点在 QuicSettings 上, F12 跳转到定义. 原来在 V2rayClientConfig 模块里. 我们也照样子抄一个结构. 这个结构是和配置文件的json结构相对应的. 对比观察一下. 进一步的, 在配置文件的json结构中, hy2Settings 是 streamSettings 的子元素. 那么在 C# 的数据结构定义中, 也要给 StreamSettings 类(结构) 添加一个 Hy2Settings 数据成员(子元素). 进一步的, 请你注意到, C# 中数据成员的命名, 要和 json 结构中的 key 名称完全一致. 这是和 C# 中将 数据结构 序列化为 Json 结构的规则有关. 跑起来看看. 报了一堆错. 似乎是启动命令有问题. 继续走读代码, 找到了...

v2rayN-HY2 [插播] network 字段忘处理了

 前面我们在 设置 Hy2 窗口 的时候, 少处理了 "network": "hysteria2", 从 Vmess 窗口复制一个粘过来. 再编辑一下 可选集合 列表. 在 hy2 场景下, 应该只有 hysteria2 可选. 再补充一下 前几篇 处理过的功能. 1. 从剪贴板导入数据到窗口元素. 2. 按下 确定 按钮, 保存节点信息到主窗口.  3. 从主窗口双击节点, 打开窗口显示节点信息. ======== 开了一个分支, 本文的修改内容已提交. https://github.com/crazypeace/v2rayN-3.29-VLESS/tree/hy2 如果你有兴趣, 可以看到整个的开发过程. 本次修改记录 https://github.com/crazypeace/v2rayN-3.29-VLESS/commit/4e2ac78

v2rayN-HY2 粘贴分享链接 将节点信息保存到主窗口

总功能列表在 这篇分析 里. 我们现在实现第 4 项 粘贴分享链接 将节点信息保存到主窗口 打开主窗口 .cs 文件的设计器 找到菜单项, 双击, 打开菜单项的响应函数 一路走读代码,  F12 跳转, 到了 AppConfigHandler 模块的 AddBatchServers 函数 可以看到函数里, 对各种协议都有处理. 那么, 当然的, 我们要把 hy2 的处理加进去. 刚好, 利用到前几篇写好的 AddHysteria2Server 函数 跑起来测试一下, 顺便测试一下 从主窗口双击节点, 打开窗口显示节点信息. 都正常. 进一步的, 测试一下关闭程序后,  v2rayN 软件配置文件 有没有保存节点信息. v2rayN 软件配置文件 文件名 是 guiNConfig.json 位置是和 v2rayN.exe 执行文件在同一目录. 我们用的是 Debug 方式编译的 所以生成的 v2rayN.exe 的位置是在  v2rayN-3.29-VLESS\v2rayN\bin\Debug 如果你搞不清楚, 可以用 everything.exe 全局查找一下. 看起来数据都好好的, 不错啊. 启动程序后, 测试节点信息的加载, 也正常的. 看来, 功能项 5 6 我们什么都没干, 就是正常的了. 5. 保存节点信息到 v2rayN 软件配置文件.  6. 启动程序时, 从 v2rayN 软件配置文件 加载 节点信息. ======== 开了一个分支, 本文的修改内容已提交. https://github.com/crazypeace/v2rayN-3.29-VLESS/tree/hy2 如果你有兴趣, 可以看到整个的开发过程. 本次修改记录 https://github.com/crazypeace/v2rayN-3.29-VLESS/commit/9357ef6

v2rayN-HY2 保存节点信息到主窗口

总功能列表在 这篇分析 里. 我们现在实现第 2 项 保存节点信息到主窗口 打开窗口设计器, 双击 确定 按钮, 打开 点击事件 响应函数 走读代码. 看到这里的 AddShadowsocksServer 函数 调用 我们这里可是 Hy2 的功能啊. 所以要模仿 AddShadowsocksServer 函数, 写一个 AddHysteria2Server 函数. 在 AddShadowsocksServer 上面按 F12 跳转到实现, 于是跳转到了 AppConfigHandler 模块.  把 AddShadowsocksServer 整个复制, 粘贴一份克隆. 再把函数名改为 AddHysteria2Server, 然后把内容稍微修改一下.  前面几篇的修改过程中, 对 hy2 节点的关键信息还有印象吗? 在此函数中都要处理到. 跑起来试试.  不错哦, 好像 第 3 项功能 从主窗口双击节点, 打开窗口显示节点信息 也刚好没问题. ======== 开了一个分支, 本文的修改内容已提交. https://github.com/crazypeace/v2rayN-3.29-VLESS/tree/hy2 如果你有兴趣, 可以看到整个的开发过程. 本次修改记录 https://github.com/crazypeace/v2rayN-3.29-VLESS/commit/31e7acc

v2rayN-HY2 从剪贴板导入数据到窗口元素

在 上一步 , 我们有了一个元素符合要求的窗口, 但是还只是个"样子", 没有实际上的正确的功能. 我梳理了一下, 有这么几个功能流程要实现: 1. 从剪贴板导入数据到窗口元素. 2. 按下 确定 按钮, 保存节点信息到主窗口.  3. 从主窗口双击节点, 打开窗口显示节点信息. 4. Ctrl+V 粘贴分享链接, 将节点信息保存到主程序. 5. 保存节点信息到 v2rayN 软件配置文件.  6. 启动程序时, 从 v2rayN 软件配置文件 加载 节点信息. 7. 能正常使用 8. Ctrl+C 导出分享链接至剪贴板 显示分享二维码 9. Ctrl+R 测速. 我们先来实现 第 1 项 从剪贴板导入数据到窗口元素

v2rayN-HY2 完善 添加Hy2服务器 窗口

在 上一步 , 我们已经添加了一个新的窗口.  跑起来看一下, 和实际需要的参数还是有差别的. 所以, 我们需要对窗口元素作以下调整: 1) 窗口上的"加密方式"元素 原本是 Shadowsocks的, 不符合要求, 删掉. 2) 从 Vmess 窗口 把 TLS 和 allowInsecure 元素复制过来, 调整一下位置. 接下来要做的, 就是在现有的逻辑流程中, 去掉不再使用的 "加密方式"元素 的数据处理, 并加上 TLS 和 allowInsecure 元素 的数据处理. 这些处理可以参考其它协议的窗口, 比如说, Vmess 窗口. 我的具体作法就是, 把 Vmess 窗口的 .cs 文件打开. 在里面搜索 cmbStreamSecurity 和 cmbAllowInsecure 看看是怎么处理的, 在哪个函数里处理的. 然后再把那几行代码搬到 Hy2 窗口的 .cs 文件里. 到目前为止, 我们还什么实质功能都没实现. 慢慢来. ======== 开了一个分支, 本文的修改内容已提交. https://github.com/crazypeace/v2rayN-3.29-VLESS/tree/hy2 如果你有兴趣, 可以看到整个的开发过程. 本次修改记录 https://github.com/crazypeace/v2rayN-3.29-VLESS/commit/bfe7191

v2rayN-HY2 新增 添加Hy2服务器 窗口 在 .net 4.8 工程中复制已有的窗口

Hy2服务端的一键脚本已经有了( v2ray v4 json 和 Hy2 都有了), 但是我用惯了的 v2rayN-3.29 并不支持, 于是就动手添加一下. 首先当然是要新增一个 添加Hy2服务器 的窗口.