{"id":13817751,"url":"https://github.com/chinanf-boy/v2ray-mac-iphone","last_synced_at":"2025-04-02T18:16:03.492Z","repository":{"id":90548579,"uuid":"133608653","full_name":"chinanf-boy/v2ray-mac-iphone","owner":"chinanf-boy","description":"explain: 只说 v2ray 概念✅, 代码什么的好多啊💀","archived":false,"fork":false,"pushed_at":"2018-07-18T12:25:25.000Z","size":4,"stargazers_count":8,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-08T08:47:11.864Z","etag":null,"topics":["explain","v2ray","zh"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chinanf-boy.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-16T04:03:52.000Z","updated_at":"2023-08-26T02:41:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"e86ade43-449a-45e7-9e37-b6be61b63eae","html_url":"https://github.com/chinanf-boy/v2ray-mac-iphone","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinanf-boy%2Fv2ray-mac-iphone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinanf-boy%2Fv2ray-mac-iphone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinanf-boy%2Fv2ray-mac-iphone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chinanf-boy%2Fv2ray-mac-iphone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chinanf-boy","download_url":"https://codeload.github.com/chinanf-boy/v2ray-mac-iphone/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246866100,"owners_count":20846496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["explain","v2ray","zh"],"created_at":"2024-08-04T06:00:54.720Z","updated_at":"2025-04-02T18:16:03.457Z","avatar_url":"https://github.com/chinanf-boy.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# V2ray [![explain](http://llever.com/explain.svg)](https://github.com/chinanf-boy/Source-Explain)\n     \n\n「 说是`代理`, 其实用`通道`来, 更合适 」\n\n这里是 explain 单元, 但只解释, 概念\n\n[github source](https://github.com/v2ray/v2ray-core)\n\n~~[english](./README.en.md)~~\n\n---\n\n## 生活\n\n[help me live , live need money 💰](https://github.com/chinanf-boy/live-need-money)\n\n\n一直以来, 通过科学上网让我对世界更多了份认识, 但手机似乎要收费,\n\nv2ray, 也正如此诞生的, 谢谢🙏\n\n---\n\n### 我是 iphone, 所以我需要一个代理软件, 只要支持 `socks5` 的就行\n\n---\n\n\n为什么我要明确 `通道 `这一说法 ,\n\n长久以来, 我使用 `shadowsoks` 的应用让我惯性的理解 需要 _服务器和客户端_\n\n它的协议, 能 `S \u003c=\u003e C` 沟通起来\n\n\u003e 那么 v2ray\n\n为什么说, 他更像一个通道了, 因为 两个字\n\n### 一进一出\n\n#### 一进 \n\n它需要开了一边 比如 `socks5` 协议 -/- `http` 协议 等等\n\n``` js\n// socks 进\n  \"inbound\" : {\n    \"listen\" : \"0.0.0.0\", //✅ 和 127.0.0.1❌  是否正确只是区别在于 是否给局域网的其他设备访问 \n    \"port\" : 1080, // 端口在设置外面\n    \"protocol\" : \"socks\", // 协议\n    \"settings\" : { // 协议设置\n      \"auth\" : \"noauth\",\n      \"udp\" : true,\n      \"ip\" : \"127.0.0.1\"\n    }\n  },\n```\n\n  请求 -\u003e socks5 -\u003e  `）= 入口-socks === v2ray ======（）堵住的`\n\n\n#### 一出\n\n开了另一边 比如 `shadowsocks` 协议 -/- `vmess` 协议{v2ray安全🔐与复杂性}\n\n``` js\n// shadowsocks 出\n  \"outbound\": {\n    \"protocol\": \"shadowsocks\", // 协议\n    \"settings\":{ // 协议设置\n      \n      // ⚠️ 以下命令 是安全信息, 请保管好自己的信息\n\n      \"servers\": [ // 注意是 server s  是 Array 类型\n      \t{\n          // 身份🆔\n          \"address\": \"192.168.11.103\", // Shadowsocks 的服务器地址\n          \"email\": \"love@v2ray.com\", // 用户名标示\n          \"method\": \"chacha20-ietf\", // Shadowsocks 的加密方式\n          \"password\": \"asdfasdfasdf\", // Shadowsocks 的密码\n          \"ota\": true,\n          \"port\": 5000\n        }\n    ]\n}\n}\n```\n\n`) == 入口-socks ==== V2ray ====== 出口-shadowsocks ==\u003e 有🆔身份的shadowsocks =\u003e 找servers == (`\n\n#### 通道说明\n\n\u003e比作 socks === 🐱 , shadoawsocks === 🐶\n\n\u003e 我们手机-电脑浏览器的`请求`通过 代理软件 就可以 装得像猫\n\n#### 1. 请求 -\u003e socks5 -\u003e 🐱 ==\u003e  \n\n\u003e 用户端 -\u003e 匹配通道入口协议\n\n#### 2. `) == 入口-socks ==== V2ray ====== 出口-shadowsocks ==\u003e 🐶 =\u003e 找servers == (`\n\n\u003e 进入通道后\n\n好了, 我们的 🐱 , 进来通道后发现, 出口限制🚫说: 只有 🐶 能通过?\n\n这个时候, `V2ray-{化妆师}出场了`, ta/居然能把 __🐱变🐶__ , _我的天啊_\n\n#### 3. 🐱 变 🐶 , 化妆就是这样化腐朽为神奇\n\n#### 4. 找 servers\n\n\u003e 好了, `V2ray`, 会领着你到下一个 `舞台-通道`\n\n\n---\n\n### 第一通道\n\n就这样, 🐱变成🐶, 进入下一个舞台\n\n### 第一通道-通道图\n\n`) == 入口-socks ==== V2ray ====== 出口-shadowsocks ==\u003e 🐶 =\u003e 找servers == (\n\n\u003cdetails\u003e\n\n\u003csummary\u003e完整config.json\u003c/summary\u003e\n\n``` js\n// \n{\n// socks 进\n  \"inbound\" : {\n    \"listen\" : \"0.0.0.0\", //✅ 和 127.0.0.1❌  是否正确只是区别在于 是否给局域网的其他设备访问 \n    \"port\" : 1080, // 端口在设置外面\n    \"protocol\" : \"socks\", // 协议\n    \"settings\" : { // 协议设置\n      \"auth\" : \"noauth\",\n      \"udp\" : true,\n      \"ip\" : \"127.0.0.1\"\n    }\n  },\n  // shadowsocks 出\n  \"outbound\": {\n    \"protocol\": \"shadowsocks\", // 协议\n    \"settings\":{ // 协议设置\n      \n      // ⚠️ 以下命令 是安全信息, 请保管好自己的信息\n\n      \"servers\": [ // 注意是 server s  是 Array 类型\n      \t{\n          \"address\": \"192.168.11.103\", // Shadowsocks 的服务器地址\n          \"email\": \"love@v2ray.com\", // 用户名标示\n          \"method\": \"chacha20-ietf\", // Shadowsocks 的加密方式\n          \"password\": \"asdfasdfasdf\", // Shadowsocks 的密码\n          \"ota\": true,\n          \"port\": 5000\n        }\n    ]\n  }\n  }\n}\n```\n\n\u003c/details\u003e\n\n---\n\n### 第二通道\n\n我来布置第二个通道吧\n\n上文说到 , __🐱 进入 [第一通道](#第一通道) 后被 `V2ray-化妆师` 变 🐶, 进入了限制 只许🐶出的__, [第二通道](#第二通道)\n\n那么一上来, 我们的狗就迎来了挑战\n\n#### 第二通道-入口\n\n\u003e V2ray === 化妆师\n\n``` js\n// 第二通道-入口\n  \"inbound\": {\n    \"port\": 5000, // 对口, 不然路都找不到\n    \"protocol\": \"shadowsocks\", // 要是🐶\n    \"settings\": {\n      // 身份身份\n      \"email\": \"love@v2ray.com\",\n      \"method\": \"chacha20-ietf\",\n      \"ota\": true,\n      \"password\": \"asdfasdfasdf\"\n    }\n  },\n```\n1. 只需 🐶, 噢不, 只许有身份的🐶, 进入\n\n身份？[==》》那是我们在上一个通道的事情啦](#一出)\n\n``` js\n// 上一通道-出口\n  \"outbound\": {\n    \"protocol\": \"shadowsocks\", // 协议\n    \"settings\":{ // 协议设置\n      \"servers\": [ \n      \t{\n          // 👇👇👇👇👇👇👇👇👇\n          \"address\": \"192.168.11.103\", // Shadowsocks 的服务器地址\n          \"email\": \"love@v2ray.com\", // 用户名标示\n          \"method\": \"chacha20-ietf\", // Shadowsocks 的加密方式\n          \"password\": \"asdfasdfasdf\", // Shadowsocks 的密码\n          \"ota\": true,\n          \"port\": 5000\n        }\n    ]\n}\n}\n```\n\n我们的 `化妆师`, 除了 把 `__🐱变成🐶__`, 还给了我们身份, 太感动了, 一只有身份的🐶\n\n好了我们交上 `爪`上的身份信息, 进入到了 第二通道里面\n\n2. `) == 入口-身份-shadowsocks ==== V2ray ===()`\n\n#### 第二通道-出口\n\n``` js\n// 第二通道-出口\n  \"outbound\": {\n      \"protocol\" : \"freedom\",\n      \"tag\" : \"direct\",\n      \"settings\" : {\n      }\n  }\n```\n\n这个时候, 我们其实有很多选择, 可以是象征 `自由的freedom` `严谨的vmess`, `再变🐱的socks`\n\n而`freedom`，顾名思义 自由请求, 是最终解\n\n\u003e 其他的协议, 自然需要另一个通道的入口配置\n\n\u003e ⚠️ 自由之后, 还要回来的, 我们的用户要`接受请求的数据`, 也就是说 `🐶需要重新变成🐱,在第一通道`？\n\n那么`freedom`出口, 你以为 化妆师 不用工作, 🐶 要变回 请求, 才能被外界认识\n\n#### 第二通道-通道图\n\n`) == 入口-身份-🐶 ==== V2ray ==== 出口-freedom ==\u003e 🐶-\u003e请求 =\u003e * == (`\n\n\n\n因为两次 V2ray 的 作用, 所以我称之为 通道, 只要一进一出互通的, 就能一直下去\n\n---\n\n## 总结\n\n理解`通道`, 比理解 `S/C` 可能更贴切一点\n\n\u003e v2ray-mac-iphone 名字 随便写的, 可能是我用 mac客户端d代理我的iphone 的灵感\n\n有用的东西\n\n1. https://github.com/wangyi2005/v2ray-heroku\n\n\u003e `heroku` 上的 v2ray 通道\n\n\u003e 入口-`vmess`， 出口-`freedom`\n\n2. 你需要一个客户端\n\nhttps://www.v2ray.com/ui_client/\n\n3. 既然 1 中 `入-vmess, 出-freedom`\n\n但是, 我们手机上的 `免费代理{非中华地区}` 只能 `socks/shadowsocks/http` - \n\n那么我们, 再在 heroku 上 一个 入口 `socks` - 出口 - `vmess`\n\n接入 1 中, 经过两通道, 手机自然能连\n\n\u003e `socks/shadowsocks` 不知道会不会被`heroku`禁用\n\n\u003e 这也是为什么 入口用 `严谨的vmess` , 化得太多数人都不认识, 自然通行\n\n### 通道 通道 通道\n\n- https://www.v2ray.com\n\n- https://github.com/v2ray\n\n---\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchinanf-boy%2Fv2ray-mac-iphone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchinanf-boy%2Fv2ray-mac-iphone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchinanf-boy%2Fv2ray-mac-iphone/lists"}