Projects STRLCPY SeaMoon Commits 7ac535fb
🤬
  • deploy: 276978a891c2f692371a3dddac60426fcf95e60e

  • Loading...
  • DVKunion committed 4 months ago
    7ac535fb
    1 parent bd275227
  • ■ ■ ■ ■ ■ ■
    404.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/4.cd3de622.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/2.1d6ed513.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/4.cd3de622.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/2.1d6ed513.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    27  - <div id="app" data-server-rendered="true"><div class="theme-container" data-v-439bb2a8><div class="theme-vdoing-content" data-v-439bb2a8><span data-v-439bb2a8>404</span> <blockquote data-v-439bb2a8></blockquote> <a href="/" class="router-link-active" data-v-439bb2a8>返回首页</a></div></div><div class="global-ui"></div></div>
    28  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/4.cd3de622.js" defer></script>
     27 + <div id="app" data-server-rendered="true"><div class="theme-container" data-v-439bb2a8><div class="theme-vdoing-content" data-v-439bb2a8><span data-v-439bb2a8>404</span> <blockquote data-v-439bb2a8>~</blockquote> <a href="/" class="router-link-active" data-v-439bb2a8>返回首页</a></div></div><div class="global-ui"></div></div>
     28 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/4.cd3de622.js" defer></script>
    29 29   </body>
    30 30  </html>
    31 31   
  • assets/js/10.a4a9751e.js assets/js/10.70dc4e3c.js
    Unable to diff as some line is too long.
  • ■ ■ ■ ■
    assets/js/11.6c1daafb.js assets/js/11.40c5b22c.js
    1  -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{320:function(s,t,a){"use strict";a.r(t);var e=a(7),n=Object(e.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h2",{attrs:{id:"叹息的腾讯云"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#叹息的腾讯云"}},[s._v("#")]),s._v(" 叹息的腾讯云")]),s._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[s._v("注意")]),s._v(" "),t("p",[s._v("由于腾讯云 grpc 也没调研,加上拉胯不推荐使用,所以此处的文档依旧为 v1.1.3 版本,非最新版本文档。\n如果要使用最新版本,请看上两篇的部署方式。")])]),s._v(" "),t("p",[s._v("先说结论,个人不建议腾讯云部署,原因众多:")]),s._v(" "),t("ul",[t("li",[s._v("腾讯云go代码部署仅支持代码上传,这种过时的部署方式完全不符合devops的生态。")]),s._v(" "),t("li",[s._v("如此必须依赖自定义镜像部署,腾讯云又不支持公网镜像部署,还需要手动将镜像推送至个人腾讯云仓库(虽然个人版免费)")]),s._v(" "),t("li",[s._v("最最最最最重要的一点:腾讯云SFC不免费了,没有了免费调度的礼包,必须得买套餐,不买套餐TMD血贵,只是测了个速花了我4毛钱!")])]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/e2929ffbf39a4e9f92539ecd79db1f8e.png",alt:"tencent-billing"}})]),s._v(" "),t("p",[s._v("因此使用腾讯云的用户请先考虑下钱包,虽然最低配置的流量包9.9一个月。")]),s._v(" "),t("h2",{attrs:{id:"如何部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#如何部署"}},[s._v("#")]),s._v(" 如何部署")]),s._v(" "),t("p",[s._v("步骤很多,一步一步操作吧。。。大概对比一下就知道为什么不推荐腾讯云部署了。")]),s._v(" "),t("h3",{attrs:{id:"step-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[s._v("#")]),s._v(" Step.1")]),s._v(" "),t("p",[s._v("结论也提到了,腾讯云不支持go代码级别部署,所以我们为了方便,只能通过自定义镜像部署模式,函数类型选择web类型:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/2cedc6b7287f414f927a483049d59a19.png",alt:"tencent-app"}})]),s._v(" "),t("p",[s._v("在填写部署参数之前,需要先手动来上传server镜像到个人仓库(个人镜像仓库10个以内免费)")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/31501cea0bf740c1bf061218581c92f2.png",alt:"tencent-images"}})]),s._v(" "),t("p",[s._v("点击选择镜像,将会跳转至个人镜像仓库:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/8b6bf3ff3c4849cfa0bdc3ab9a1e3d44.png",alt:"tencent-registry"}})]),s._v(" "),t("p",[s._v("创建个人镜像仓库,先要创建命名空间,这个随便起个名字就好。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/46f890741dcf4fefbd1091859caa3a2c.png",alt:"tencent-registry-create"}})]),s._v(" "),t("p",[s._v("然后需要创建镜像仓库,镜像仓库的名称必须为:"),t("code",[s._v("seamoon-server")])]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/bf8e425ba0144ae3b357c73b97545905.png",alt:"tencent-registry-images"}})]),s._v(" "),t("p",[s._v("然后点击快捷操作,会出现命令提示:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/24166d0e0d854435ae66153fa88e2252.png",alt:"tencent-registry-login"}})]),s._v(" "),t("p",[s._v("复杂的步骤来了。现在需要找一台i386/amd64架构、且有docker的电脑......如果不懂如何查看电脑架构/不知道如何安装docker,建议还是放弃腾讯云。")]),s._v(" "),t("p",[s._v("执行以下命令")]),s._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 拉取dockerhub 服务镜像")]),s._v("\n$ "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker")]),s._v(" pull dvkunion/seamoon-server:latest\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 重新tag镜像")]),s._v("\n$ "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker")]),s._v(" tag dvkunion/seamoon-server:latest "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/seamoon-server:latest\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 登陆腾讯云")]),s._v("\n$ "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker")]),s._v(" login "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("--username")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图提供的用户名"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 推送镜像")]),s._v("\n$ "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker")]),s._v(" push "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/seamoon-server:latest\n")])])]),t("p",[s._v("还需要注意,登录时是需要填写登录密码的,如果是在不知道这个密码在哪里,建议重置一下;重置密码的位置也隐秘的感人:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/efefb1d95a5a48929186b41b9da1af0d.png",alt:"tencent-registry-passwd"}})]),s._v(" "),t("p",[s._v("至此,第一步已完成。")]),s._v(" "),t("h3",{attrs:{id:"step-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[s._v("#")]),s._v(" Step.2")]),s._v(" "),t("p",[s._v("回到函数创建的页面,我们继续来创建函数。")]),s._v(" "),t("p",[s._v("现在选择部署镜像的位置已经有了,选择刚推送的seamoon-server镜像,开始填写配置吧:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/ff6e2d4d1e904798a8f6a5102e861318.png",alt:"tencent-app-setting"}})]),s._v(" "),t("p",[s._v("基础配置中,函数类型必须选择web函数。名称建议填写seamoon比较容易识别,地域按照你自己的需求选择即可。")]),s._v(" "),t("p",[s._v("函数代码选完我们上传的镜像,不需要改动。")]),s._v(" "),t("p",[s._v("日志要花钱的,钱多就开。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/9e606f6b3a06428dbbaeda4ff51000ef.png",alt:"tencent-app-custom"}})]),s._v(" "),t("p",[s._v("高级配置中主要是环境配置:函数内存给个最低的64就够,初始化时间按照建议给90s,超时时间给600 10分钟足够。")]),s._v(" "),t("p",[s._v("重要的是环境变量的配置,如果是socks5代理这个值填写socks5; 如果你想要http代理,这里填写http。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/c846ef2987a845b09f8bfd07aa800d6a.png",alt:"tencent-socks5"}})]),s._v(" "),t("p",[s._v("往下滑,记得开启公网IP,并且不要绑定IP, 如果想要固定 IP 的再勾选绑定IP。来到协议配置,开启websocket,超时时间设置60,其他的都可以默认不动。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/1f4dcff644dd4a0f836d6a62f1633295.png",alt:"tencent-ip"}})]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/f140dcd5a43f41bfb3bef8f7db540dc0.png",alt:"tencent-ws"}})]),s._v(" "),t("p",[s._v("触发器也默认不动即可。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/ae6824b540414859ad634f35332f9c79.png",alt:"tencent-creator"}})]),s._v(" "),t("p",[s._v("点击部署,终于,服务部署完成。")]),s._v(" "),t("h3",{attrs:{id:"step-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[s._v("#")]),s._v(" Step.3")]),s._v(" "),t("p",[s._v("部署完成后,几秒后自动跳转到函数页面,点击触发管理,可以看到函数地址,将此地址直接复制到客户端配置即可。")]),s._v(" "),t("h2",{attrs:{id:"效果展示"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#效果展示"}},[s._v("#")]),s._v(" 效果展示")]),s._v(" "),t("p",[s._v("勉勉强强及格吧,大概10MB下行带宽的样子。")]),s._v(" "),t("p",[s._v("而且初次启动的冷启动速度相比其他家腾讯云是有明显感受上的启动时间的;IP池也逐步下滑了(benchtest大概在17-30个左右)。")]),s._v(" "),t("p",[s._v("而且从服务群来看,感觉腾讯云已经摆烂了,这玩意就这样了你爱用不用吧......哎。")])])}),[],!1,null,null,null);t.default=n.exports}}]);
     1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{322:function(s,t,a){"use strict";a.r(t);var e=a(7),n=Object(e.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h2",{attrs:{id:"叹息的腾讯云"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#叹息的腾讯云"}},[s._v("#")]),s._v(" 叹息的腾讯云")]),s._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[s._v("注意")]),s._v(" "),t("p",[s._v("由于腾讯云 grpc 也没调研,加上拉胯不推荐使用,所以此处的文档依旧为 v1.1.3 版本,非最新版本文档。\n如果要使用最新版本,请看上两篇的部署方式。")])]),s._v(" "),t("p",[s._v("先说结论,个人不建议腾讯云部署,原因众多:")]),s._v(" "),t("ul",[t("li",[s._v("腾讯云go代码部署仅支持代码上传,这种过时的部署方式完全不符合devops的生态。")]),s._v(" "),t("li",[s._v("如此必须依赖自定义镜像部署,腾讯云又不支持公网镜像部署,还需要手动将镜像推送至个人腾讯云仓库(虽然个人版免费)")]),s._v(" "),t("li",[s._v("最最最最最重要的一点:腾讯云SFC不免费了,没有了免费调度的礼包,必须得买套餐,不买套餐TMD血贵,只是测了个速花了我4毛钱!")])]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/e2929ffbf39a4e9f92539ecd79db1f8e.png",alt:"tencent-billing"}})]),s._v(" "),t("p",[s._v("因此使用腾讯云的用户请先考虑下钱包,虽然最低配置的流量包9.9一个月。")]),s._v(" "),t("h2",{attrs:{id:"如何部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#如何部署"}},[s._v("#")]),s._v(" 如何部署")]),s._v(" "),t("p",[s._v("步骤很多,一步一步操作吧。。。大概对比一下就知道为什么不推荐腾讯云部署了。")]),s._v(" "),t("h3",{attrs:{id:"step-1"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[s._v("#")]),s._v(" Step.1")]),s._v(" "),t("p",[s._v("结论也提到了,腾讯云不支持go代码级别部署,所以我们为了方便,只能通过自定义镜像部署模式,函数类型选择web类型:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/2cedc6b7287f414f927a483049d59a19.png",alt:"tencent-app"}})]),s._v(" "),t("p",[s._v("在填写部署参数之前,需要先手动来上传server镜像到个人仓库(个人镜像仓库10个以内免费)")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/31501cea0bf740c1bf061218581c92f2.png",alt:"tencent-images"}})]),s._v(" "),t("p",[s._v("点击选择镜像,将会跳转至个人镜像仓库:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/8b6bf3ff3c4849cfa0bdc3ab9a1e3d44.png",alt:"tencent-registry"}})]),s._v(" "),t("p",[s._v("创建个人镜像仓库,先要创建命名空间,这个随便起个名字就好。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/46f890741dcf4fefbd1091859caa3a2c.png",alt:"tencent-registry-create"}})]),s._v(" "),t("p",[s._v("然后需要创建镜像仓库,镜像仓库的名称必须为:"),t("code",[s._v("seamoon-server")])]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/bf8e425ba0144ae3b357c73b97545905.png",alt:"tencent-registry-images"}})]),s._v(" "),t("p",[s._v("然后点击快捷操作,会出现命令提示:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/24166d0e0d854435ae66153fa88e2252.png",alt:"tencent-registry-login"}})]),s._v(" "),t("p",[s._v("复杂的步骤来了。现在需要找一台i386/amd64架构、且有docker的电脑......如果不懂如何查看电脑架构/不知道如何安装docker,建议还是放弃腾讯云。")]),s._v(" "),t("p",[s._v("执行以下命令")]),s._v(" "),t("div",{staticClass:"language-shell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 拉取dockerhub 服务镜像")]),s._v("\n$ "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker")]),s._v(" pull dvkunion/seamoon-server:latest\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 重新tag镜像")]),s._v("\n$ "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker")]),s._v(" tag dvkunion/seamoon-server:latest "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/seamoon-server:latest\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 登陆腾讯云")]),s._v("\n$ "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker")]),s._v(" login "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("--username")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图提供的用户名"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 推送镜像")]),s._v("\n$ "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("docker")]),s._v(" push "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v("上图命令的地址"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v("/seamoon-server:latest\n")])])]),t("p",[s._v("还需要注意,登录时是需要填写登录密码的,如果是在不知道这个密码在哪里,建议重置一下;重置密码的位置也隐秘的感人:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/efefb1d95a5a48929186b41b9da1af0d.png",alt:"tencent-registry-passwd"}})]),s._v(" "),t("p",[s._v("至此,第一步已完成。")]),s._v(" "),t("h3",{attrs:{id:"step-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[s._v("#")]),s._v(" Step.2")]),s._v(" "),t("p",[s._v("回到函数创建的页面,我们继续来创建函数。")]),s._v(" "),t("p",[s._v("现在选择部署镜像的位置已经有了,选择刚推送的seamoon-server镜像,开始填写配置吧:")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/ff6e2d4d1e904798a8f6a5102e861318.png",alt:"tencent-app-setting"}})]),s._v(" "),t("p",[s._v("基础配置中,函数类型必须选择web函数。名称建议填写seamoon比较容易识别,地域按照你自己的需求选择即可。")]),s._v(" "),t("p",[s._v("函数代码选完我们上传的镜像,不需要改动。")]),s._v(" "),t("p",[s._v("日志要花钱的,钱多就开。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/9e606f6b3a06428dbbaeda4ff51000ef.png",alt:"tencent-app-custom"}})]),s._v(" "),t("p",[s._v("高级配置中主要是环境配置:函数内存给个最低的64就够,初始化时间按照建议给90s,超时时间给600 10分钟足够。")]),s._v(" "),t("p",[s._v("重要的是环境变量的配置,如果是socks5代理这个值填写socks5; 如果你想要http代理,这里填写http。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/c846ef2987a845b09f8bfd07aa800d6a.png",alt:"tencent-socks5"}})]),s._v(" "),t("p",[s._v("往下滑,记得开启公网IP,并且不要绑定IP, 如果想要固定 IP 的再勾选绑定IP。来到协议配置,开启websocket,超时时间设置60,其他的都可以默认不动。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/1f4dcff644dd4a0f836d6a62f1633295.png",alt:"tencent-ip"}})]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/f140dcd5a43f41bfb3bef8f7db540dc0.png",alt:"tencent-ws"}})]),s._v(" "),t("p",[s._v("触发器也默认不动即可。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/ae6824b540414859ad634f35332f9c79.png",alt:"tencent-creator"}})]),s._v(" "),t("p",[s._v("点击部署,终于,服务部署完成。")]),s._v(" "),t("h3",{attrs:{id:"step-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[s._v("#")]),s._v(" Step.3")]),s._v(" "),t("p",[s._v("部署完成后,几秒后自动跳转到函数页面,点击触发管理,可以看到函数地址,将此地址直接复制到客户端配置即可。")]),s._v(" "),t("h2",{attrs:{id:"效果展示"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#效果展示"}},[s._v("#")]),s._v(" 效果展示")]),s._v(" "),t("p",[s._v("勉勉强强及格吧,大概10MB下行带宽的样子。")]),s._v(" "),t("p",[s._v("而且初次启动的冷启动速度相比其他家腾讯云是有明显感受上的启动时间的;IP池也逐步下滑了(benchtest大概在17-30个左右)。")]),s._v(" "),t("p",[s._v("而且从服务群来看,感觉腾讯云已经摆烂了,这玩意就这样了你爱用不用吧......哎。")])])}),[],!1,null,null,null);t.default=n.exports}}]);
  • ■ ■ ■ ■
    assets/js/15.1d5d06a9.js assets/js/15.b23212dc.js
    1  -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{326:function(t,s,a){"use strict";a.r(s);var e=a(7),o=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"binary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#binary"}},[t._v("#")]),t._v(" Binary")]),t._v(" "),s("h2",{attrs:{id:"客户端下载"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#客户端下载"}},[t._v("#")]),t._v(" 客户端下载")]),t._v(" "),s("p",[t._v("在 "),s("a",{attrs:{href:"https://github.com/DVKunion/SeaMoon/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Release"),s("OutboundLink")],1),t._v(" 界面。在最新版本列表哪,选择您对应系统型号的client 包下载。")]),t._v(" "),s("p",[s("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/955161ed6d3c48b181397bed1bcaca45.png",alt:"release"}})]),t._v(" "),s("h2",{attrs:{id:"客户端配置"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#客户端配置"}},[t._v("#")]),t._v(" 客户端配置")]),t._v(" "),s("blockquote",[s("p",[t._v("1.1.0 之前的客户端是cli的模式,已经废弃,不再支持,请使用最新版本客户端。")])]),t._v(" "),s("p",[s("code",[t._v("./seamoon proxy")])]),t._v(" "),s("p",[t._v("启动客户端,会占用7777端口。")]),t._v(" "),s("p",[t._v("然后所有操作在 localhost:7777 进行操作即可:")]),t._v(" "),s("p",[s("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/0dd37f5600364e59a9457e38eaf77b1f.png",alt:"client"}})]),t._v(" "),s("p",[t._v("点击配置管理, 添加云端配置, 然后按照你的需求,选在开启本地的http代理/socks5代理")]),t._v(" "),s("p",[s("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/66b1b150238e400483adf936649b7ed5.png",alt:"client-config"}})]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("如何填写地址")]),t._v(" "),s("p",[t._v("将协议头 https:// 替换为对应的隧道协议,如: ws:// 或是 grcp:// 。默认两种协议的隧道是都部署了的。")]),t._v(" "),s("p",[t._v("grpc 按照阿里云的要求,还需要自行声明端口,由此,一个 grpc 隧道的填写应该是这样: grpc://grpc-node-seamoon-service-xxxxxxxx.cn-hongkong.fcapp.run:8089")]),t._v(" "),s("p",[t._v("8089 是阿里云的固定 grpc 协议端口,不需要改动。")])])])}),[],!1,null,null,null);s.default=o.exports}}]);
     1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{327:function(t,s,a){"use strict";a.r(s);var e=a(7),o=Object(e.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h2",{attrs:{id:"binary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#binary"}},[t._v("#")]),t._v(" Binary")]),t._v(" "),s("h2",{attrs:{id:"客户端下载"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#客户端下载"}},[t._v("#")]),t._v(" 客户端下载")]),t._v(" "),s("p",[t._v("在 "),s("a",{attrs:{href:"https://github.com/DVKunion/SeaMoon/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("Github Release"),s("OutboundLink")],1),t._v(" 界面。在最新版本列表哪,选择您对应系统型号的client 包下载。")]),t._v(" "),s("p",[s("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/955161ed6d3c48b181397bed1bcaca45.png",alt:"release"}})]),t._v(" "),s("h2",{attrs:{id:"客户端配置"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#客户端配置"}},[t._v("#")]),t._v(" 客户端配置")]),t._v(" "),s("blockquote",[s("p",[t._v("1.1.0 之前的客户端是cli的模式,已经废弃,不再支持,请使用最新版本客户端。")])]),t._v(" "),s("p",[s("code",[t._v("./seamoon proxy")])]),t._v(" "),s("p",[t._v("启动客户端,会占用7777端口。")]),t._v(" "),s("p",[t._v("然后所有操作在 localhost:7777 进行操作即可:")]),t._v(" "),s("p",[s("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/0dd37f5600364e59a9457e38eaf77b1f.png",alt:"client"}})]),t._v(" "),s("p",[t._v("点击配置管理, 添加云端配置, 然后按照你的需求,选在开启本地的http代理/socks5代理")]),t._v(" "),s("p",[s("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/66b1b150238e400483adf936649b7ed5.png",alt:"client-config"}})]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("如何填写地址")]),t._v(" "),s("p",[t._v("将协议头 https:// 替换为对应的隧道协议,如: ws:// 或是 grcp:// 。默认两种协议的隧道是都部署了的。")]),t._v(" "),s("p",[t._v("grpc 按照阿里云的要求,还需要自行声明端口,由此,一个 grpc 隧道的填写应该是这样: grpc://grpc-node-seamoon-service-xxxxxxxx.cn-hongkong.fcapp.run:8089")]),t._v(" "),s("p",[t._v("8089 是阿里云的固定 grpc 协议端口,不需要改动。")])])])}),[],!1,null,null,null);s.default=o.exports}}]);
  • ■ ■ ■ ■
    assets/js/17.b7bbc847.js assets/js/17.61ce7228.js
    1  -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{327:function(t,s,o){"use strict";o.r(s);var a=o(7),e=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"position"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#position"}},[t._v("#")]),t._v(" Position")]),t._v(" "),s("h2",{attrs:{id:"前言-为什么要写月海这个工具-why-sea-moon"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#前言-为什么要写月海这个工具-why-sea-moon"}},[t._v("#")]),t._v(" 前言: 为什么要写月海这个工具? (Why Sea Moon)")]),t._v(" "),s("ul",[s("li",[t._v("随着云原生不断地推广,希望渗透测试也能够与时俱进,开启一个新的纪元。不论从测试的手段还是挖掘方向,都应该朝着时代发展的方向跟进。")]),t._v(" "),s("li",[t._v("现有项目模式较为松散,部署还是需要花费一些经历来理解和操作。而类似阿里云已经上升到serverless应用的层级,相应的部署方式和玩法更新颖。")]),t._v(" "),s("li",[t._v("如果将这些项目比作是概念性工具,那么月海致力于打造的是一个较为成熟化的,能够快速简易应用的工具集产品。")]),t._v(" "),s("li",[t._v("月海希望能够抛砖引玉,提出一个简易的框架和模式,将现有的大部分可迁移至云端操作的攻击手段集成进来,最终达到随手拿来的一台崭新电脑,5分钟即可进入攻击状态(理想)。")])])])}),[],!1,null,null,null);s.default=e.exports}}]);
     1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{326:function(t,s,o){"use strict";o.r(s);var a=o(7),e=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"position"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#position"}},[t._v("#")]),t._v(" Position")]),t._v(" "),s("h2",{attrs:{id:"前言-为什么要写月海这个工具-why-sea-moon"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#前言-为什么要写月海这个工具-why-sea-moon"}},[t._v("#")]),t._v(" 前言: 为什么要写月海这个工具? (Why Sea Moon)")]),t._v(" "),s("ul",[s("li",[t._v("随着云原生不断地推广,希望渗透测试也能够与时俱进,开启一个新的纪元。不论从测试的手段还是挖掘方向,都应该朝着时代发展的方向跟进。")]),t._v(" "),s("li",[t._v("现有项目模式较为松散,部署还是需要花费一些经历来理解和操作。而类似阿里云已经上升到serverless应用的层级,相应的部署方式和玩法更新颖。")]),t._v(" "),s("li",[t._v("如果将这些项目比作是概念性工具,那么月海致力于打造的是一个较为成熟化的,能够快速简易应用的工具集产品。")]),t._v(" "),s("li",[t._v("月海希望能够抛砖引玉,提出一个简易的框架和模式,将现有的大部分可迁移至云端操作的攻击手段集成进来,最终达到随手拿来的一台崭新电脑,5分钟即可进入攻击状态(理想)。")])])])}),[],!1,null,null,null);s.default=e.exports}}]);
  • ■ ■ ■ ■
    assets/js/19.c6b37b92.js assets/js/19.8723ada4.js
    1  -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{330:function(r,e,t){"use strict";t.r(e);var o=t(7),n=Object(o.a)({},(function(){var r=this,e=r._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[e("h2",{attrs:{id:"seamoon-技术blog"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#seamoon-技术blog"}},[r._v("#")]),r._v(" SeaMoon 技术Blog")]),r._v(" "),e("p",[r._v("在此分享 SeaMoon 在实现上的一些技术思考与serverless的一些讨论")]),r._v(" "),e("h2",{attrs:{id:"��-参考文献与项目"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#��-参考文献与项目"}},[r._v("#")]),r._v(" �� 参考文献与项目")]),r._v(" "),e("p",[r._v("感谢各位前辈师傅们的分享与沉淀。")]),r._v(" "),e("p",[e("strong",[r._v("文章类")])]),r._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://xz.aliyun.com/t/9502",target:"_blank",rel:"noopener noreferrer"}},[r._v("浅谈云函数的利用面"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://freewechat.com/a/MzI0MDI5MTQ3OQ==/2247484068/1",target:"_blank",rel:"noopener noreferrer"}},[r._v("白嫖CDN,打造封不尽IP的代理池"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://serverless.ink/",target:"_blank",rel:"noopener noreferrer"}},[r._v("Serverless 应用开发指南"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://www.freebuf.com/articles/web/212382.html",target:"_blank",rel:"noopener noreferrer"}},[r._v("HTTP被动扫描代理的那些事"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://luyuhuang.tech/2020/12/02/subsocks.html",target:"_blank",rel:"noopener noreferrer"}},[r._v("Subsocks: 用GO实现一个Socks5安全代理"),e("OutboundLink")],1)])]),r._v(" "),e("p",[e("strong",[r._v("项目类")])]),r._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/shimmeris/SCFProxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("SFCProxy"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/armon/go-socks5",target:"_blank",rel:"noopener noreferrer"}},[r._v("go-socks5"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/luyuhuang/subsocks",target:"_blank",rel:"noopener noreferrer"}},[r._v("subsocks"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/ginuerzh/gost",target:"_blank",rel:"noopener noreferrer"}},[r._v("gost"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/inbug-team/InCloud",target:"_blank",rel:"noopener noreferrer"}},[r._v("InCloud"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/Sakurasan/scf-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("sfc-proxy"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/copriwolf/serverless-transitcode",target:"_blank",rel:"noopener noreferrer"}},[r._v("Serverless-transitcode"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/SapphicCode/protoplex",target:"_blank",rel:"noopener noreferrer"}},[r._v("protoplex"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/D3Ext/DFShell",target:"_blank",rel:"noopener noreferrer"}},[r._v("DFShell"),e("OutboundLink")],1)])])])}),[],!1,null,null,null);e.default=n.exports}}]);
     1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{329:function(r,e,t){"use strict";t.r(e);var o=t(7),n=Object(o.a)({},(function(){var r=this,e=r._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[e("h2",{attrs:{id:"seamoon-技术blog"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#seamoon-技术blog"}},[r._v("#")]),r._v(" SeaMoon 技术Blog")]),r._v(" "),e("p",[r._v("在此分享 SeaMoon 在实现上的一些技术思考与serverless的一些讨论")]),r._v(" "),e("h2",{attrs:{id:"��-参考文献与项目"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#��-参考文献与项目"}},[r._v("#")]),r._v(" �� 参考文献与项目")]),r._v(" "),e("p",[r._v("感谢各位前辈师傅们的分享与沉淀。")]),r._v(" "),e("p",[e("strong",[r._v("文章类")])]),r._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://xz.aliyun.com/t/9502",target:"_blank",rel:"noopener noreferrer"}},[r._v("浅谈云函数的利用面"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://freewechat.com/a/MzI0MDI5MTQ3OQ==/2247484068/1",target:"_blank",rel:"noopener noreferrer"}},[r._v("白嫖CDN,打造封不尽IP的代理池"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://serverless.ink/",target:"_blank",rel:"noopener noreferrer"}},[r._v("Serverless 应用开发指南"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://www.freebuf.com/articles/web/212382.html",target:"_blank",rel:"noopener noreferrer"}},[r._v("HTTP被动扫描代理的那些事"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://luyuhuang.tech/2020/12/02/subsocks.html",target:"_blank",rel:"noopener noreferrer"}},[r._v("Subsocks: 用GO实现一个Socks5安全代理"),e("OutboundLink")],1)])]),r._v(" "),e("p",[e("strong",[r._v("项目类")])]),r._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://github.com/shimmeris/SCFProxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("SFCProxy"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/armon/go-socks5",target:"_blank",rel:"noopener noreferrer"}},[r._v("go-socks5"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/luyuhuang/subsocks",target:"_blank",rel:"noopener noreferrer"}},[r._v("subsocks"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/ginuerzh/gost",target:"_blank",rel:"noopener noreferrer"}},[r._v("gost"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/inbug-team/InCloud",target:"_blank",rel:"noopener noreferrer"}},[r._v("InCloud"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/Sakurasan/scf-proxy",target:"_blank",rel:"noopener noreferrer"}},[r._v("sfc-proxy"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/copriwolf/serverless-transitcode",target:"_blank",rel:"noopener noreferrer"}},[r._v("Serverless-transitcode"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/SapphicCode/protoplex",target:"_blank",rel:"noopener noreferrer"}},[r._v("protoplex"),e("OutboundLink")],1)]),r._v(" "),e("li",[e("a",{attrs:{href:"https://github.com/D3Ext/DFShell",target:"_blank",rel:"noopener noreferrer"}},[r._v("DFShell"),e("OutboundLink")],1)])])])}),[],!1,null,null,null);e.default=n.exports}}]);
  • ■ ■ ■ ■
    assets/js/20.b52c206b.js assets/js/20.de3bad29.js
    1  -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{329:function(t,_,v){"use strict";v.r(_);var a=v(7),s=Object(a.a)({},(function(){var t=this,_=t._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"http"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#http"}},[t._v("#")]),t._v(" HTTP")]),t._v(" "),_("p",[t._v("[TODO] 重构HTTP逻辑,通过net进行转发而不是上层的http")]),t._v(" "),_("p",[t._v("HTTP代理 涉及了三个问题。")]),t._v(" "),_("ol",[_("li",[t._v("HOST 路由问题")]),t._v(" "),_("li",[t._v("HTTPS 请求认证问题")]),t._v(" "),_("li",[t._v("链式代理")]),t._v(" "),_("li",[t._v("底层转发http.client.do()问题")])]),t._v(" "),_("p",[t._v("依次在原理部分解释月海是如何处理上述问题的")]),t._v(" "),_("h2",{attrs:{id:"效果"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#效果"}},[t._v("#")]),t._v(" 效果")]),t._v(" "),_("p",[_("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png",alt:"speed"}})]),t._v(" "),_("h2",{attrs:{id:"原理"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#原理"}},[t._v("#")]),t._v(" 原理")]),t._v(" "),_("h3",{attrs:{id:"host-路由问题"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#host-路由问题"}},[t._v("#")]),t._v(" HOST 路由问题")]),t._v(" "),_("p",[t._v("最早接触云函数就是大佬们的文章:通过云函数进行动态IP池的代理。开启了大家探索云函数的历程。")]),t._v(" "),_("p",[t._v("其基本原理在于: 通过本地代理拦截 http请求进行解析,将分析出来的参数提供给云函数执行。")]),t._v(" "),_("p",[t._v("而云函数端仅提供一个类似request的方法,把获取到的参数重组HTTP请求,请求过后将数据返回而已。")]),t._v(" "),_("p",[t._v("在设计月海时,我对这种模式实在是难以苟同,太不优雅了,先不提各种编码可能导致的问题,光是要在本地开一个client端,就已经很难受了。")]),t._v(" "),_("p",[t._v("(月海最初的目标是实现本地端不需要任何工具,拿到一台机器,连接到云函数就能进行渗透工作)")]),t._v(" "),_("p",[t._v("但是经过一番折腾,发现截止至目前,云函数的支持力度仅能够存在这一种利用的方式。")]),t._v(" "),_("p",[t._v("问题就出在了HTTP的代理模式。")]),t._v(" "),_("p",[t._v("我们正常使用HTTP代理(浏览器插件、burp、bash终端的"),_("code",[t._v("export HTTP_PROXY")]),t._v(")等,实际上是将HTTP数据包原封不动的发给了我们配置的代理服务器。")]),t._v(" "),_("p",[t._v("实际上,等效于这种请求:\n"),_("code",[t._v('curl -H "HOST: Dest-HOST" example.proxy.com')])]),t._v(" "),_("p",[t._v("但是在云函数的实现都是通过API网关来寻找对应的FC,来确定触发器到底是由哪个函数执行。")]),t._v(" "),_("p",[t._v("而这就用到了这个HOST头字段,导致无法直接在云函数开启一个HTTP代理,用插件配置上使用。")]),t._v(" "),_("p",[t._v('"不要在已有的模式上造轮子", 因此,基于FC的特性,针对HTTP模式,就不再做更多思考与尝试了。')]),t._v(" "),_("p",[t._v("这里仍可以做的,就是优化HTTP请求的优雅程度,比如,通信方式,字段规范,以及编码问题的处理。")]),t._v(" "),_("h3",{attrs:{id:"https-请求认证问题"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#https-请求认证问题"}},[t._v("#")]),t._v(" HTTPS 请求认证问题")]),t._v(" "),_("p",[t._v("其实基于上面的架构。HTTPS 的问题已经很好解决了。")]),t._v(" "),_("p",[t._v("因为我们的 云函数HTTP代理,并不是一个实际意义上的代理,而是一个模拟代理。 云函数模拟的请求是可以发送https的。")]),t._v(" "),_("p",[t._v("那么问题就变成了,如何信任我们的client端,参照大多proxy和burp的模式,可以通过信任根路径的证书来解决这个问题。")]),t._v(" "),_("p",[t._v("可以参考这篇文章")]),t._v(" "),_("p",[_("a",{attrs:{href:"https://www.lyyyuna.com/2018/03/16/http-proxy-https/",target:"_blank",rel:"noopener noreferrer"}},[t._v("实现基于 HTTPS 代理的中间人攻击"),_("OutboundLink")],1)]),t._v(" "),_("p",[t._v("HTTPS 迎刃而解。")]),t._v(" "),_("h3",{attrs:{id:"链式代理"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#链式代理"}},[t._v("#")]),t._v(" 链式代理")]),t._v(" "),_("p",[t._v("待开发")]),t._v(" "),_("h3",{attrs:{id:"底层逻辑问题"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#底层逻辑问题"}},[t._v("#")]),t._v(" 底层逻辑问题")]),t._v(" "),_("p",[t._v("月海测试beta版本,使用的方式是通过net.http 直接发送从header获取的完整路径请求。")]),t._v(" "),_("p",[t._v("这和现有的一些工具逻辑完全一致。 但是在测试时,很容易出现:"),_("code",[t._v("http redirect request")]),t._v(" 、 js/css加载失败或直接失效的场景,这相比socks5的舒适度差了一大截。")]),t._v(" "),_("p",[t._v("因此,基于完美主义,后续将会重构一版底层net转发的逻辑。")])])}),[],!1,null,null,null);_.default=s.exports}}]);
     1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{331:function(t,_,v){"use strict";v.r(_);var a=v(7),s=Object(a.a)({},(function(){var t=this,_=t._self._c;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"http"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#http"}},[t._v("#")]),t._v(" HTTP")]),t._v(" "),_("p",[t._v("[TODO] 重构HTTP逻辑,通过net进行转发而不是上层的http")]),t._v(" "),_("p",[t._v("HTTP代理 涉及了三个问题。")]),t._v(" "),_("ol",[_("li",[t._v("HOST 路由问题")]),t._v(" "),_("li",[t._v("HTTPS 请求认证问题")]),t._v(" "),_("li",[t._v("链式代理")]),t._v(" "),_("li",[t._v("底层转发http.client.do()问题")])]),t._v(" "),_("p",[t._v("依次在原理部分解释月海是如何处理上述问题的")]),t._v(" "),_("h2",{attrs:{id:"效果"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#效果"}},[t._v("#")]),t._v(" 效果")]),t._v(" "),_("p",[_("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png",alt:"speed"}})]),t._v(" "),_("h2",{attrs:{id:"原理"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#原理"}},[t._v("#")]),t._v(" 原理")]),t._v(" "),_("h3",{attrs:{id:"host-路由问题"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#host-路由问题"}},[t._v("#")]),t._v(" HOST 路由问题")]),t._v(" "),_("p",[t._v("最早接触云函数就是大佬们的文章:通过云函数进行动态IP池的代理。开启了大家探索云函数的历程。")]),t._v(" "),_("p",[t._v("其基本原理在于: 通过本地代理拦截 http请求进行解析,将分析出来的参数提供给云函数执行。")]),t._v(" "),_("p",[t._v("而云函数端仅提供一个类似request的方法,把获取到的参数重组HTTP请求,请求过后将数据返回而已。")]),t._v(" "),_("p",[t._v("在设计月海时,我对这种模式实在是难以苟同,太不优雅了,先不提各种编码可能导致的问题,光是要在本地开一个client端,就已经很难受了。")]),t._v(" "),_("p",[t._v("(月海最初的目标是实现本地端不需要任何工具,拿到一台机器,连接到云函数就能进行渗透工作)")]),t._v(" "),_("p",[t._v("但是经过一番折腾,发现截止至目前,云函数的支持力度仅能够存在这一种利用的方式。")]),t._v(" "),_("p",[t._v("问题就出在了HTTP的代理模式。")]),t._v(" "),_("p",[t._v("我们正常使用HTTP代理(浏览器插件、burp、bash终端的"),_("code",[t._v("export HTTP_PROXY")]),t._v(")等,实际上是将HTTP数据包原封不动的发给了我们配置的代理服务器。")]),t._v(" "),_("p",[t._v("实际上,等效于这种请求:\n"),_("code",[t._v('curl -H "HOST: Dest-HOST" example.proxy.com')])]),t._v(" "),_("p",[t._v("但是在云函数的实现都是通过API网关来寻找对应的FC,来确定触发器到底是由哪个函数执行。")]),t._v(" "),_("p",[t._v("而这就用到了这个HOST头字段,导致无法直接在云函数开启一个HTTP代理,用插件配置上使用。")]),t._v(" "),_("p",[t._v('"不要在已有的模式上造轮子", 因此,基于FC的特性,针对HTTP模式,就不再做更多思考与尝试了。')]),t._v(" "),_("p",[t._v("这里仍可以做的,就是优化HTTP请求的优雅程度,比如,通信方式,字段规范,以及编码问题的处理。")]),t._v(" "),_("h3",{attrs:{id:"https-请求认证问题"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#https-请求认证问题"}},[t._v("#")]),t._v(" HTTPS 请求认证问题")]),t._v(" "),_("p",[t._v("其实基于上面的架构。HTTPS 的问题已经很好解决了。")]),t._v(" "),_("p",[t._v("因为我们的 云函数HTTP代理,并不是一个实际意义上的代理,而是一个模拟代理。 云函数模拟的请求是可以发送https的。")]),t._v(" "),_("p",[t._v("那么问题就变成了,如何信任我们的client端,参照大多proxy和burp的模式,可以通过信任根路径的证书来解决这个问题。")]),t._v(" "),_("p",[t._v("可以参考这篇文章")]),t._v(" "),_("p",[_("a",{attrs:{href:"https://www.lyyyuna.com/2018/03/16/http-proxy-https/",target:"_blank",rel:"noopener noreferrer"}},[t._v("实现基于 HTTPS 代理的中间人攻击"),_("OutboundLink")],1)]),t._v(" "),_("p",[t._v("HTTPS 迎刃而解。")]),t._v(" "),_("h3",{attrs:{id:"链式代理"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#链式代理"}},[t._v("#")]),t._v(" 链式代理")]),t._v(" "),_("p",[t._v("待开发")]),t._v(" "),_("h3",{attrs:{id:"底层逻辑问题"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#底层逻辑问题"}},[t._v("#")]),t._v(" 底层逻辑问题")]),t._v(" "),_("p",[t._v("月海测试beta版本,使用的方式是通过net.http 直接发送从header获取的完整路径请求。")]),t._v(" "),_("p",[t._v("这和现有的一些工具逻辑完全一致。 但是在测试时,很容易出现:"),_("code",[t._v("http redirect request")]),t._v(" 、 js/css加载失败或直接失效的场景,这相比socks5的舒适度差了一大截。")]),t._v(" "),_("p",[t._v("因此,基于完美主义,后续将会重构一版底层net转发的逻辑。")])])}),[],!1,null,null,null);_.default=s.exports}}]);
  • ■ ■ ■ ■
    assets/js/21.80d708a6.js assets/js/21.6e427a6c.js
    1  -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{331:function(s,t,e){"use strict";e.r(t);var o=e(7),r=Object(o.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"socks5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#socks5"}},[s._v("#")]),s._v(" SOCKS5")]),s._v(" "),t("h2",{attrs:{id:"socks5-效果"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#socks5-效果"}},[s._v("#")]),s._v(" SOCKS5 效果")]),s._v(" "),t("p",[s._v("相比http代理更稳定,速度更快。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png",alt:"speed"}})]),s._v(" "),t("h2",{attrs:{id:"socks5-原理"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#socks5-原理"}},[s._v("#")]),s._v(" SOCKS5 原理")]),s._v(" "),t("h3",{attrs:{id:"socks5-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#socks5-2"}},[s._v("#")]),s._v(" SOCKS5")]),s._v(" "),t("p",[s._v("基础理论: "),t("a",{attrs:{href:"https://xz.aliyun.com/t/9502",target:"_blank",rel:"noopener noreferrer"}},[s._v("浅谈云函数的利用面"),t("OutboundLink")],1)]),s._v(" "),t("p",[s._v("在云函数(FC)的限制下,大佬提出了一种通过vps建立起socks5隧道的模式,从模式上来看,更像是一种反向连接。")]),s._v(" "),t("p",[s._v("但是这种模式,需要一台VPS。对于穷逼的脚本小子的我,实在是不够优雅。")]),s._v(" "),t("p",[s._v("FC的不成熟的确限制了大部分的玩法,比如触发器种类,比如协议,比如端口限制等等。")]),s._v(" "),t("p",[s._v("在这种大环境下,我们无力去变更云函数的生态(其实也有可能云函数并没有为我们这种使用方式进行设计),只能自寻出路。")]),s._v(" "),t("p",[s._v("想要优雅的正向连接,只能在HTTP上做文章。")]),s._v(" "),t("p",[s._v("突然联想到早些年,做安全服务时拿到了WebShell后如何进行内网渗透?这就想起了一个利器工具,也是我们今天的主角:")]),s._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/sensepost/reGeorg",target:"_blank",rel:"noopener noreferrer"}},[s._v("reGeorg"),t("OutboundLink")],1)]),s._v(" "),t("p",[s._v("这个工具提供了各种语言的脚本,能够通过HTTP隧道的方式,结合本地客户端,建立socks连接代理。")]),s._v(" "),t("p",[s._v("他的原理其实是依赖于,socks属于一种建立在TCP层的接口,是对TCP/IP协议的封装,而在应用层的HTTP协议也是同样属于对TCP/IP协议的封装。")]),s._v(" "),t("p",[s._v("通俗来说,socks就是爸爸,而HTTP只是他众多的接口调用实现方而已,相互之间的转化是存在某种方式的。")]),s._v(" "),t("p",[s._v("举个例子,如python中的urllib库,底层就是使用sockets实现的HTTP。")]),s._v(" "),t("p",[s._v("因此,我们云函数socks代理的模型就可以画出来了:")]),s._v(" "),t("p",[s._v("用户 -> socks -> client -> 转化为HTTP -> FC云函数 -> 解析HTTP -> 发送socks")]),s._v(" "),t("p",[s._v("用户 <- 转化为socks <- client <- 转化为HTTP <- FC云函数 <- socks数据")]),s._v(" "),t("p",[s._v("我们的client开启一个socks的监听,然后将监听到的数据转化为http请求发给fc处理, fc根据http提供的数据发起socks连接,获取数据。之后fc函数再将数据通过http\n返回byte字节码,client端接收到响应,再根据协议降级为socks。")]),s._v(" "),t("p",[s._v("理论存在,实践开始。 根据原理分析,我们要做的事情就比较明显了:")]),s._v(" "),t("ul",[t("li",[s._v("在云函数部署好一个接受HTTP响应,并转化为socks连接的服务")]),s._v(" "),t("li",[s._v("在本地启动client端,监听一个socks端口,将该端口的数据按照协议转化为HTTP请求发送给云函数")])]),s._v(" "),t("p",[s._v("参考"),t("a",{attrs:{href:"https://github.com/sensepost/reGeorg",target:"_blank",rel:"noopener noreferrer"}},[s._v("reGeorg"),t("OutboundLink")],1),s._v("\n和他的的重构版"),t("a",{attrs:{href:"https://github.com/L-codes/Neo-reGeorg",target:"_blank",rel:"noopener noreferrer"}},[s._v("Neo-reGeorg"),t("OutboundLink")],1),s._v(", 复制了一个GO版本的客户端和服务端。")]),s._v(" "),t("p",[s._v("也就是说,你也可以选择连接 reGeorg 的shell作为http代理,启动一个本地的socks连接。")]),s._v(" "),t("p",[s._v("以PHP为例,reGeorg将状态、IO全部存储在了session内。")]),s._v(" "),t("p",[s._v("我们的云函数是没有状态的,所以不能够通过这种断开连接的方式再重新找到状态进行读取,要重新寻找出路。")]),s._v(" "),t("p",[s._v("经过一周的改写,我发现虽然思路可行,但是reGeorg的项目实在太老了,而重构版Neo-reGeorg又因为各种加密等原因离谱的乱,导致最终socks建立起的连接无法再次read的相应的socks。")]),s._v(" "),t("p",[s._v("终于在苦找下,发现了大佬做了这样的事情:将客户端socks5升级至http/https/websocket等应用层协议,同时还提供了UDP的解决方案!")]),s._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/luyuhuang/subsocks",target:"_blank",rel:"noopener noreferrer"}},[s._v("subsocks"),t("OutboundLink")],1)]),s._v(" "),t("p",[s._v("但是测试发现,http触发器存在最大连接超时时间,虽然阿里云已经把这个数值调整到了24小时,依旧存在隐患,不够完美。")]),s._v(" "),t("p",[s._v("于是,替换者websockets触发器完美出现,解决了所有的问题。")]),s._v(" "),t("p",[s._v("因为本身websockets就是一种类sockets的http连接,现在我们只要通过 "),t("code",[s._v("io.copy")]),s._v(" 将双端的输入输出绑定,即可构成通信信道。")]),s._v(" "),t("p",[s._v("最后就是处理好断开连接问题,来防止异常断开导致的panic,和节约云函数计费成本。")]),s._v(" "),t("p",[s._v("最终达成上图效果。")])])}),[],!1,null,null,null);t.default=r.exports}}]);
     1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{330:function(s,t,e){"use strict";e.r(t);var o=e(7),r=Object(o.a)({},(function(){var s=this,t=s._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"socks5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#socks5"}},[s._v("#")]),s._v(" SOCKS5")]),s._v(" "),t("h2",{attrs:{id:"socks5-效果"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#socks5-效果"}},[s._v("#")]),s._v(" SOCKS5 效果")]),s._v(" "),t("p",[s._v("相比http代理更稳定,速度更快。")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png",alt:"speed"}})]),s._v(" "),t("h2",{attrs:{id:"socks5-原理"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#socks5-原理"}},[s._v("#")]),s._v(" SOCKS5 原理")]),s._v(" "),t("h3",{attrs:{id:"socks5-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#socks5-2"}},[s._v("#")]),s._v(" SOCKS5")]),s._v(" "),t("p",[s._v("基础理论: "),t("a",{attrs:{href:"https://xz.aliyun.com/t/9502",target:"_blank",rel:"noopener noreferrer"}},[s._v("浅谈云函数的利用面"),t("OutboundLink")],1)]),s._v(" "),t("p",[s._v("在云函数(FC)的限制下,大佬提出了一种通过vps建立起socks5隧道的模式,从模式上来看,更像是一种反向连接。")]),s._v(" "),t("p",[s._v("但是这种模式,需要一台VPS。对于穷逼的脚本小子的我,实在是不够优雅。")]),s._v(" "),t("p",[s._v("FC的不成熟的确限制了大部分的玩法,比如触发器种类,比如协议,比如端口限制等等。")]),s._v(" "),t("p",[s._v("在这种大环境下,我们无力去变更云函数的生态(其实也有可能云函数并没有为我们这种使用方式进行设计),只能自寻出路。")]),s._v(" "),t("p",[s._v("想要优雅的正向连接,只能在HTTP上做文章。")]),s._v(" "),t("p",[s._v("突然联想到早些年,做安全服务时拿到了WebShell后如何进行内网渗透?这就想起了一个利器工具,也是我们今天的主角:")]),s._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/sensepost/reGeorg",target:"_blank",rel:"noopener noreferrer"}},[s._v("reGeorg"),t("OutboundLink")],1)]),s._v(" "),t("p",[s._v("这个工具提供了各种语言的脚本,能够通过HTTP隧道的方式,结合本地客户端,建立socks连接代理。")]),s._v(" "),t("p",[s._v("他的原理其实是依赖于,socks属于一种建立在TCP层的接口,是对TCP/IP协议的封装,而在应用层的HTTP协议也是同样属于对TCP/IP协议的封装。")]),s._v(" "),t("p",[s._v("通俗来说,socks就是爸爸,而HTTP只是他众多的接口调用实现方而已,相互之间的转化是存在某种方式的。")]),s._v(" "),t("p",[s._v("举个例子,如python中的urllib库,底层就是使用sockets实现的HTTP。")]),s._v(" "),t("p",[s._v("因此,我们云函数socks代理的模型就可以画出来了:")]),s._v(" "),t("p",[s._v("用户 -> socks -> client -> 转化为HTTP -> FC云函数 -> 解析HTTP -> 发送socks")]),s._v(" "),t("p",[s._v("用户 <- 转化为socks <- client <- 转化为HTTP <- FC云函数 <- socks数据")]),s._v(" "),t("p",[s._v("我们的client开启一个socks的监听,然后将监听到的数据转化为http请求发给fc处理, fc根据http提供的数据发起socks连接,获取数据。之后fc函数再将数据通过http\n返回byte字节码,client端接收到响应,再根据协议降级为socks。")]),s._v(" "),t("p",[s._v("理论存在,实践开始。 根据原理分析,我们要做的事情就比较明显了:")]),s._v(" "),t("ul",[t("li",[s._v("在云函数部署好一个接受HTTP响应,并转化为socks连接的服务")]),s._v(" "),t("li",[s._v("在本地启动client端,监听一个socks端口,将该端口的数据按照协议转化为HTTP请求发送给云函数")])]),s._v(" "),t("p",[s._v("参考"),t("a",{attrs:{href:"https://github.com/sensepost/reGeorg",target:"_blank",rel:"noopener noreferrer"}},[s._v("reGeorg"),t("OutboundLink")],1),s._v("\n和他的的重构版"),t("a",{attrs:{href:"https://github.com/L-codes/Neo-reGeorg",target:"_blank",rel:"noopener noreferrer"}},[s._v("Neo-reGeorg"),t("OutboundLink")],1),s._v(", 复制了一个GO版本的客户端和服务端。")]),s._v(" "),t("p",[s._v("也就是说,你也可以选择连接 reGeorg 的shell作为http代理,启动一个本地的socks连接。")]),s._v(" "),t("p",[s._v("以PHP为例,reGeorg将状态、IO全部存储在了session内。")]),s._v(" "),t("p",[s._v("我们的云函数是没有状态的,所以不能够通过这种断开连接的方式再重新找到状态进行读取,要重新寻找出路。")]),s._v(" "),t("p",[s._v("经过一周的改写,我发现虽然思路可行,但是reGeorg的项目实在太老了,而重构版Neo-reGeorg又因为各种加密等原因离谱的乱,导致最终socks建立起的连接无法再次read的相应的socks。")]),s._v(" "),t("p",[s._v("终于在苦找下,发现了大佬做了这样的事情:将客户端socks5升级至http/https/websocket等应用层协议,同时还提供了UDP的解决方案!")]),s._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/luyuhuang/subsocks",target:"_blank",rel:"noopener noreferrer"}},[s._v("subsocks"),t("OutboundLink")],1)]),s._v(" "),t("p",[s._v("但是测试发现,http触发器存在最大连接超时时间,虽然阿里云已经把这个数值调整到了24小时,依旧存在隐患,不够完美。")]),s._v(" "),t("p",[s._v("于是,替换者websockets触发器完美出现,解决了所有的问题。")]),s._v(" "),t("p",[s._v("因为本身websockets就是一种类sockets的http连接,现在我们只要通过 "),t("code",[s._v("io.copy")]),s._v(" 将双端的输入输出绑定,即可构成通信信道。")]),s._v(" "),t("p",[s._v("最后就是处理好断开连接问题,来防止异常断开导致的panic,和节约云函数计费成本。")]),s._v(" "),t("p",[s._v("最终达成上图效果。")])])}),[],!1,null,null,null);t.default=r.exports}}]);
  • assets/js/8.835ed35b.js assets/js/8.edc0f658.js
    Unable to diff as some line is too long.
  • ■ ■ ■ ■
    assets/js/9.f5f06f49.js assets/js/9.9fc56d53.js
    1  -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{322:function(t,a,s){"use strict";s.r(a);var e=s(7),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"三步部署到阿里云"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#三步部署到阿里云"}},[t._v("#")]),t._v(" 三步部署到阿里云")]),t._v(" "),a("p",[t._v("阿里云是使用上最为规范、标准化场景下的serverless部署方式。")]),t._v(" "),a("p",[t._v("如果你对serverless的运作感兴趣,并希望寻找更多的玩法,阿里云是一个不错的选择,各种选项可以帮助你更好地理解和配置serverless。")]),t._v(" "),a("h2",{attrs:{id:"如何部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何部署"}},[t._v("#")]),t._v(" 如何部署")]),t._v(" "),a("p",[t._v("如果你了解云函数,可以使用自定义镜像 / 自定义运行时 / 二进制等等方式部署。")]),t._v(" "),a("p",[t._v("下文是基于对完全不了解云函数的同学给出的最简单的部署方式。")]),t._v(" "),a("h3",{attrs:{id:"step-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[t._v("#")]),t._v(" Step.1")]),t._v(" "),a("ul",[a("li",[t._v("阿里云首先要开通函数计算服务。")]),t._v(" "),a("li",[t._v("fork 该仓库(https://github.com/DVKunion/SeaMoon.git)到您自己的 github 账户下")]),t._v(" "),a("li",[t._v("进入阿里云控制台,点击应用 -> 创建应用")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/66d81e68e1fa4ef9b8aa3775b4957552.png",alt:"aliyun-create-app"}})]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" Step.2")]),t._v(" "),a("p",[t._v("选择 "),a("code",[t._v("通过仓库导入应用")]),t._v(" , 授权Github账户后,选择fork好的仓库,如果您之前没有使用过阿里云,在角色权限处还需要进行一次授权。")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/d00b5116362d47cdb429f91e48ab2d3a.png",alt:"aliyun-app-import"}})]),t._v(" "),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" Step.3")]),t._v(" "),a("p",[t._v("点击创建,等待服务部署成功,即可获取到代理地址")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/a43730eaa80a4885a5eaee853ff3a781.png",alt:"aliyun-deploy"}})]),t._v(" "),a("blockquote",[a("p",[t._v("其他注意事项:"),a("br"),t._v("\n如果您想要修改代理生效的区域,请修改s.yaml内的 vars -> region字段")]),t._v(" "),a("p",[t._v("目前阿里云支持的字段有: cn-hangzhou, cn-beijing, cn-beijing, cn-hangzhou, cn-shanghai, cn-qingdao, cn-zhangjiakou, cn-huhehaote, cn-shenzhen, cn-chengdu, cn-hongkong, ap-southeast-1, ap-southeast-2, ap-southeast-3, ap-southeast-5, ap-northeast-1, eu-central-1, eu-west-1, us-west-1, us-east-1, ap-south-1")])]),t._v(" "),a("p",[a("a",{attrs:{href:"https://seamoon.dvkunion.cn/guide/client/",target:"_blank",rel:"noopener noreferrer"}},[t._v("开启客户端并填入配置"),a("OutboundLink")],1),t._v(", 尽情享用。")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("如何填写地址")]),t._v(" "),a("p",[t._v("将协议头 https:// 替换为对应的隧道协议,如: ws:// 或是 grcp:// 。默认两种协议的隧道是都部署了的。")]),t._v(" "),a("p",[t._v("grpc 按照阿里云的要求,还需要自行声明端口,由此,一个 grpc 隧道的填写应该是这样: grpc://grpc-node-seamoon-service-xxxxxxxx.cn-hongkong.fcapp.run:8089")]),t._v(" "),a("p",[t._v("8089 是阿里云的固定 grpc 协议端口,不需要改动。")])]),t._v(" "),a("h2",{attrs:{id:"效果展示"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#效果展示"}},[t._v("#")]),t._v(" 效果展示")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png",alt:"speed"}})])])}),[],!1,null,null,null);a.default=n.exports}}]);
     1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{318:function(t,a,s){"use strict";s.r(a);var e=s(7),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"三步部署到阿里云"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#三步部署到阿里云"}},[t._v("#")]),t._v(" 三步部署到阿里云")]),t._v(" "),a("p",[t._v("阿里云是使用上最为规范、标准化场景下的serverless部署方式。")]),t._v(" "),a("p",[t._v("如果你对serverless的运作感兴趣,并希望寻找更多的玩法,阿里云是一个不错的选择,各种选项可以帮助你更好地理解和配置serverless。")]),t._v(" "),a("h2",{attrs:{id:"如何部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何部署"}},[t._v("#")]),t._v(" 如何部署")]),t._v(" "),a("p",[t._v("如果你了解云函数,可以使用自定义镜像 / 自定义运行时 / 二进制等等方式部署。")]),t._v(" "),a("p",[t._v("下文是基于对完全不了解云函数的同学给出的最简单的部署方式。")]),t._v(" "),a("h3",{attrs:{id:"step-1"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[t._v("#")]),t._v(" Step.1")]),t._v(" "),a("ul",[a("li",[t._v("阿里云首先要开通函数计算服务。")]),t._v(" "),a("li",[t._v("fork 该仓库(https://github.com/DVKunion/SeaMoon.git)到您自己的 github 账户下")]),t._v(" "),a("li",[t._v("进入阿里云控制台,点击应用 -> 创建应用")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/66d81e68e1fa4ef9b8aa3775b4957552.png",alt:"aliyun-create-app"}})]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" Step.2")]),t._v(" "),a("p",[t._v("选择 "),a("code",[t._v("通过仓库导入应用")]),t._v(" , 授权Github账户后,选择fork好的仓库,如果您之前没有使用过阿里云,在角色权限处还需要进行一次授权。")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/d00b5116362d47cdb429f91e48ab2d3a.png",alt:"aliyun-app-import"}})]),t._v(" "),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" Step.3")]),t._v(" "),a("p",[t._v("点击创建,等待服务部署成功,即可获取到代理地址")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/a43730eaa80a4885a5eaee853ff3a781.png",alt:"aliyun-deploy"}})]),t._v(" "),a("blockquote",[a("p",[t._v("其他注意事项:"),a("br"),t._v("\n如果您想要修改代理生效的区域,请修改s.yaml内的 vars -> region字段")]),t._v(" "),a("p",[t._v("目前阿里云支持的字段有: cn-hangzhou, cn-beijing, cn-beijing, cn-hangzhou, cn-shanghai, cn-qingdao, cn-zhangjiakou, cn-huhehaote, cn-shenzhen, cn-chengdu, cn-hongkong, ap-southeast-1, ap-southeast-2, ap-southeast-3, ap-southeast-5, ap-northeast-1, eu-central-1, eu-west-1, us-west-1, us-east-1, ap-south-1")])]),t._v(" "),a("p",[a("a",{attrs:{href:"https://seamoon.dvkunion.cn/guide/client/",target:"_blank",rel:"noopener noreferrer"}},[t._v("开启客户端并填入配置"),a("OutboundLink")],1),t._v(", 尽情享用。")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("如何填写地址")]),t._v(" "),a("p",[t._v("将协议头 https:// 替换为对应的隧道协议,如: ws:// 或是 grcp:// 。默认两种协议的隧道是都部署了的。")]),t._v(" "),a("p",[t._v("grpc 按照阿里云的要求,还需要自行声明端口,由此,一个 grpc 隧道的填写应该是这样: grpc://grpc-node-seamoon-service-xxxxxxxx.cn-hongkong.fcapp.run:8089")]),t._v(" "),a("p",[t._v("8089 是阿里云的固定 grpc 协议端口,不需要改动。")])]),t._v(" "),a("h2",{attrs:{id:"效果展示"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#效果展示"}},[t._v("#")]),t._v(" 效果展示")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png",alt:"speed"}})])])}),[],!1,null,null,null);a.default=n.exports}}]);
  • assets/js/app.d6c45fef.js assets/js/app.a6ba39cf.js
    Unable to diff as some line is too long.
  • ■ ■ ■ ■ ■ ■
    guide/client/binary/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/15.1d5d06a9.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/15.b23212dc.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 16 lines
    43 43   </li><li class="iconfont icon-yuedu">
    44 44   阅读模式
    45 45   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    46  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/15.1d5d06a9.js" defer></script>
     46 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/15.b23212dc.js" defer></script>
    47 47   </body>
    48 48  </html>
    49 49   
  • ■ ■ ■ ■ ■ ■
    guide/client/docker/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/14.8b11eab1.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/14.8b11eab1.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 1 lines
    28 28   GitHub
    29 29   <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar-hover-trigger"></div> <aside class="sidebar" style="display:none;"><!----> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">首页</a></div><div class="nav-item"><a href="/guide/introduce/" class="nav-link">使用手册</a></div><div class="nav-item"><a href="/tech/" class="nav-link">技术博客</a></div> <a href="https://github.com/Dvkunion/SeaMoon" target="_blank" rel="noopener noreferrer" class="repo-link">
    30 30   GitHub
    31  - <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>概述</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始使用</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>服务部署</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>客户端部署</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/client/docker/" aria-current="page" class="active sidebar-link">docker</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/guide/client/docker/#docker" class="sidebar-link">Docker</a></li></ul></li><li><a href="/guide/client/binary/" class="sidebar-link">binary</a></li></ul></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC">docker<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h2 id="docker"><a href="#docker" class="header-anchor">#</a> Docker</h2> <p>推荐使用 docker 一键部署client</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">-it</span> <span class="token parameter variable">-d</span> <span class="token parameter variable">--net</span><span class="token operator">=</span>host dvkunion/seamoon:latest proxy
     31 + <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>概述</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始使用</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>服务部署</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>客户端部署</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/client/docker/" aria-current="page" class="active sidebar-link">docker</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/guide/client/docker/#docker" class="sidebar-link">Docker</a></li></ul></li><li><a href="/guide/client/binary/" class="sidebar-link">binary</a></li></ul></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg==">docker<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h2 id="docker"><a href="#docker" class="header-anchor">#</a> Docker</h2> <p>推荐使用 docker 一键部署client</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">-it</span> <span class="token parameter variable">-d</span> <span class="token parameter variable">--net</span><span class="token operator">=</span>host dvkunion/seamoon:latest proxy
    32 32  </code></pre></div><p>默认使用<code>--net=host</code>模式,这样比较简单易懂。为了更高的安全性、可控性,你也可以自己选择映射:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">-it</span> <span class="token parameter variable">-d</span> <span class="token parameter variable">-p</span> <span class="token number">127.0</span>.0.1:7777:7777 <span class="token parameter variable">-p</span> <span class="token number">1080</span>:1080 dvkunion/seamoon:latest proxy
    33 33  </code></pre></div><p>这样可以将管理端口限制只能通过本地 <code>127.0.0.1</code> 访问,如果你需要限制为其他 IP,可以自行修改。</p> <p>然后浏览器打开:</p> <p><code>localhost:7777</code></p> <p>即可开启客户端, 点击配置管理</p> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/0dd37f5600364e59a9457e38eaf77b1f.png" alt="client"></p> <p>添加云端配置</p> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/66b1b150238e400483adf936649b7ed5.png" alt="client-config"></p> <div class="custom-block tip"><p class="custom-block-title">如何填写地址</p> <p>将协议头 https:// 替换为对应的隧道协议,如: ws:// 或是 grcp:// 。默认两种协议的隧道是都部署了的。</p> <p>grpc 按照阿里云的要求,还需要自行声明端口,由此,一个 grpc 隧道的填写应该是这样: grpc://grpc-node-seamoon-service-xxxxxxxx.cn-hongkong.fcapp.run:8089</p> <p>8089 是阿里云的固定 grpc 协议端口,不需要改动。</p></div> <p>开启socks5代理,并保持默认<code>:1080</code>不改变。</p></div></div> <!----> <div class="page-edit"><!----> <!----> <!----></div> <div class="page-nav-wapper"><div class="page-nav-centre-wrap"><a href="/guide/deploy/serverlessDevs/" class="page-nav-centre page-nav-centre-prev"><div class="tooltip">Serverless-Devs</div></a> <a href="/guide/client/binary/" class="page-nav-centre page-nav-centre-next"><div class="tooltip">binary</div></a></div> <div class="page-nav"><p class="inner"><span class="prev">
    34 34  
    skipped 11 lines
    46 46   </li><li class="iconfont icon-yuedu">
    47 47   阅读模式
    48 48   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    49  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/14.8b11eab1.js" defer></script>
     49 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/14.8b11eab1.js" defer></script>
    50 50   </body>
    51 51  </html>
    52 52   
  • ■ ■ ■ ■ ■ ■
    guide/client/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/16.14c5bdbf.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/16.14c5bdbf.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 14 lines
    41 41   </li><li class="iconfont icon-yuedu">
    42 42   阅读模式
    43 43   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    44  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/16.14c5bdbf.js" defer></script>
     44 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/16.14c5bdbf.js" defer></script>
    45 45   </body>
    46 46  </html>
    47 47   
  • ■ ■ ■ ■ ■ ■
    guide/deploy/aliyun/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/9.f5f06f49.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/9.9fc56d53.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 18 lines
    45 45   </li><li class="iconfont icon-yuedu">
    46 46   阅读模式
    47 47   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    48  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/9.f5f06f49.js" defer></script>
     48 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/9.9fc56d53.js" defer></script>
    49 49   </body>
    50 50  </html>
    51 51   
  • ■ ■ ■ ■ ■ ■
    guide/deploy/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/13.58c46386.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/13.58c46386.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 1 lines
    28 28   GitHub
    29 29   <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar-hover-trigger"></div> <aside class="sidebar" style="display:none;"><!----> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">首页</a></div><div class="nav-item"><a href="/guide/introduce/" class="nav-link">使用手册</a></div><div class="nav-item"><a href="/tech/" class="nav-link">技术博客</a></div> <a href="https://github.com/Dvkunion/SeaMoon" target="_blank" rel="noopener noreferrer" class="repo-link">
    30 30   GitHub
    31  - <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>概述</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/introduce/" class="sidebar-link">简介</a></li><li><a href="/guide/structure/" class="sidebar-link">项目结构</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始使用</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>服务部署</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>客户端部署</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC">服务端部署<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h2 id="服务端部署"><a href="#服务端部署" class="header-anchor">#</a> 服务端部署</h2> <p>SeaMoon 提供了多种多样的部署方式。</p> <ul><li><a href="https://seamoon.dvkunion.cn/guide/deploy/aliyun/" target="_blank" rel="noopener noreferrer">阿里云手动部署<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://seamoon.dvkunion.cn/guide/deploy/sealos/" target="_blank" rel="noopener noreferrer">�� sealos:更便宜更舒服的选择<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://seamoon.dvkunion.cn/guide/deploy/tencent/" target="_blank" rel="noopener noreferrer">腾讯云手动部署<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://seamoon.dvkunion.cn/guide/deploy/serverlessDevs/" target="_blank" rel="noopener noreferrer">serverless-devs快捷部署<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----> <div class="page-edit"><!----> <!----> <!----></div> <div class="page-nav-wapper"><!----> <!----></div></div> <!----></main></div> <div class="footer"><div class="icons"><a href="mailto:[email protected]" title="发邮件" target="_blank" class="iconfont icon-youjian"></a><a href="http://www.serverless-devs.com" title="放一只猫" target="_blank" class="iconfont icon-mao"></a><a href="https://github.com/Dvkunion" title="GitHub" target="_blank" class="iconfont icon-github"></a><a href="" title="weixin" target="_blank" class="iconfont icon-weixin"></a></div>
     31 + <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>概述</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/introduce/" class="sidebar-link">简介</a></li><li><a href="/guide/structure/" class="sidebar-link">项目结构</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始使用</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>服务部署</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>客户端部署</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg==">服务端部署<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h2 id="服务端部署"><a href="#服务端部署" class="header-anchor">#</a> 服务端部署</h2> <p>SeaMoon 提供了多种多样的部署方式。</p> <ul><li><a href="https://seamoon.dvkunion.cn/guide/deploy/aliyun/" target="_blank" rel="noopener noreferrer">阿里云手动部署<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://seamoon.dvkunion.cn/guide/deploy/sealos/" target="_blank" rel="noopener noreferrer">�� sealos:更便宜更舒服的选择<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://seamoon.dvkunion.cn/guide/deploy/tencent/" target="_blank" rel="noopener noreferrer">腾讯云手动部署<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://seamoon.dvkunion.cn/guide/deploy/serverlessDevs/" target="_blank" rel="noopener noreferrer">serverless-devs快捷部署<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----> <div class="page-edit"><!----> <!----> <!----></div> <div class="page-nav-wapper"><!----> <!----></div></div> <!----></main></div> <div class="footer"><div class="icons"><a href="mailto:[email protected]" title="发邮件" target="_blank" class="iconfont icon-youjian"></a><a href="http://www.serverless-devs.com" title="放一只猫" target="_blank" class="iconfont icon-mao"></a><a href="https://github.com/Dvkunion" title="GitHub" target="_blank" class="iconfont icon-github"></a><a href="" title="weixin" target="_blank" class="iconfont icon-weixin"></a></div>
    32 32   Theme by
    33 33   <a href="https://github.com/xugaoyi/vuepress-theme-vdoing" target="_blank" title="本站主题">Vdoing</a>
    34 34   | Copyright © 2022-2024
    skipped 6 lines
    41 41   </li><li class="iconfont icon-yuedu">
    42 42   阅读模式
    43 43   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    44  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/13.58c46386.js" defer></script>
     44 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/13.58c46386.js" defer></script>
    45 45   </body>
    46 46  </html>
    47 47   
  • ■ ■ ■ ■ ■ ■
    guide/deploy/sealos/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/10.a4a9751e.js" as="script"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/10.70dc4e3c.js" as="script"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 95 lines
    122 122   <span class="token punctuation" data-v-4f1e9d0c>-</span> <span class="token key atrule" data-v-4f1e9d0c>hosts</span><span class="token punctuation" data-v-4f1e9d0c>:</span>
    123 123   <span class="token punctuation" data-v-4f1e9d0c>-</span> <span class="token string" data-v-4f1e9d0c>&quot;*****&quot;</span> <span class="token comment" data-v-4f1e9d0c># 系统自动生成</span>
    124 124   <span class="token key atrule" data-v-4f1e9d0c>secretName</span><span class="token punctuation" data-v-4f1e9d0c>:</span> wildcard<span class="token punctuation" data-v-4f1e9d0c>-</span>cloud<span class="token punctuation" data-v-4f1e9d0c>-</span>sealos<span class="token punctuation" data-v-4f1e9d0c>-</span>io<span class="token punctuation" data-v-4f1e9d0c>-</span>cert
    125  -</code></pre></div></div> <pre class="pre-blank" data-v-2f5f1757>// Make sure to add code blocks to your code group</pre></div> <h3 id="step-3-本地客户端"><a href="#step-3-本地客户端" class="header-anchor">#</a> Step.3 本地客户端</h3> <p>填写完成后,点击右上角 <code>Deploy</code>, 等待部署完成,状态success后,获取到服务地址。</p> <p>然后在本地启动客户端,推荐 docker 一键拉起:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">-it</span> <span class="token parameter variable">-d</span> <span class="token parameter variable">--net</span><span class="token operator">=</span>host dvkunion/seamoon-client
    126  -</code></pre></div><p>默认使用<code>--net=host</code>模式, 如需要高级设置,如下:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">-it</span> <span class="token parameter variable">-d</span> <span class="token parameter variable">-p</span> <span class="token number">7777</span>:7777 <span class="token parameter variable">-p</span> <span class="token number">1080</span>:1080 dvkunion/seamoon-client
     125 +</code></pre></div></div> <pre class="pre-blank" data-v-2f5f1757>// Make sure to add code blocks to your code group</pre></div> <h3 id="step-3-本地客户端"><a href="#step-3-本地客户端" class="header-anchor">#</a> Step.3 本地客户端</h3> <p>填写完成后,点击右上角 <code>Deploy</code>, 等待部署完成,状态success后,获取到服务地址。</p> <p>然后在本地启动客户端,推荐 docker 一键拉起:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">-it</span> <span class="token parameter variable">-d</span> <span class="token parameter variable">--net</span><span class="token operator">=</span>host dvkunion/seamoon proxy
     126 +</code></pre></div><p>默认使用<code>--net=host</code>模式, 如需要高级设置,如下:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">docker</span> run <span class="token parameter variable">-it</span> <span class="token parameter variable">-d</span> <span class="token parameter variable">-p</span> <span class="token number">7777</span>:7777 <span class="token parameter variable">-p</span> <span class="token number">1080</span>:1080 dvkunion/seamoon proxy
    127 127  </code></pre></div><p>访问本地控制台 localhost:7777 , 将此地址填入客户端即可。</p> <div class="custom-block tip"><p class="custom-block-title">如何填写地址</p> <p>填写的代理 sealos 已经明确给出,如: wss:// 或是 grcps://, 如下图:</p> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/3ff1604871c547d2af492c5fd37428f7.png" alt="sealos-config-grpc-addr"></p> <p>wss 隧道直接复制即可,注意 grpc 服务还需要指定一下端口号,一般都是 443,最终配置如: grpcs://xxxxxxxx.cloud.sealos.io:443。</p></div> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/a931e0b42c8748649d5156b2b0884fcb.png" alt="sealos-config"></p> <h2 id="效果展示"><a href="#效果展示" class="header-anchor">#</a> 效果展示</h2> <p>[旺柴] 谷歌云的IP访问谷歌简直不能再丝滑</p> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/ff9eb3ec14fa417daca7a661f9b4ecff.png" alt="sealos"></p> <p>整体带宽在10-30左右,可能和我客户端出口带宽也有关系,应该是普通的带宽。(不过价格也在这里了要啥自行车,反正够用)</p> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png" alt="speed"></p> <p>如果不需要多IP,实例副本数目固定为1即可;如果需要多IP,副本越多,获取到的IP就越多。(理性使用)</p></div></div> <!----> <div class="page-edit"><!----> <!----> <!----></div> <div class="page-nav-wapper"><div class="page-nav-centre-wrap"><a href="/guide/deploy/aliyun/" class="page-nav-centre page-nav-centre-prev"><div class="tooltip">阿里云</div></a> <a href="/guide/deploy/tencent/" class="page-nav-centre page-nav-centre-next"><div class="tooltip">腾讯云</div></a></div> <div class="page-nav"><p class="inner"><span class="prev">
    128 128  
    129 129   <a href="/guide/deploy/aliyun/" class="prev">阿里云</a></span> <span class="next"><a href="/guide/deploy/tencent/">腾讯云</a>→
    skipped 10 lines
    140 140   </li><li class="iconfont icon-yuedu">
    141 141   阅读模式
    142 142   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    143  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/10.a4a9751e.js" defer></script>
     143 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/10.70dc4e3c.js" defer></script>
    144 144   </body>
    145 145  </html>
    146 146   
  • ■ ■ ■ ■ ■ ■
    guide/deploy/serverlessDevs/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/12.db8d0031.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/12.db8d0031.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 1 lines
    28 28   GitHub
    29 29   <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar-hover-trigger"></div> <aside class="sidebar" style="display:none;"><!----> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">首页</a></div><div class="nav-item"><a href="/guide/introduce/" class="nav-link">使用手册</a></div><div class="nav-item"><a href="/tech/" class="nav-link">技术博客</a></div> <a href="https://github.com/Dvkunion/SeaMoon" target="_blank" rel="noopener noreferrer" class="repo-link">
    30 30   GitHub
    31  - <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>概述</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始使用</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>服务部署</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/deploy/aliyun/" class="sidebar-link">阿里云</a></li><li><a href="/guide/deploy/sealos/" class="sidebar-link">Sealos</a></li><li><a href="/guide/deploy/tencent/" class="sidebar-link">腾讯云</a></li><li><a href="/guide/deploy/serverlessDevs/" aria-current="page" class="active sidebar-link">Serverless-Devs</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#serverless-devs" class="sidebar-link">serverless-devs</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#安装-serverless-devs-工具" class="sidebar-link">安装 serverless-devs 工具</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#部署" class="sidebar-link">部署</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#高级选项" class="sidebar-link">高级选项</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#地域" class="sidebar-link">地域</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#花费-vs-更多的ip" class="sidebar-link">花费 vs 更多的IP</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#可能遇到的坑" class="sidebar-link">可能遇到的坑</a></li></ul></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>客户端部署</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC">Serverless-Devs<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h2 id="serverless-devs"><a href="#serverless-devs" class="header-anchor">#</a> serverless-devs</h2> <p>你也可以通过<a href="http://www.serverless-devs.com" target="_blank" rel="noopener noreferrer">serverless-devs<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>,快速部署到各个云平台。</p> <h2 id="安装-serverless-devs-工具"><a href="#安装-serverless-devs-工具" class="header-anchor">#</a> 安装 serverless-devs 工具</h2> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">npm</span> <span class="token function">install</span> @serverless-devs/s <span class="token parameter variable">-g</span>
     31 + <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>概述</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>开始使用</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>服务部署</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/deploy/aliyun/" class="sidebar-link">阿里云</a></li><li><a href="/guide/deploy/sealos/" class="sidebar-link">Sealos</a></li><li><a href="/guide/deploy/tencent/" class="sidebar-link">腾讯云</a></li><li><a href="/guide/deploy/serverlessDevs/" aria-current="page" class="active sidebar-link">Serverless-Devs</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#serverless-devs" class="sidebar-link">serverless-devs</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#安装-serverless-devs-工具" class="sidebar-link">安装 serverless-devs 工具</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#部署" class="sidebar-link">部署</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#高级选项" class="sidebar-link">高级选项</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#地域" class="sidebar-link">地域</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#花费-vs-更多的ip" class="sidebar-link">花费 vs 更多的IP</a></li><li class="sidebar-sub-header level2"><a href="/guide/deploy/serverlessDevs/#可能遇到的坑" class="sidebar-link">可能遇到的坑</a></li></ul></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>客户端部署</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg==">Serverless-Devs<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h2 id="serverless-devs"><a href="#serverless-devs" class="header-anchor">#</a> serverless-devs</h2> <p>你也可以通过<a href="http://www.serverless-devs.com" target="_blank" rel="noopener noreferrer">serverless-devs<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>,快速部署到各个云平台。</p> <h2 id="安装-serverless-devs-工具"><a href="#安装-serverless-devs-工具" class="header-anchor">#</a> 安装 serverless-devs 工具</h2> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">npm</span> <span class="token function">install</span> @serverless-devs/s <span class="token parameter variable">-g</span>
    32 32  </code></pre></div><p>国内加速:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ cnpm <span class="token function">install</span> @serverless-devs/s <span class="token parameter variable">-g</span>
    33 33  </code></pre></div><p>如果不存在npm包管理器,请先通过node安装npm/cnpm</p> <p>安装后运行</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ s <span class="token parameter variable">-v</span>
    34 34  </code></pre></div><p>将可以看到serverless-devs版本,表示安装成功。</p> <div class="language-shell extra-class"><pre class="language-shell"><code>@serverless-devs/s3: <span class="token number">0.1</span>.0, s-home: /Users/DVK/.s, darwin-arm64, node-v20.9.0
    skipped 80 lines
    115 115   </li><li class="iconfont icon-yuedu">
    116 116   阅读模式
    117 117   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    118  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/12.db8d0031.js" defer></script>
     118 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/12.db8d0031.js" defer></script>
    119 119   </body>
    120 120  </html>
    121 121   
  • ■ ■ ■ ■ ■ ■
    guide/deploy/tencent/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/11.6c1daafb.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/11.40c5b22c.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 29 lines
    56 56   </li><li class="iconfont icon-yuedu">
    57 57   阅读模式
    58 58   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    59  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/11.6c1daafb.js" defer></script>
     59 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/11.40c5b22c.js" defer></script>
    60 60   </body>
    61 61  </html>
    62 62   
  • guide/introduce/index.html
    Unable to diff as some line is too long.
  • ■ ■ ■ ■ ■ ■
    guide/start/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/8.835ed35b.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/8.edc0f658.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 1 lines
    28 28   GitHub
    29 29   <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar-hover-trigger"></div> <aside class="sidebar" style="display:none;"><!----> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">首页</a></div><div class="nav-item"><a href="/guide/introduce/" class="nav-link">使用手册</a></div><div class="nav-item"><a href="/tech/" class="nav-link">技术博客</a></div> <a href="https://github.com/Dvkunion/SeaMoon" target="_blank" rel="noopener noreferrer" class="repo-link">
    30 30   GitHub
    31  - <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>概述</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>开始使用</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/start/" aria-current="page" class="active sidebar-link">快速开始</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/guide/start/#��-快速开始" class="sidebar-link">�� 快速开始</a></li></ul></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>服务部署</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>客户端部署</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABKFJREFUSA3tVl1oFVcQnrMbrak3QUgkya1akpJYcrUtIqW1JvFBE9LiQ5v6JmJpolbMg32rVrhgoYK0QiMY6i9Y6EMaW5D+xFJaTYItIuK2Kr3+BJNwkxBj05sQY3b3nM6cs2dv9t7NT/vQJw/sndk5M/PNzJkzewGerP+pAmy+ON8lLzUJgA8ZYxYIYZmGYRnctDaWvJJAmTtfP1pvXsBCCPP8QFcCaRkZYACgDZFO4stNIcBCajEOlmmC9XpJ9bAGCaPaPmzPl32dvLSVu3BWCTQs0XQQ6g0DYgwLIoAZbBCdW/i+781o1VVlm/410mw4h06Y7bIPHNyWDyL4FHkX03Q8SrzNhZTZriieckWt7cL6MM85YcLpsi/7O9/iXFT6MswI0DmmpkSaJ0qLxFIm3+i1THHB3zmBH3PYx9CcykcLOeQVVa7QtdxTgQgEleX2AjHYfwA+2ddV77ruGoJUbhGDI09YSNXyMpUt5ylOzxgbUmtOp7NmbNt8v3arjTBfYELmLUV+M+nSawNNAUqpT3ClJWg5I3BLT+cGW/DXNGCa6tx1aakCGEigArTn4TDIPdrXXYKCZNrHLMCOEPvHBlLQ99s9eHB7EB6NTki73CVPQ2F5MSx/uRQixfmq7rK0wYD8w8E905bnPDfwoWs/rfv93NWN/ZfvwsLIU7A09gxECyISeGJkHAau98L97tuw7NXnoPyNF8FcYGLGKsOs0mN3OEyec9esGW/ZEl945dTP34wlR2FZVQWU1q0Cw8Tr7p+hgLLNL0FPxx/Q35mA8aEUrH6nCgwEl0tn7wUiZYJnNRh6DK4UH/k0lfyrsBKdPVv/AriGIQcEDQZ65LBAGe2Rzui9Ybjz7XUppz1/uKBbyVPGkN3ZAeC6hr0x7Nr38N5+EqkoOm17xpoqR9ohQF55ERSvr4Dkr3chNfC3DMzGJlNBElW8w9nsGQvhNGIzDkXzCg8cLK951xHsFBlTJspJNi3ZFIMF2AeDV3q8DNOB+YHi6QTrChDIWDBRi5U5f+ZMfJLu3ccrqxtdxk4SKH336LFxSmkqefwU5T8fhdSdQf9IVKD6aNiwI/hnmcAZ91isYMJIaCUCx9W098+LgruikeTqzqqxKPUwqJyCPJiyemVVZBOijDGjD38Os0jOiSPL1z3SPjXNANbiNPXAdzTfukjjuknNBbyz3nwgTd3AVFqUJ5hpHlq9MveLnWwttUfoygBmvVjuikxND3znrhsELnZk7k+OjIGxeNEkomyLVta0xxn+HZhjBc4YZ/AFjHjz9u3xRZl2BN4aq9nFwWh16IrQ1aHHEd3j1+4/dB9OtH4e29A2H1DyHQRmOSfQZ1Fy7MHBTGB6J/Djq6p3OxyO2cB+4Car7v/o3GXgfAkj23+x9ID1Teoamo/SXcbvSf2PX7Vc8DdCmE1vN9di+32P9/5YR3vLnhCVGUWBjEkr3yh4H8v9CzmsbdhzOKzsJKM90iFdaTMjRPhGVsakRvOaRidljo6H6G7j+ctrJpsP+4COhDIl0La2+FS4+5mlocBaXY5QnGZysIBYoeSsl5qQzrSj/cgNrfuEzlWBfwA+EjrZyWUvpAAAAABJRU5ErkJggg==">快速开始<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h2 id="��-快速开始"><a href="#��-快速开始" class="header-anchor">#</a> �� 快速开始</h2> <p>通过该页面,您可以通过推荐的部署方式快速开始使用 SeaMoon。</p> <div class="custom-block tip"><p class="custom-block-title">写在前面</p> <p>本页面按照阿里云标准云函数服务进行部署,如果您希望获取到更多自定义的配置和使用方式,<a href="https://seamoon.dvkunion.cn/guide/deploy" target="_blank" rel="noopener noreferrer">请跳转<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>��
     31 + <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>概述</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>开始使用</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/start/" aria-current="page" class="active sidebar-link">快速开始</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/guide/start/#��-快速开始" class="sidebar-link">�� 快速开始</a></li></ul></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>服务部署</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>客户端部署</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC">快速开始<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h2 id="��-快速开始"><a href="#��-快速开始" class="header-anchor">#</a> �� 快速开始</h2> <p>通过该页面,您可以通过推荐的部署方式快速开始使用 SeaMoon。</p> <div class="custom-block tip"><p class="custom-block-title">写在前面</p> <p>本页面按照阿里云标准云函数服务进行部署,如果您希望获取到更多自定义的配置和使用方式,<a href="https://seamoon.dvkunion.cn/guide/deploy" target="_blank" rel="noopener noreferrer">请跳转<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>��
    32 32  如果您的钱包和预算有限,并且代理IP需求并不是特别高,这里推荐使用 <a href="https://seamoon.dvkunion.cn/guide/deploy/sealos" target="_blank" rel="noopener noreferrer">sealos部署服务端<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></div> <h3 id="事前准备"><a href="#事前准备" class="header-anchor">#</a> 事前准备</h3> <ul><li>云厂商账户(以阿里云为例),并开通对应的serverless服务(阿里云serverless服务名为:函数计算)</li> <li>云厂商账户 AK/SK,并拥有操作FC的全部权限。</li> <li>一台存在docker、Nodejs &gt;= 12 的客户端的机器,同时保证 7777、1080、9999端口未被占用,该机器将作为使用的客户端。</li></ul> <h3 id="step-1-安装serverless-devs工具"><a href="#step-1-安装serverless-devs工具" class="header-anchor">#</a> Step.1 安装serverless-devs工具</h3> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">npm</span> <span class="token function">install</span> @serverless-devs/s <span class="token parameter variable">-g</span>
    33 33  </code></pre></div><p>国内加速:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ cnpm <span class="token function">install</span> @serverless-devs/s <span class="token parameter variable">-g</span>
    34 34  </code></pre></div><p>如果不存在npm包管理器,请先通过node安装npm/cnpm</p> <p>安装后运行</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ s <span class="token parameter variable">-v</span>
    skipped 60 lines
    95 95   </li><li class="iconfont icon-yuedu">
    96 96   阅读模式
    97 97   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    98  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/8.835ed35b.js" defer></script>
     98 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/8.edc0f658.js" defer></script>
    99 99   </body>
    100 100  </html>
    101 101   
  • ■ ■ ■ ■ ■ ■
    guide/structure/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/7.8043363e.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/7.8043363e.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 17 lines
    44 44   </li><li class="iconfont icon-yuedu">
    45 45   阅读模式
    46 46   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    47  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/7.8043363e.js" defer></script>
     47 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/7.8043363e.js" defer></script>
    48 48   </body>
    49 49  </html>
    50 50   
  • ■ ■ ■ ■ ■ ■
    index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/5.03fc806a.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/5.03fc806a.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 18 lines
    45 45   </li><li class="iconfont icon-yuedu">
    46 46   阅读模式
    47 47   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    48  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/5.03fc806a.js" defer></script>
     48 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/5.03fc806a.js" defer></script>
    49 49   </body>
    50 50  </html>
    51 51   
  • ■ ■ ■ ■ ■ ■
    tech/feature/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/18.7e30433a.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/18.7e30433a.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 1 lines
    28 28   GitHub
    29 29   <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar-hover-trigger"></div> <aside class="sidebar" style="display:none;"><!----> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">首页</a></div><div class="nav-item"><a href="/guide/introduce/" class="nav-link">使用手册</a></div><div class="nav-item"><a href="/tech/" class="nav-link router-link-active">技术博客</a></div> <a href="https://github.com/Dvkunion/SeaMoon" target="_blank" rel="noopener noreferrer" class="repo-link">
    30 30   GitHub
    31  - <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>写在前面</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/tech/position/" class="sidebar-link">月海的定位</a></li><li><a href="/tech/feature/" aria-current="page" class="active sidebar-link">月海的特性</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-2-0-beta-1" class="sidebar-link">SeaMoon 1.2.0-beta.1</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-1-3" class="sidebar-link">SeaMoon 1.1.3</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-1-2" class="sidebar-link">SeaMoon 1.1.2</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-1-1" class="sidebar-link">SeaMoon 1.1.1</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#_1-1-0-2022-09-27" class="sidebar-link">1.1.0 (2022-09-27)</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#_1-0-0-2022-09-09" class="sidebar-link">1.0.0 (2022-09-09)</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-1-0" class="sidebar-link">SeaMoon 1.1.0</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-0-0" class="sidebar-link">SeaMoon 1.0.0</a></li></ul></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>网络</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC">月海的特性<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h1 id="feature"><a href="#feature" class="header-anchor">#</a> FEATURE</h1> <h2 id="seamoon-1-2-0-beta-1"><a href="#seamoon-1-2-0-beta-1" class="header-anchor">#</a> SeaMoon 1.2.0-beta.1</h2> <blockquote><p>1.2.0 是一个临时版本,由于想要加入一些新的功能与适配,整体代码改动量较大。因此先拆分了部分功能代码。
     31 + <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>写在前面</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/tech/position/" class="sidebar-link">月海的定位</a></li><li><a href="/tech/feature/" aria-current="page" class="active sidebar-link">月海的特性</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-2-0-beta-1" class="sidebar-link">SeaMoon 1.2.0-beta.1</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-1-3" class="sidebar-link">SeaMoon 1.1.3</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-1-2" class="sidebar-link">SeaMoon 1.1.2</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-1-1" class="sidebar-link">SeaMoon 1.1.1</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#_1-1-0-2022-09-27" class="sidebar-link">1.1.0 (2022-09-27)</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#_1-0-0-2022-09-09" class="sidebar-link">1.0.0 (2022-09-09)</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-1-0" class="sidebar-link">SeaMoon 1.1.0</a></li><li class="sidebar-sub-header level2"><a href="/tech/feature/#seamoon-1-0-0" class="sidebar-link">SeaMoon 1.0.0</a></li></ul></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>网络</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg==">月海的特性<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h1 id="feature"><a href="#feature" class="header-anchor">#</a> FEATURE</h1> <h2 id="seamoon-1-2-0-beta-1"><a href="#seamoon-1-2-0-beta-1" class="header-anchor">#</a> SeaMoon 1.2.0-beta.1</h2> <blockquote><p>1.2.0 是一个临时版本,由于想要加入一些新的功能与适配,整体代码改动量较大。因此先拆分了部分功能代码。
    32 32  整体的稳定性上会有所欠缺,更多的是下一个版本的新功能尝试</p></blockquote> <h3 id="❤️-what-s-new"><a href="#❤️-what-s-new" class="header-anchor">#</a> ❤️ What's New</h3> <ul><li>📝 docs: 修正了首页的一些图床丢失 (#18)</li> <li>✨ feat(server): 新增隧道协议:grpc (#19)</li> <li>⚡️ zap(server): 将协议解码转移在服务端处理,轻量化客户端 (#17)</li> <li>🎨 refartor(server): 重构服务端模式,参考 gost 代理项目优化网络传输 (#15)</li> <li>🎨 refartor(client): 减轻客户端传递功能,做更多兼容性适配,配合server重构 (#20)</li> <li>🔧 fix(ci): 修正一些重构导致的ci错误(#16)(#21)(#22)</li></ul> <p><strong>Full Changelog</strong>: https://github.com/DVKunion/SeaMoon/compare/1.1.3...1.2.0-beta.1</p> <ul><li>75db770 feat: support grpc tunnel (#19)</li> <li>122435f fix: Dockerfile (#22)</li> <li>ae49ee0 fix: page ci dir changes (#16)</li> <li>be04fa1 fix: tag ci error (#21)</li> <li>f40e8f0 refactor: client (#20)</li> <li>22bc49c refactor: server code &amp;&amp; upgrade go mod (#15)</li> <li>ef2bf71 zap: change socks handle from client to server. (#17)</li></ul> <h2 id="seamoon-1-1-3"><a href="#seamoon-1-1-3" class="header-anchor">#</a> SeaMoon 1.1.3</h2> <h3 id="❤️-what-s-new-2"><a href="#❤️-what-s-new-2" class="header-anchor">#</a> ❤️ What's New</h3> <ul><li>📝 docs: 增加手册页面sitemap站点地图(#7)(#8)</li> <li>✨ feat(server): 修改了阿里云默认的部署资源类型(vcpu 0.1/mem 128),来降低普通用户使用的价格消费 (#10)</li> <li>✨ feat(server): 增加了sealos部署方案,用更加便宜的价格使用seamoon (#11)</li> <li>✨ feat(server): 增加了docker server, 现在可以通过docker来启动服务端 (#12)</li> <li>🔧 fix(config): 用更友好的方式来使用config,不再单一的通过域名特征来判断服务端地址类型。(#13)</li></ul> <p><strong>Full Changelog</strong>: https://github.com/DVKunion/SeaMoon/compare/1.1.2...1.1.3</p> <ul><li>41c5ce8 feat(docker): add docker server (#12)</li> <li>1414293 feat: low cpu &amp;&amp; mem cost (#10)</li> <li>99c98fd fix(client): use more friendly config (#13)</li></ul> <h2 id="seamoon-1-1-2"><a href="#seamoon-1-1-2" class="header-anchor">#</a> SeaMoon 1.1.2</h2> <h3 id="❤️-what-s-new-3"><a href="#❤️-what-s-new-3" class="header-anchor">#</a> ❤️ What's New</h3> <ul><li>🔧 fix(websocket): 修正了protocol error detect 时仍挂起gorouting导致卡死的问题 (#6)</li> <li>✨ feat(dockerfile): 增加了docker client, 现在可以通过docker来启动客户端 (#6)</li></ul> <p><strong>Full Changelog</strong>: https://github.com/DVKunion/SeaMoon/compare/1.1.1...1.1.2</p> <h2 id="seamoon-1-1-1"><a href="#seamoon-1-1-1" class="header-anchor">#</a> SeaMoon 1.1.1</h2> <h3 id="❤️-what-s-new-4"><a href="#❤️-what-s-new-4" class="header-anchor">#</a> ❤️ What's New</h3> <ul><li>🔧 fix(websocket): 修正了 websocket 在超出 32768 slice导致的 panic。 (#4)</li> <li>🔧 fix(websocket): 修整了 websocket 在 close 时写入 message 导致的 panic。 (#4)</li> <li>🔧 fix(websocket): 忽略了大量 websocket 链接导致的 1006 abnormal close 报错。 (#4)</li> <li>🔧 fix(s.yaml): 修整了 serverless-devs 工具编排文件,目前可以通过 serverless-devs 工具<code>s deploy</code>一件部署至阿里云。 (#4)</li> <li>🔧 fix(ci): 修整了 go-releaser ci 配置 (#3)</li> <li>🔧 fix(docs): 更新了 README.md 较为过时的使用手册。</li></ul> <h3 id="🌈-small-talk"><a href="#🌈-small-talk" class="header-anchor">#</a> 🌈 Small Talk</h3> <blockquote><p>Hi,各位,SeaMoon成功挤入2023Kcon兵器谱,使得整个项目获得了一批关注;在此感谢大家对SeaMoon项目的浓厚兴趣与支持,谢谢各位🙏<br>
    33 33  由于工作原因,以及个人的一些想法枯竭,项目于去年创建,直到现在目前也仅支持了阿里云一个demo QAQ,因此整体给人并不是一个较为完善的使用效果。1.1.1 版本后,我会尽量保证一些活跃性质的更新,以及一些比较有意思的想法demo迭代。<br>
    34 34  也欢迎对serverless感兴趣的安全小伙伴留言来交个朋友~</p></blockquote> <p><strong>Full Changelog</strong>: https://github.com/DVKunion/SeaMoon/compare/1.1.0...1.1.1</p> <ul><li>bc209a9 doc: update README.md</li> <li>a2e7360 fix: go-releaser ci config (#3)</li> <li>8f51e63 fix: readme.md</li> <li>fe658ff fix: some websocket error optimization (#4)</li> <li>c316527 hotfix: some docs and code format</li></ul> <h2 id="_1-1-0-2022-09-27"><a href="#_1-1-0-2022-09-27" class="header-anchor">#</a> 1.1.0 (2022-09-27)</h2> <h3 id="bug-fixes"><a href="#bug-fixes" class="header-anchor">#</a> Bug Fixes</h3> <ul><li>optimize connection (<a href="https://github.com/DVKunion/SeaMoon/commit/70dfc5ad4d25fd5b529097183c873d87ec37f126" target="_blank" rel="noopener noreferrer">70dfc5a<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>)</li> <li>optimize connection (<a href="https://github.com/DVKunion/SeaMoon/commit/2b416c0b106ad0a6a21aa3da838cf311061e9ef8" target="_blank" rel="noopener noreferrer">2b416c0<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>)</li></ul> <h2 id="_1-0-0-2022-09-09"><a href="#_1-0-0-2022-09-09" class="header-anchor">#</a> 1.0.0 (2022-09-09)</h2> <h3 id="features"><a href="#features" class="header-anchor">#</a> Features</h3> <ul><li><strong>ci:</strong> add build
    skipped 15 lines
    50 50   </li><li class="iconfont icon-yuedu">
    51 51   阅读模式
    52 52   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    53  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/18.7e30433a.js" defer></script>
     53 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/18.7e30433a.js" defer></script>
    54 54   </body>
    55 55  </html>
    56 56   
  • tech/index.html
    Unable to diff as some line is too long.
  • ■ ■ ■ ■ ■ ■
    tech/net/http/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/20.b52c206b.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/20.de3bad29.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 1 lines
    28 28   GitHub
    29 29   <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar-hover-trigger"></div> <aside class="sidebar" style="display:none;"><!----> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">首页</a></div><div class="nav-item"><a href="/guide/introduce/" class="nav-link">使用手册</a></div><div class="nav-item"><a href="/tech/" class="nav-link router-link-active">技术博客</a></div> <a href="https://github.com/Dvkunion/SeaMoon" target="_blank" rel="noopener noreferrer" class="repo-link">
    30 30   GitHub
    31  - <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>写在前面</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>网络</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/tech/net/http/" aria-current="page" class="active sidebar-link">HTTP</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/tech/net/http/#效果" class="sidebar-link">效果</a></li><li class="sidebar-sub-header level2"><a href="/tech/net/http/#原理" class="sidebar-link">原理</a></li></ul></li><li><a href="/tech/net/socks5/" class="sidebar-link">SOCKS5</a></li></ul></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABKFJREFUSA3tVl1oFVcQnrMbrak3QUgkya1akpJYcrUtIqW1JvFBE9LiQ5v6JmJpolbMg32rVrhgoYK0QiMY6i9Y6EMaW5D+xFJaTYItIuK2Kr3+BJNwkxBj05sQY3b3nM6cs2dv9t7NT/vQJw/sndk5M/PNzJkzewGerP+pAmy+ON8lLzUJgA8ZYxYIYZmGYRnctDaWvJJAmTtfP1pvXsBCCPP8QFcCaRkZYACgDZFO4stNIcBCajEOlmmC9XpJ9bAGCaPaPmzPl32dvLSVu3BWCTQs0XQQ6g0DYgwLIoAZbBCdW/i+781o1VVlm/410mw4h06Y7bIPHNyWDyL4FHkX03Q8SrzNhZTZriieckWt7cL6MM85YcLpsi/7O9/iXFT6MswI0DmmpkSaJ0qLxFIm3+i1THHB3zmBH3PYx9CcykcLOeQVVa7QtdxTgQgEleX2AjHYfwA+2ddV77ruGoJUbhGDI09YSNXyMpUt5ylOzxgbUmtOp7NmbNt8v3arjTBfYELmLUV+M+nSawNNAUqpT3ClJWg5I3BLT+cGW/DXNGCa6tx1aakCGEigArTn4TDIPdrXXYKCZNrHLMCOEPvHBlLQ99s9eHB7EB6NTki73CVPQ2F5MSx/uRQixfmq7rK0wYD8w8E905bnPDfwoWs/rfv93NWN/ZfvwsLIU7A09gxECyISeGJkHAau98L97tuw7NXnoPyNF8FcYGLGKsOs0mN3OEyec9esGW/ZEl945dTP34wlR2FZVQWU1q0Cw8Tr7p+hgLLNL0FPxx/Q35mA8aEUrH6nCgwEl0tn7wUiZYJnNRh6DK4UH/k0lfyrsBKdPVv/AriGIQcEDQZ65LBAGe2Rzui9Ybjz7XUppz1/uKBbyVPGkN3ZAeC6hr0x7Nr38N5+EqkoOm17xpoqR9ohQF55ERSvr4Dkr3chNfC3DMzGJlNBElW8w9nsGQvhNGIzDkXzCg8cLK951xHsFBlTJspJNi3ZFIMF2AeDV3q8DNOB+YHi6QTrChDIWDBRi5U5f+ZMfJLu3ccrqxtdxk4SKH336LFxSmkqefwU5T8fhdSdQf9IVKD6aNiwI/hnmcAZ91isYMJIaCUCx9W098+LgruikeTqzqqxKPUwqJyCPJiyemVVZBOijDGjD38Os0jOiSPL1z3SPjXNANbiNPXAdzTfukjjuknNBbyz3nwgTd3AVFqUJ5hpHlq9MveLnWwttUfoygBmvVjuikxND3znrhsELnZk7k+OjIGxeNEkomyLVta0xxn+HZhjBc4YZ/AFjHjz9u3xRZl2BN4aq9nFwWh16IrQ1aHHEd3j1+4/dB9OtH4e29A2H1DyHQRmOSfQZ1Fy7MHBTGB6J/Djq6p3OxyO2cB+4Car7v/o3GXgfAkj23+x9ID1Teoamo/SXcbvSf2PX7Vc8DdCmE1vN9di+32P9/5YR3vLnhCVGUWBjEkr3yh4H8v9CzmsbdhzOKzsJKM90iFdaTMjRPhGVsakRvOaRidljo6H6G7j+ctrJpsP+4COhDIl0La2+FS4+5mlocBaXY5QnGZysIBYoeSsl5qQzrSj/cgNrfuEzlWBfwA+EjrZyWUvpAAAAABJRU5ErkJggg==">HTTP<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h1 id="http"><a href="#http" class="header-anchor">#</a> HTTP</h1> <p>[TODO] 重构HTTP逻辑,通过net进行转发而不是上层的http</p> <p>HTTP代理 涉及了三个问题。</p> <ol><li>HOST 路由问题</li> <li>HTTPS 请求认证问题</li> <li>链式代理</li> <li>底层转发http.client.do()问题</li></ol> <p>依次在原理部分解释月海是如何处理上述问题的</p> <h2 id="效果"><a href="#效果" class="header-anchor">#</a> 效果</h2> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png" alt="speed"></p> <h2 id="原理"><a href="#原理" class="header-anchor">#</a> 原理</h2> <h3 id="host-路由问题"><a href="#host-路由问题" class="header-anchor">#</a> HOST 路由问题</h3> <p>最早接触云函数就是大佬们的文章:通过云函数进行动态IP池的代理。开启了大家探索云函数的历程。</p> <p>其基本原理在于: 通过本地代理拦截 http请求进行解析,将分析出来的参数提供给云函数执行。</p> <p>而云函数端仅提供一个类似request的方法,把获取到的参数重组HTTP请求,请求过后将数据返回而已。</p> <p>在设计月海时,我对这种模式实在是难以苟同,太不优雅了,先不提各种编码可能导致的问题,光是要在本地开一个client端,就已经很难受了。</p> <p>(月海最初的目标是实现本地端不需要任何工具,拿到一台机器,连接到云函数就能进行渗透工作)</p> <p>但是经过一番折腾,发现截止至目前,云函数的支持力度仅能够存在这一种利用的方式。</p> <p>问题就出在了HTTP的代理模式。</p> <p>我们正常使用HTTP代理(浏览器插件、burp、bash终端的<code>export HTTP_PROXY</code>)等,实际上是将HTTP数据包原封不动的发给了我们配置的代理服务器。</p> <p>实际上,等效于这种请求:
     31 + <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>写在前面</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>网络</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/tech/net/http/" aria-current="page" class="active sidebar-link">HTTP</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/tech/net/http/#效果" class="sidebar-link">效果</a></li><li class="sidebar-sub-header level2"><a href="/tech/net/http/#原理" class="sidebar-link">原理</a></li></ul></li><li><a href="/tech/net/socks5/" class="sidebar-link">SOCKS5</a></li></ul></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABGpJREFUSA3tVVtoXFUU3fvOI53UlmCaKIFmwEhsE7QK0ipFEdHEKpXaZGrp15SINsXUWvBDpBgQRKi0+KKoFeJHfZA+ED9KKoIU2gYD9UejTW4rVIzm0VSTziPzuNu1z507dibTTjL4U/DAzLn3nL3X2o91ziX6f9wMFdh6Jvbm9nNSV0msViVO6tN1Rm7NMu2OpeJ9lWBUTDxrJbYTS0hInuwciu9eLHlFxCLCZEk3MegsJmZ5K/JD6t7FkFdEvGUo1g7qJoG3MHImqRIn8/nzY1K9UPKKiJmtnUqHVE3Gbuay6vJE/N2FEmuxFjW2nUuE0yQXRRxLiTUAzs36zhZvOXJPdX850EVnnLZkB8prodQoM5JGj7Xk2mvC7JB8tG04Ef5PiXtG0UtxupRQSfTnBoCy554x18yJHI6I+G5Eru4LHmPJZEQsrvPUbMiA8G/WgMK7w7I+ez7++o2ANfbrjvaOl1tFMs+htG3IrZH9/hDX1Pr8Tc0UvH8tcX29KzAgIGcEkINyW5BF9x891hw6VYqgJHEk0huccS7vh3C6gTiODL+26huuBtbct8eZnqLML8PkxGYpuPZBqtqwkSjgc4mB5gbgig5i+y0UDK35LMxXisn9xQtK+nd26gTIHsHe/oblK/b29fUmN/8Y+9jAQrnBp56m1LcDlDp9irKTExSKduXJVWSqdBMA08pEJnEIOB3FPPMybu/oeV8zFeYN3xx576Q6RH+VmplE4ncQV5v+5rzSoyOU7PuEAg8g803PwBJ0CExno/jcMbN8tONYeOmHiuUNryvm3fRUy4tMPVLdAGkUhNWuggGrJcXPv+ouCjz0MKUHz1J2/E8IC9nqTabcxgaBYM0hPhD5Y65FsbxRQKxCQrDjDctW7PUM3HuZunFyifSAqEfuzCp48Il24luWUWZoyJCaPR82jE0+kFA643wRFVni4RYSq3ohJO2pZ7B5dO4xkDWbEpossJPLSrPjYID8rS2UHTlvyNxqIGsg674XJJ7vnh5L7PNwC4hh2sjCI96mzszOTpxLF0T7l88Yz7lAuK6OnL8gXLOnTvpzSb22YG8W7us3jSebFHeeqnXRG1vt+MoUM84LQIBmMsCTAcOauTh0T0l0neQK7m2bLMt2mGxU3HYssS0J2cdv5wljlPsrIuZLAG/2DOZIXgCYT8uMGZN+e2kSirfxZOPCsC0f24nTZzspnVn9VePS1Z5vubmAGGXG8ZFno9Hel0yfA5ZPhF7Dh972BQJ2qCpgH67lmWtBYbvk6sz02wjky2vXyz0XErP/kFB619js1BtwfOV4OPRqOQBjy3Qbk18vigUPPSD5ceHnwck7W9bhAqZdd7SuG7w4/P2F/GaJh8c7e9qgow+Q7cGBo+98WsLkuktFqiZabtXuQTu/Y5ETbR0v7tNSFnvrmu6pjdoan2KjMu8q/Hmj1EfCO2ZGfEIbIXKUlw8qaX9/b2oeSJmFksSeT/Fn0V3nSypChh4Gjh74ybO9aeZ/AN2dwciu2/MhAAAAAElFTkSuQmCC">HTTP<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h1 id="http"><a href="#http" class="header-anchor">#</a> HTTP</h1> <p>[TODO] 重构HTTP逻辑,通过net进行转发而不是上层的http</p> <p>HTTP代理 涉及了三个问题。</p> <ol><li>HOST 路由问题</li> <li>HTTPS 请求认证问题</li> <li>链式代理</li> <li>底层转发http.client.do()问题</li></ol> <p>依次在原理部分解释月海是如何处理上述问题的</p> <h2 id="效果"><a href="#效果" class="header-anchor">#</a> 效果</h2> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png" alt="speed"></p> <h2 id="原理"><a href="#原理" class="header-anchor">#</a> 原理</h2> <h3 id="host-路由问题"><a href="#host-路由问题" class="header-anchor">#</a> HOST 路由问题</h3> <p>最早接触云函数就是大佬们的文章:通过云函数进行动态IP池的代理。开启了大家探索云函数的历程。</p> <p>其基本原理在于: 通过本地代理拦截 http请求进行解析,将分析出来的参数提供给云函数执行。</p> <p>而云函数端仅提供一个类似request的方法,把获取到的参数重组HTTP请求,请求过后将数据返回而已。</p> <p>在设计月海时,我对这种模式实在是难以苟同,太不优雅了,先不提各种编码可能导致的问题,光是要在本地开一个client端,就已经很难受了。</p> <p>(月海最初的目标是实现本地端不需要任何工具,拿到一台机器,连接到云函数就能进行渗透工作)</p> <p>但是经过一番折腾,发现截止至目前,云函数的支持力度仅能够存在这一种利用的方式。</p> <p>问题就出在了HTTP的代理模式。</p> <p>我们正常使用HTTP代理(浏览器插件、burp、bash终端的<code>export HTTP_PROXY</code>)等,实际上是将HTTP数据包原封不动的发给了我们配置的代理服务器。</p> <p>实际上,等效于这种请求:
    32 32  <code>curl -H &quot;HOST: Dest-HOST&quot; example.proxy.com</code></p> <p>但是在云函数的实现都是通过API网关来寻找对应的FC,来确定触发器到底是由哪个函数执行。</p> <p>而这就用到了这个HOST头字段,导致无法直接在云函数开启一个HTTP代理,用插件配置上使用。</p> <p>&quot;不要在已有的模式上造轮子&quot;, 因此,基于FC的特性,针对HTTP模式,就不再做更多思考与尝试了。</p> <p>这里仍可以做的,就是优化HTTP请求的优雅程度,比如,通信方式,字段规范,以及编码问题的处理。</p> <h3 id="https-请求认证问题"><a href="#https-请求认证问题" class="header-anchor">#</a> HTTPS 请求认证问题</h3> <p>其实基于上面的架构。HTTPS 的问题已经很好解决了。</p> <p>因为我们的 云函数HTTP代理,并不是一个实际意义上的代理,而是一个模拟代理。 云函数模拟的请求是可以发送https的。</p> <p>那么问题就变成了,如何信任我们的client端,参照大多proxy和burp的模式,可以通过信任根路径的证书来解决这个问题。</p> <p>可以参考这篇文章</p> <p><a href="https://www.lyyyuna.com/2018/03/16/http-proxy-https/" target="_blank" rel="noopener noreferrer">实现基于 HTTPS 代理的中间人攻击<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>HTTPS 迎刃而解。</p> <h3 id="链式代理"><a href="#链式代理" class="header-anchor">#</a> 链式代理</h3> <p>待开发</p> <h3 id="底层逻辑问题"><a href="#底层逻辑问题" class="header-anchor">#</a> 底层逻辑问题</h3> <p>月海测试beta版本,使用的方式是通过net.http 直接发送从header获取的完整路径请求。</p> <p>这和现有的一些工具逻辑完全一致。 但是在测试时,很容易出现:<code>http redirect request</code> 、 js/css加载失败或直接失效的场景,这相比socks5的舒适度差了一大截。</p> <p>因此,基于完美主义,后续将会重构一版底层net转发的逻辑。</p></div></div> <!----> <div class="page-edit"><!----> <!----> <!----></div> <div class="page-nav-wapper"><div class="page-nav-centre-wrap"><a href="/tech/feature/" class="page-nav-centre page-nav-centre-prev"><div class="tooltip">月海的特性</div></a> <a href="/tech/net/socks5/" class="page-nav-centre page-nav-centre-next"><div class="tooltip">SOCKS5</div></a></div> <div class="page-nav"><p class="inner"><span class="prev">
    33 33  
    34 34   <a href="/tech/feature/" class="prev">月海的特性</a></span> <span class="next"><a href="/tech/net/socks5/">SOCKS5</a>→
    skipped 10 lines
    45 45   </li><li class="iconfont icon-yuedu">
    46 46   阅读模式
    47 47   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    48  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/20.b52c206b.js" defer></script>
     48 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/20.de3bad29.js" defer></script>
    49 49   </body>
    50 50  </html>
    51 51   
  • ■ ■ ■ ■ ■ ■
    tech/net/socks5/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/21.80d708a6.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.b7bbc847.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/21.6e427a6c.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/17.61ce7228.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 1 lines
    28 28   GitHub
    29 29   <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar-hover-trigger"></div> <aside class="sidebar" style="display:none;"><!----> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link">首页</a></div><div class="nav-item"><a href="/guide/introduce/" class="nav-link">使用手册</a></div><div class="nav-item"><a href="/tech/" class="nav-link router-link-active">技术博客</a></div> <a href="https://github.com/Dvkunion/SeaMoon" target="_blank" rel="noopener noreferrer" class="repo-link">
    30 30   GitHub
    31  - <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>写在前面</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>网络</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/tech/net/http/" class="sidebar-link">HTTP</a></li><li><a href="/tech/net/socks5/" aria-current="page" class="active sidebar-link">SOCKS5</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/tech/net/socks5/#socks5-效果" class="sidebar-link">SOCKS5 效果</a></li><li class="sidebar-sub-header level2"><a href="/tech/net/socks5/#socks5-原理" class="sidebar-link">SOCKS5 原理</a></li></ul></li></ul></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABKFJREFUSA3tVl1oFVcQnrMbrak3QUgkya1akpJYcrUtIqW1JvFBE9LiQ5v6JmJpolbMg32rVrhgoYK0QiMY6i9Y6EMaW5D+xFJaTYItIuK2Kr3+BJNwkxBj05sQY3b3nM6cs2dv9t7NT/vQJw/sndk5M/PNzJkzewGerP+pAmy+ON8lLzUJgA8ZYxYIYZmGYRnctDaWvJJAmTtfP1pvXsBCCPP8QFcCaRkZYACgDZFO4stNIcBCajEOlmmC9XpJ9bAGCaPaPmzPl32dvLSVu3BWCTQs0XQQ6g0DYgwLIoAZbBCdW/i+781o1VVlm/410mw4h06Y7bIPHNyWDyL4FHkX03Q8SrzNhZTZriieckWt7cL6MM85YcLpsi/7O9/iXFT6MswI0DmmpkSaJ0qLxFIm3+i1THHB3zmBH3PYx9CcykcLOeQVVa7QtdxTgQgEleX2AjHYfwA+2ddV77ruGoJUbhGDI09YSNXyMpUt5ylOzxgbUmtOp7NmbNt8v3arjTBfYELmLUV+M+nSawNNAUqpT3ClJWg5I3BLT+cGW/DXNGCa6tx1aakCGEigArTn4TDIPdrXXYKCZNrHLMCOEPvHBlLQ99s9eHB7EB6NTki73CVPQ2F5MSx/uRQixfmq7rK0wYD8w8E905bnPDfwoWs/rfv93NWN/ZfvwsLIU7A09gxECyISeGJkHAau98L97tuw7NXnoPyNF8FcYGLGKsOs0mN3OEyec9esGW/ZEl945dTP34wlR2FZVQWU1q0Cw8Tr7p+hgLLNL0FPxx/Q35mA8aEUrH6nCgwEl0tn7wUiZYJnNRh6DK4UH/k0lfyrsBKdPVv/AriGIQcEDQZ65LBAGe2Rzui9Ybjz7XUppz1/uKBbyVPGkN3ZAeC6hr0x7Nr38N5+EqkoOm17xpoqR9ohQF55ERSvr4Dkr3chNfC3DMzGJlNBElW8w9nsGQvhNGIzDkXzCg8cLK951xHsFBlTJspJNi3ZFIMF2AeDV3q8DNOB+YHi6QTrChDIWDBRi5U5f+ZMfJLu3ccrqxtdxk4SKH336LFxSmkqefwU5T8fhdSdQf9IVKD6aNiwI/hnmcAZ91isYMJIaCUCx9W098+LgruikeTqzqqxKPUwqJyCPJiyemVVZBOijDGjD38Os0jOiSPL1z3SPjXNANbiNPXAdzTfukjjuknNBbyz3nwgTd3AVFqUJ5hpHlq9MveLnWwttUfoygBmvVjuikxND3znrhsELnZk7k+OjIGxeNEkomyLVta0xxn+HZhjBc4YZ/AFjHjz9u3xRZl2BN4aq9nFwWh16IrQ1aHHEd3j1+4/dB9OtH4e29A2H1DyHQRmOSfQZ1Fy7MHBTGB6J/Djq6p3OxyO2cB+4Car7v/o3GXgfAkj23+x9ID1Teoamo/SXcbvSf2PX7Vc8DdCmE1vN9di+32P9/5YR3vLnhCVGUWBjEkr3yh4H8v9CzmsbdhzOKzsJKM90iFdaTMjRPhGVsakRvOaRidljo6H6G7j+ctrJpsP+4COhDIl0La2+FS4+5mlocBaXY5QnGZysIBYoeSsl5qQzrSj/cgNrfuEzlWBfwA+EjrZyWUvpAAAAABJRU5ErkJggg==">SOCKS5<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h1 id="socks5"><a href="#socks5" class="header-anchor">#</a> SOCKS5</h1> <h2 id="socks5-效果"><a href="#socks5-效果" class="header-anchor">#</a> SOCKS5 效果</h2> <p>相比http代理更稳定,速度更快。</p> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png" alt="speed"></p> <h2 id="socks5-原理"><a href="#socks5-原理" class="header-anchor">#</a> SOCKS5 原理</h2> <h3 id="socks5-2"><a href="#socks5-2" class="header-anchor">#</a> SOCKS5</h3> <p>基础理论: <a href="https://xz.aliyun.com/t/9502" target="_blank" rel="noopener noreferrer">浅谈云函数的利用面<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>在云函数(FC)的限制下,大佬提出了一种通过vps建立起socks5隧道的模式,从模式上来看,更像是一种反向连接。</p> <p>但是这种模式,需要一台VPS。对于穷逼的脚本小子的我,实在是不够优雅。</p> <p>FC的不成熟的确限制了大部分的玩法,比如触发器种类,比如协议,比如端口限制等等。</p> <p>在这种大环境下,我们无力去变更云函数的生态(其实也有可能云函数并没有为我们这种使用方式进行设计),只能自寻出路。</p> <p>想要优雅的正向连接,只能在HTTP上做文章。</p> <p>突然联想到早些年,做安全服务时拿到了WebShell后如何进行内网渗透?这就想起了一个利器工具,也是我们今天的主角:</p> <p><a href="https://github.com/sensepost/reGeorg" target="_blank" rel="noopener noreferrer">reGeorg<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>这个工具提供了各种语言的脚本,能够通过HTTP隧道的方式,结合本地客户端,建立socks连接代理。</p> <p>他的原理其实是依赖于,socks属于一种建立在TCP层的接口,是对TCP/IP协议的封装,而在应用层的HTTP协议也是同样属于对TCP/IP协议的封装。</p> <p>通俗来说,socks就是爸爸,而HTTP只是他众多的接口调用实现方而已,相互之间的转化是存在某种方式的。</p> <p>举个例子,如python中的urllib库,底层就是使用sockets实现的HTTP。</p> <p>因此,我们云函数socks代理的模型就可以画出来了:</p> <p>用户 -&gt; socks -&gt; client -&gt; 转化为HTTP -&gt; FC云函数 -&gt; 解析HTTP -&gt; 发送socks</p> <p>用户 &lt;- 转化为socks &lt;- client &lt;- 转化为HTTP &lt;- FC云函数 &lt;- socks数据</p> <p>我们的client开启一个socks的监听,然后将监听到的数据转化为http请求发给fc处理, fc根据http提供的数据发起socks连接,获取数据。之后fc函数再将数据通过http
     31 + <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>写在前面</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>网络</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/tech/net/http/" class="sidebar-link">HTTP</a></li><li><a href="/tech/net/socks5/" aria-current="page" class="active sidebar-link">SOCKS5</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header level2"><a href="/tech/net/socks5/#socks5-效果" class="sidebar-link">SOCKS5 效果</a></li><li class="sidebar-sub-header level2"><a href="/tech/net/socks5/#socks5-原理" class="sidebar-link">SOCKS5 原理</a></li></ul></li></ul></section></li></ul> </aside> <div><main class="page"><div class="theme-vdoing-wrapper "><div class="placeholder"></div> <!----> <div class="content-wrapper"><div class="right-menu-wrapper"><div class="right-menu-margin"><div class="right-menu-title">目录</div> <div class="right-menu-content"></div></div></div> <h1><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAABH1JREFUSA3tVl1oHFUUPmdmd2ltklqbpJDiNnXFmgbFktho7YMPNiJSSZM0+CAYSkUELVhM6YuwIPpgoOKDqOBDC0XE2CQoNtQXBUFTTcCi+Wlh1V2TQExsUzcltd3M9Tt3ZjZzZ2fT+OJTL8yeM+eee757fmeJbq//KQL8X3DUSFOcfr7cRsRtxNQMWueeVzOkaITIGqQHNg5y8+jNW9ldM7A6nTpAjuolUikAwq7CE3WcM2RRDz+XGVgN3FptU/aUSlvq9Pa3iZ1+sgAqJyyAFqkipd9dqiwHF3P65YycLWc/6sqGrvoEoIp6DOFaX5h6+dnfjkWprwqsPk0dUGq5vySwDImC10KxFHgGL1SWoc92O3eVht09qdXNH11I2SsTsJYqMWzihqGMi+A+Garf3BAuuLI5oGlULyNfyB/HYNujwktOfRrMr5t77NmevqaUopx0grnKAyvVpmwUDB4x6FPXuGvYLTDwWsejwgtgkYKPqRJg8SV6xaiZ3ZTppGneS4yfH5/66fZSDHv+QZci/+h5c5UHtpy67JUqGppM0sh0Nc1dW6/N1W5Yoqat8/TU/VnadmdeW2PLLSyh0cvxBs3KbqTmwYPpxN4do/mzE8nEpvX/UMu2Wbp74zUAK5q6WkHns7V0eWkdPbPzd3rxkTGybadYySumVzhcaJFbs5UrEkQ/+CK8gF5dnh/6ciIZ73gwQ927L1IitoxKLXYP3SjYdOrHHfTZhRRlFyrorafPk20B3HPD1y2G3qKZME5Jcf3t/HUC13/8tSd++vqFveMUTwAUxSUFI1QekR1+bIze3D9MF2aq6cPvG72CgnldWCFqyRw3lwH8ZMerjTD9ElRO7Gv44wNpC90aASqGfVlz/Rx17srQ57/UU26hkhQqUB7dBR71WmzQhHUnblGmVOEw0jhbV1n9OlXUDCIRGaNV5Jp43N516fN7JmnTHdfp7Hgy0luO4aMhtkLL8Bi3bUWYvzh5Mn1dTxrL6QmGuRhGL/TiTTxRoEdTszSaq9GR0NGA3KdkOz3hqSV3MIDhQ5IVX/Ivx3umBti2es2h4eZby7x8br1rkf7Mo90AqC8aQ3sJeNzqFRu+vSANAQe3PL7l0HGOAdwDCeZYvNKeoZp1Qfs6Aipndh86HmFRi0LAnEO47wsqM6cdfjh3jBPUzhZy7nvlUfFsamED1VQt6aISHVymXZ/B2aCtIG8AI8xfobj2d3en1wWVhOeHELKmLQ1s211s88comkv4UCwWyF787mJdYXtNfhKAXVqnKTq8QZvGAGGOfaTo5pGZ/PwbUCr5+DPr/1J92JNHr9aOl/F3iI5+O1nfybsGxoimvZ3ViWSluDITw3P37mypheDIPY0tw7+O/5ApbkYw+zpfaUVu32Pi98+defdUhEpZkRFq0aqyNh9FuL9hpYbEm6iwi0z2REd09ZmyENEbuhjDWzKvZXTqKYaBIr3tt5kuPtQBZFvEUwHt60vfCNu41XsksH9Ij1BMMz1Y0OOunHNShFIP5868g5zeXmuLwL9T4b6Q2+KejgAAAABJRU5ErkJggg==">SOCKS5<!----></h1> <!----> <div class="theme-vdoing-content content__default"><h1 id="socks5"><a href="#socks5" class="header-anchor">#</a> SOCKS5</h1> <h2 id="socks5-效果"><a href="#socks5-效果" class="header-anchor">#</a> SOCKS5 效果</h2> <p>相比http代理更稳定,速度更快。</p> <p><img src="https://seamoon.oss-cn-hangzhou.aliyuncs.com/7bfff588795a4e41b488694ad4eb5153.png" alt="speed"></p> <h2 id="socks5-原理"><a href="#socks5-原理" class="header-anchor">#</a> SOCKS5 原理</h2> <h3 id="socks5-2"><a href="#socks5-2" class="header-anchor">#</a> SOCKS5</h3> <p>基础理论: <a href="https://xz.aliyun.com/t/9502" target="_blank" rel="noopener noreferrer">浅谈云函数的利用面<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>在云函数(FC)的限制下,大佬提出了一种通过vps建立起socks5隧道的模式,从模式上来看,更像是一种反向连接。</p> <p>但是这种模式,需要一台VPS。对于穷逼的脚本小子的我,实在是不够优雅。</p> <p>FC的不成熟的确限制了大部分的玩法,比如触发器种类,比如协议,比如端口限制等等。</p> <p>在这种大环境下,我们无力去变更云函数的生态(其实也有可能云函数并没有为我们这种使用方式进行设计),只能自寻出路。</p> <p>想要优雅的正向连接,只能在HTTP上做文章。</p> <p>突然联想到早些年,做安全服务时拿到了WebShell后如何进行内网渗透?这就想起了一个利器工具,也是我们今天的主角:</p> <p><a href="https://github.com/sensepost/reGeorg" target="_blank" rel="noopener noreferrer">reGeorg<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>这个工具提供了各种语言的脚本,能够通过HTTP隧道的方式,结合本地客户端,建立socks连接代理。</p> <p>他的原理其实是依赖于,socks属于一种建立在TCP层的接口,是对TCP/IP协议的封装,而在应用层的HTTP协议也是同样属于对TCP/IP协议的封装。</p> <p>通俗来说,socks就是爸爸,而HTTP只是他众多的接口调用实现方而已,相互之间的转化是存在某种方式的。</p> <p>举个例子,如python中的urllib库,底层就是使用sockets实现的HTTP。</p> <p>因此,我们云函数socks代理的模型就可以画出来了:</p> <p>用户 -&gt; socks -&gt; client -&gt; 转化为HTTP -&gt; FC云函数 -&gt; 解析HTTP -&gt; 发送socks</p> <p>用户 &lt;- 转化为socks &lt;- client &lt;- 转化为HTTP &lt;- FC云函数 &lt;- socks数据</p> <p>我们的client开启一个socks的监听,然后将监听到的数据转化为http请求发给fc处理, fc根据http提供的数据发起socks连接,获取数据。之后fc函数再将数据通过http
    32 32  返回byte字节码,client端接收到响应,再根据协议降级为socks。</p> <p>理论存在,实践开始。 根据原理分析,我们要做的事情就比较明显了:</p> <ul><li>在云函数部署好一个接受HTTP响应,并转化为socks连接的服务</li> <li>在本地启动client端,监听一个socks端口,将该端口的数据按照协议转化为HTTP请求发送给云函数</li></ul> <p>参考<a href="https://github.com/sensepost/reGeorg" target="_blank" rel="noopener noreferrer">reGeorg<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>
    33 33  和他的的重构版<a href="https://github.com/L-codes/Neo-reGeorg" target="_blank" rel="noopener noreferrer">Neo-reGeorg<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>, 复制了一个GO版本的客户端和服务端。</p> <p>也就是说,你也可以选择连接 reGeorg 的shell作为http代理,启动一个本地的socks连接。</p> <p>以PHP为例,reGeorg将状态、IO全部存储在了session内。</p> <p>我们的云函数是没有状态的,所以不能够通过这种断开连接的方式再重新找到状态进行读取,要重新寻找出路。</p> <p>经过一周的改写,我发现虽然思路可行,但是reGeorg的项目实在太老了,而重构版Neo-reGeorg又因为各种加密等原因离谱的乱,导致最终socks建立起的连接无法再次read的相应的socks。</p> <p>终于在苦找下,发现了大佬做了这样的事情:将客户端socks5升级至http/https/websocket等应用层协议,同时还提供了UDP的解决方案!</p> <p><a href="https://github.com/luyuhuang/subsocks" target="_blank" rel="noopener noreferrer">subsocks<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>但是测试发现,http触发器存在最大连接超时时间,虽然阿里云已经把这个数值调整到了24小时,依旧存在隐患,不够完美。</p> <p>于是,替换者websockets触发器完美出现,解决了所有的问题。</p> <p>因为本身websockets就是一种类sockets的http连接,现在我们只要通过 <code>io.copy</code> 将双端的输入输出绑定,即可构成通信信道。</p> <p>最后就是处理好断开连接问题,来防止异常断开导致的panic,和节约云函数计费成本。</p> <p>最终达成上图效果。</p></div></div> <!----> <div class="page-edit"><!----> <!----> <!----></div> <div class="page-nav-wapper"><div class="page-nav-centre-wrap"><a href="/tech/net/http/" class="page-nav-centre page-nav-centre-prev"><div class="tooltip">HTTP</div></a> <!----></div> <div class="page-nav"><p class="inner"><span class="prev">
    34 34  
    skipped 10 lines
    45 45   </li><li class="iconfont icon-yuedu">
    46 46   阅读模式
    47 47   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    48  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/21.80d708a6.js" defer></script>
     48 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/21.6e427a6c.js" defer></script>
    49 49   </body>
    50 50  </html>
    51 51   
  • ■ ■ ■ ■ ■ ■
    tech/position/index.html
    skipped 19 lines
    20 20   <meta name="keywords" content="serverless,proxy,pentest,seamoon">
    21 21   <meta name="baidu-site-verification" content="codeva-vXPumeNBPL">
    22 22  
    23  - <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.d6c45fef.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/17.b7bbc847.js" as="script"><link rel="prefetch" href="/assets/js/10.a4a9751e.js"><link rel="prefetch" href="/assets/js/11.6c1daafb.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.1d5d06a9.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.c6b37b92.js"><link rel="prefetch" href="/assets/js/20.b52c206b.js"><link rel="prefetch" href="/assets/js/21.80d708a6.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.835ed35b.js"><link rel="prefetch" href="/assets/js/9.f5f06f49.js">
     23 + <link rel="preload" href="/assets/css/0.styles.a86b1238.css" as="style"><link rel="preload" href="/assets/js/app.a6ba39cf.js" as="script"><link rel="preload" href="/assets/js/2.1d6ed513.js" as="script"><link rel="preload" href="/assets/js/17.61ce7228.js" as="script"><link rel="prefetch" href="/assets/js/10.70dc4e3c.js"><link rel="prefetch" href="/assets/js/11.40c5b22c.js"><link rel="prefetch" href="/assets/js/12.db8d0031.js"><link rel="prefetch" href="/assets/js/13.58c46386.js"><link rel="prefetch" href="/assets/js/14.8b11eab1.js"><link rel="prefetch" href="/assets/js/15.b23212dc.js"><link rel="prefetch" href="/assets/js/16.14c5bdbf.js"><link rel="prefetch" href="/assets/js/18.7e30433a.js"><link rel="prefetch" href="/assets/js/19.8723ada4.js"><link rel="prefetch" href="/assets/js/20.de3bad29.js"><link rel="prefetch" href="/assets/js/21.6e427a6c.js"><link rel="prefetch" href="/assets/js/3.6cbf2256.js"><link rel="prefetch" href="/assets/js/4.cd3de622.js"><link rel="prefetch" href="/assets/js/5.03fc806a.js"><link rel="prefetch" href="/assets/js/6.9c59c54c.js"><link rel="prefetch" href="/assets/js/7.8043363e.js"><link rel="prefetch" href="/assets/js/8.edc0f658.js"><link rel="prefetch" href="/assets/js/9.9fc56d53.js">
    24 24   <link rel="stylesheet" href="/assets/css/0.styles.a86b1238.css">
    25 25   </head>
    26 26   <body class="theme-mode-light">
    skipped 15 lines
    42 42   </li><li class="iconfont icon-yuedu">
    43 43   阅读模式
    44 44   </li></ul></div></div> <!----> <!----> <!----></div><div class="global-ui"></div></div>
    45  - <script src="/assets/js/app.d6c45fef.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/17.b7bbc847.js" defer></script>
     45 + <script src="/assets/js/app.a6ba39cf.js" defer></script><script src="/assets/js/2.1d6ed513.js" defer></script><script src="/assets/js/17.61ce7228.js" defer></script>
    46 46   </body>
    47 47  </html>
    48 48   
Please wait...
Page is in error, reload to recover