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

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

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

前言 上一篇我们摸索清楚了 V2ray的客户端配置文件应该怎么写 现在我们在v2rayN的客户端中实现. * 啊, 上一次改动 v2rayN-3.29-VLESS 还是 去年...

v2rayN-3.29-VLESS 生成配置文件 Xray 多 Socks 代理 一对一 节点

上一篇 已经可以生成多个本地 http 代理了. 其实, 用于指纹浏览器是可以的, 指纹浏览器是支持 http 代理的. 这个 http 代理默认只开在你本机电脑上, 就算你把 listen 127.0.0.1 注释了, 也只开在你的局域网上. 从你的指纹浏览器到代理端口, 数据只走在你自己电脑内部, 或者你公司的局域网内部, 没有数据安全性问题, 不过墙. 如果你实在是要开 Socks 代理, 也很简单, 配置文件查找替换一下就行了.

v2rayN-3.29-VLESS v3.29.0.14 新年快乐

小改进项: 克隆服务器后选中 修改文字"清除所选测试结果" 如果 vmess 协议, 使用 v2ray (因为xray只支持 AEAD 之后的vmess, 不支持 "古典" vmess) 新建节点, 编辑节点后, 列表显示操作过的节点 打包内核 V2Ray v5.21.0 Xray v1.8.24 不知道有多少人在用我这个 v3.29 修改版. 欢迎使用者来给Github 这条发布信息 点个表情. 新的一年了, 把没有发布的一些小修改项, 打个包发布一下. 大家新年快乐! Xray项目里的XHTTP我在关注, 但是我觉得目前还处在一个变化过程中. 什么时候你看到我出了XHTTP的一键脚本了, 那么本项目对XHTTP的支持就提上日程了. ======== update 在  v2rayN-HY2 测试真连接延迟 这个修改中 引入 一个特殊限制 v2ray内核.zip 中是自带 config.json 文件的. 如果在添加内核的时候, 把这个 config.json 放到 v2rayN 目录下了的话. 在测速的时候, 会自动调用这个 config.json, 测速会失败.

v2rayN-3.29-VLESS 订阅增加 是否Base64解码 选项 .net 4.8 WebClient下载中文乱码

虽然v2rayN提供了导出base64编码后的订阅内容的功能. 但是不方便管理订阅内容, 特别增减个别节点的这种微调. 所以我们自己弄订阅方式干脆就纯文本保存, 不要搞Base64编解码了. 说干就干. 先在添加订阅的地方加个 "是否Base64解码" 的checkbox 订阅的数据结构要加个字段 来保存这个设置项. 订阅管理的窗口 SubSettingForm , 打开窗口设计器, 双击保存按钮, 再一路走读代码. 发现没对订阅项中的字段做什么处理, 直接就把订阅项的数据结构序列化为json文本保存到 v2rayN配置文件中去了. 那么就是说, 当 订阅管理的窗口 SubSettingForm 关闭的时候, v2rayN配置数据结构  中 订阅项 的数据已经被更新了. 插一句, 传统的窗口设计是, 在窗口 确认关闭之前, 窗口元素上的所有数据和变化都只停留在窗口上, 就像是一张草稿纸. 如果窗口取消了,那么程序本身的数据一点都不会改变. 如果窗口确认了, 才会用窗口元素的数据来改变程序. 找了一个订阅项的界面元素 chkEnabled. 在代码里全项目 Ctrl+Shift+F 搜一下. 找到这个结果. 可以看到, 当备注文本框的焦点离开时, 会把 界面上的订阅项数据 保存到程序的配置数据中. 继续想一想, 订阅项的界面元素并不是只有备注文本框啊. 而且, 话说回来, 备注文本框算是最不重要的数据了吧. 继续全项目搜索这个 txtRemarks_Leave 函数. 发现在 订阅url文本框 的离开焦点事件注册了这个函数, 在 是否启用订阅项的那个框框checkbox 的离开焦点事件 也注册了这个函数. 那么我们的修改就很明白了, 把 是否Base64解码checkbox 的焦点离开事件也注册这个函数就行了. (当然了, 我以前加的  AllowInsecure 焦点离开事件也要注册这个函数. 算是以前没做到位的, 现在来擦屁股了) 窗口设计器, 选中界面元素 Base64解码checkbox, 属性窗口 - 事件 - 焦点 - Leave,  下拉列表中 选择 txtRemarks_Leave  注册. 前面这么一大段大费周章, 是为了把这个 是否Base64解码 的设定值 能...

v2rayN-3.29-VLESS 菜单项中文资源修改 .net 4.8项目多语言资源

最方便在VS中的操作如下: 打开窗口设计器 选中窗口, 在属性表中 找到 Language, 下拉菜单中选择 语言. 对于 v2rayN 3.29 项目来说, 选择 "中文(简体)" 然后再找到菜单项进行修改, 改的就是中文资源属性了. 实际上中文(简体)资源 是保存在 .zh-Hans.resx 文件中. 你把这个文件用纯文本的方式打开就能看到. 从另一方面来说, 如果我选中窗口后的 Language 属性不是调整为 中文(简体), 那么会是不同的后缀的资源文件. 比如, 如果我选择的是 中文(简体, 中国)  那么资源文件后缀是 .zh-CN.resx 进一步的, 在不同的资源文件中, 是可以定义界面元素有不同的尺寸和位置的. 原因是, 不同的语言的文字, 写出来的长度是不一样的, 有可能需要不同大小的界面元素.  而且, 有些语言是从右往左写的. 那么, 你原本设计的界面元素的左右关系有可能暗示了先后或主次的顺序. 在这样的语言下, 界面元素的位置也应该重新安排.

v2rayN-3.29-VLESS 按键UTDB连续移动节点顺序

原来的v2rayN用按键来移动节点顺序, 每次只能移一下. 比如, U键是用于上移一格. 按U键后, 节点列表项会失去焦点, 于是你再按U键就无效了. 修改内容如下: 在 主窗口 MainForm 的 MoveServer 函数中,  让真正干活的 (AppConfigHandler 模块中 MoveServer 函数) 返回 (移动后的节点项 在序列中的位置) 然后再让这个列表项 .Selected = true 被选中. 当然 AppConfigHandler 模块中 MoveServer 函数 内部实现也有一些小修改. 在函数的最后, 向调用者返回这个index. 修改记录 https://github.com/crazypeace/v2rayN-3.29-VLESS/commit/acc87e1 主程序补丁文件 https://github.com/crazypeace/v2rayN-3.29-VLESS/releases/download/v3.29.0.12/v2rayN-VLESS-v3.29.0.12-UDTB.zip

v2rayN-3.29-VLESS 生成配置文件 Xray链式代理 多http代理inbound 多落地节点outbound 一对一 隧道节点方便切换

之前 做了一个Xray 加载多个 链式代理 配置文件 多inbound 多outbound 一对一方案 , 要一个一个导出客户端配置文件, 还要修改 inbound 和 outbound 的 tag. 最终把多个配置文件放在同一个目录, 启动xray内核, 会合并所有配置文件的 inbound 和 outbound, 以及路由规则, 这样保证 inbound 和 outbound 一一对应. 整个过程还是有点麻烦的.

v2rayN-3.29-VLESS 支持 Reality 协议与 Hysteria2 协议节点并存

需求 v2ranN-VLESS 支持了 reality, 基于 xray 内核 v2ranN-HY2 支持了 hy2, 基于 v2ray 内核 reality和hy2都好用, 都需要.  我是在VPS上同时部署了多个协议的(只要用不同的端口, 不冲突就可以了).  在客户端, 我可不想为了换个协议用用, 就要关个软件再开个软件. 那么, 就要在 v2rayn.exe 的目录下同时放 xray.exe 和 v2ray.exe 然后要根据不同的协议来调用不同的内核.

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 结构的规则有关. 跑起来看看. 报了一堆错. 似乎是启动命令有问题. 继续走读代码, 找到了...