[{"data":1,"prerenderedAt":1001},["ShallowReactive",2],{"navigation_docs_zh_cn":3,"-zh-cn-application-sshwifty-plus":86,"-zh-cn-application-sshwifty-plus-surround":996},[4,31,44,70],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":30},"入门","i-lucide-rocket","\u002Fzh-cn\u002Fgetting-started","zh-cn\u002F1.getting-started",[10,15,20,25],{"title":11,"path":12,"stem":13,"icon":14},"介绍","\u002Fzh-cn\u002Fgetting-started\u002Fintroduction","zh-cn\u002F1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"API和接口","\u002Fzh-cn\u002Fgetting-started\u002Fapi","zh-cn\u002F1.getting-started\u002F3.api","i-lucide-braces",{"title":21,"path":22,"stem":23,"icon":24},"应用","\u002Fzh-cn\u002Fgetting-started\u002Fapplication","zh-cn\u002F1.getting-started\u002F4.application","i-lucide-boxes",{"title":26,"path":27,"stem":28,"icon":29},"社区","\u002Fzh-cn\u002Fgetting-started\u002Fcommunity","zh-cn\u002F1.getting-started\u002F5.community","i-lucide-messages-square",false,{"title":16,"icon":19,"path":32,"stem":33,"children":34,"page":30},"\u002Fzh-cn\u002Fapi","zh-cn\u002F2.api",[35,40],{"title":36,"path":37,"stem":38,"icon":39},"图片URL转Base64","\u002Fzh-cn\u002Fapi\u002Fimage-to-base64","zh-cn\u002F2.api\u002F201.image-to-base64","i-lucide-brain",{"title":41,"path":42,"stem":43,"icon":39},"获取随机6657烂梗","\u002Fzh-cn\u002Fapi\u002Frandom-6657-meme","zh-cn\u002F2.api\u002F202.random-6657-meme",{"title":21,"icon":24,"path":45,"stem":46,"children":47,"page":30},"\u002Fzh-cn\u002Fapplication","zh-cn\u002F3.application",[48,53,57,61,65],{"title":49,"path":50,"stem":51,"icon":52},"MokuMoku","\u002Fzh-cn\u002Fapplication\u002Fmokumoku","zh-cn\u002F3.application\u002F201.mokumoku","i-lucide-app-window",{"title":54,"path":55,"stem":56,"icon":52},"TG贴纸转码工具","\u002Fzh-cn\u002Fapplication\u002Ftg-sticker","zh-cn\u002F3.application\u002F202.tg-sticker",{"title":58,"path":59,"stem":60,"icon":52},"Sshwifty Plus","\u002Fzh-cn\u002Fapplication\u002Fsshwifty-plus","zh-cn\u002F3.application\u002F203.sshwifty-plus",{"title":62,"path":63,"stem":64,"icon":52},"云剪贴板","\u002Fzh-cn\u002Fapplication\u002Fcloud-clipboard","zh-cn\u002F3.application\u002F204.cloud-clipboard",{"title":66,"path":67,"stem":68,"icon":69},"Hypixel加速IP","\u002Fzh-cn\u002Fapplication\u002Fhypixel-proxy","zh-cn\u002F3.application\u002F301.hypixel-proxy","i-lucide-component",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":30},"更多","i-lucide-ellipsis","\u002Fzh-cn\u002Fadvanced","zh-cn\u002F4.advanced",[76,81],{"title":77,"path":78,"stem":79,"icon":80},"隐私政策","\u002Fzh-cn\u002Fadvanced\u002Fprivacy-policy","zh-cn\u002F4.advanced\u002F1.privacy-policy","i-lucide-shield-check",{"title":82,"path":83,"stem":84,"icon":85},"更新日志","\u002Fzh-cn\u002Fadvanced\u002Fchangelog","zh-cn\u002F4.advanced\u002F2.changelog","i-lucide-logs",{"id":87,"title":58,"body":88,"description":988,"extension":989,"links":990,"meta":991,"navigation":992,"path":59,"seo":993,"stem":60,"__hash__":995},"docs_zh_cn\u002Fzh-cn\u002F3.application\u002F203.sshwifty-plus.md",{"type":89,"value":90,"toc":971},"minimark",[91,101,104,118,122,131,136,161,165,176,203,206,209,220,223,226,234,895,899,921,924,956,959,967],[92,93,94,95],"p",{},"开源仓库：",[96,97,98],"a",{"href":98,"rel":99},"https:\u002F\u002Fgithub.com\u002Fkrab-lab\u002Fsshwifty-plus",[100],"nofollow",[102,103],"hr",{},[105,106,107,108,112,113,117],"warning",{},"不建议使用其他人部署的服务，除非你能完全信任对方。他人只要保存了 ",[109,110,111],"code",{},"SSHWIFTY_KEY_ENCRYPTION_SECRET"," 就能够随时解密数据库，获得",[114,115,116],"strong",{},"你的服务器地址和SSH私钥","。建议自行部署该服务，并配合适当的Zero Trust访问控制。",[119,120,121],"h2",{"id":121},"功能变更",[92,123,124,125,130],{},"在原项目 ",[96,126,129],{"href":127,"rel":128},"https:\u002F\u002Fgithub.com\u002Fnirui\u002Fsshwifty",[100],"Sshwifty"," 的基础上做了如下改动。",[132,133,135],"h3",{"id":134},"workers与静态资源","Workers与静态资源",[137,138,139,147,154],"ul",{},[140,141,142,143,146],"li",{},"Cloudflare Worker同时托管静态UI，并处理 ",[109,144,145],{},"\u002Fsshwifty\u002Fsocket"," WebSocket SSH流量。",[140,148,149,150,153],{},"当前只支持SSH；Telnet、服务端Hooks、Socks5、服务端 ",[109,151,152],{},"file:\u002F\u002F"," 私钥读取不支持。",[140,155,156,157,160],{},"SSH客户端使用 ",[109,158,159],{},"ssh2","，并限制为Cloudflare Workers可兼容的算法组合。",[132,162,164],{"id":163},"github登录与账号密钥","GitHub登录与账号密钥",[92,166,167,168,171,172,175],{},"当 ",[109,169,170],{},"SSHWIFTY_AUTH_MODE"," 设置为 ",[109,173,174],{},"github"," 时，GitHub OAuth是必需登录方式。",[137,177,178,181,184,190,197],{},[140,179,180],{},"每个GitHub账号首次登录时，系统会创建一组Ed25519和RSA 4096位SSH密钥对。",[140,182,183],{},"用户能在账号窗口查看和复制公钥。",[140,185,186,187,189],{},"私钥使用 ",[109,188,111],{}," 加密后保存到Cloudflare D1。",[140,191,192,193,196],{},"SSH认证方式可以使用 ",[109,194,195],{},"Saved Key","，选择该选项时会使用托管的密钥连接远程服务器。",[140,198,199,200,202],{},"使用 ",[109,201,195],{}," 时，Worker先尝试Ed25519私钥，再尝试RSA私钥。",[132,204,205],{"id":205},"远程服务器记录",[92,207,208],{},"Connected before列表改为按GitHub账号保存到D1。",[137,210,211,214,217],{},[140,212,213],{},"SSH连接成功后自动保存远程服务器记录。",[140,215,216],{},"用户可以编辑或删除记录。",[140,218,219],{},"密码、上传的私钥和其他连接凭据不会保存到远程记录中。",[119,221,222],{"id":222},"部署",[92,224,225],{},"你需要准备：",[137,227,228,231],{},[140,229,230],{},"Cloudflare账号，并已启用Workers与D1。",[140,232,233],{},"Fork该仓库到自己的Github账号。",[235,236,237,241,274,277,284,420,429,435,439,458,518,523,530,545,549,556,574,582,589,595,599,607,611,622,626,632,750,756,760,766,775,856,859,879,885,892],"steps",{},[132,238,240],{"id":239},"在cloudflare-dashboard创建d1数据库","在Cloudflare Dashboard创建D1数据库",[242,243,244,247,258,268],"ol",{},[140,245,246],{},"登录Cloudflare Dashboard。",[140,248,249,250,253,254,257],{},"打开 ",[114,251,252],{},"存储与数据库","，进入 ",[114,255,256],{},"D1 SQLite数据库","。",[140,259,260,261,264,265,257],{},"点击 ",[114,262,263],{},"创建数据库","，名称填写 ",[109,266,267],{},"sshwifty",[140,269,270,271,257],{},"创建完成后复制数据库ID，这是一串UUID，类似 ",[109,272,273],{},"84fa53bb-3b6b-4d23-9f28-bfdcc23aa243",[132,275,276],{"id":276},"检查仓库配置",[92,278,279,280,283],{},"部署配置由根目录的 ",[109,281,282],{},"wrangler.jsonc"," 提供。连接仓库前确认其中的D1 binding使用：",[285,286,291],"pre",{"className":287,"code":288,"language":289,"meta":290,"style":290},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\"d1_databases\": [\n  {\n    \"binding\": \"DB\",\n    \"database_name\": \"sshwifty\",\n    \"database_id\": \"YOUR_D1_DATABASE_ID\",\n    \"migrations_dir\": \"worker\u002Fmigrations\"\n  }\n]\n","json","",[109,292,293,315,321,347,367,388,408,414],{"__ignoreMap":290},[294,295,298,302,306,308,312],"span",{"class":296,"line":297},"line",1,[294,299,301],{"class":300},"sMK4o","\"",[294,303,305],{"class":304},"sfazB","d1_databases",[294,307,301],{"class":300},[294,309,311],{"class":310},"sTEyZ",": ",[294,313,314],{"class":300},"[\n",[294,316,318],{"class":296,"line":317},2,[294,319,320],{"class":300},"  {\n",[294,322,324,327,331,333,336,339,342,344],{"class":296,"line":323},3,[294,325,326],{"class":300},"    \"",[294,328,330],{"class":329},"spNyl","binding",[294,332,301],{"class":300},[294,334,335],{"class":300},":",[294,337,338],{"class":300}," \"",[294,340,341],{"class":304},"DB",[294,343,301],{"class":300},[294,345,346],{"class":300},",\n",[294,348,350,352,355,357,359,361,363,365],{"class":296,"line":349},4,[294,351,326],{"class":300},[294,353,354],{"class":329},"database_name",[294,356,301],{"class":300},[294,358,335],{"class":300},[294,360,338],{"class":300},[294,362,267],{"class":304},[294,364,301],{"class":300},[294,366,346],{"class":300},[294,368,370,372,375,377,379,381,384,386],{"class":296,"line":369},5,[294,371,326],{"class":300},[294,373,374],{"class":329},"database_id",[294,376,301],{"class":300},[294,378,335],{"class":300},[294,380,338],{"class":300},[294,382,383],{"class":304},"YOUR_D1_DATABASE_ID",[294,385,301],{"class":300},[294,387,346],{"class":300},[294,389,391,393,396,398,400,402,405],{"class":296,"line":390},6,[294,392,326],{"class":300},[294,394,395],{"class":329},"migrations_dir",[294,397,301],{"class":300},[294,399,335],{"class":300},[294,401,338],{"class":300},[294,403,404],{"class":304},"worker\u002Fmigrations",[294,406,407],{"class":300},"\"\n",[294,409,411],{"class":296,"line":410},7,[294,412,413],{"class":300},"  }\n",[294,415,417],{"class":296,"line":416},8,[294,418,419],{"class":300},"]\n",[92,421,422,423,425,426,428],{},"将上一步的数据库ID写入 ",[109,424,374],{},"，提交到部署分支。可使用GitHub网页编辑器修改 ",[109,427,282],{}," 并提交。",[430,431,432,434],"note",{},[109,433,282],{}," 是Git部署的配置来源。不要在Dashboard和仓库配置中为同一个binding填写相互冲突的数据库。",[132,436,438],{"id":437},"在cloudflare中连接github仓库","在Cloudflare中连接GitHub仓库",[242,440,441,446,452,455],{},[140,442,249,443,257],{},[114,444,445],{},"Workers & Pages",[140,447,448,449,257],{},"点击创建应用，选择 ",[109,450,451],{},"Continue with Github",[140,453,454],{},"授权Cloudflare访问GitHub，选择包含本项目的仓库。",[140,456,457],{},"进入构建配置，填写以下内容：",[459,460,461,474],"table",{},[462,463,464],"thead",{},[465,466,467,471],"tr",{},[468,469,470],"th",{},"配置项",[468,472,473],{},"值",[475,476,477,488,498,508],"tbody",{},[465,478,479,483],{},[480,481,482],"td",{},"项目名称",[480,484,485],{},[109,486,487],{},"sshwifty-plus",[465,489,490,493],{},[480,491,492],{},"根目录",[480,494,495],{},[109,496,497],{},"\u002F",[465,499,500,503],{},[480,501,502],{},"构建命令",[480,504,505],{},[109,506,507],{},"npm run generate",[465,509,510,513],{},[480,511,512],{},"部署命令",[480,514,515],{},[109,516,517],{},"npx wrangler deploy",[242,519,520],{"start":369},[140,521,522],{},"保存并启动首次部署。",[92,524,525,526,529],{},"部署后，在Worker的 ",[114,527,528],{},"绑定"," 中确认存在：",[137,531,532,535,540],{},[140,533,534],{},"类型：D1数据库",[140,536,537,538],{},"名称：",[109,539,341],{},[140,541,542,543],{},"值：",[109,544,267],{},[132,546,548],{"id":547},"在github创建oauth-app","在GitHub创建OAuth App",[92,550,551,552,555],{},"在对应Worker的",[109,553,554],{},"域","中复制生产URL，或添加一个自定义域。",[242,557,558,566,571],{},[140,559,560,561,257],{},"打开GitHub的 ",[96,562,565],{"href":563,"rel":564},"https:\u002F\u002Fgithub.com\u002Fsettings\u002Fdevelopers",[100],"Settings → Developer settings → OAuth Apps",[140,567,260,568,257],{},[109,569,570],{},"New OAuth App",[140,572,573],{},"将Authorization callback URL设置为：",[285,575,580],{"className":576,"code":578,"language":579,"meta":290},[577],"language-text","https:\u002F\u002FYOUR_WORKER_DOMAIN\u002Fsshwifty\u002Fauth\u002Fgithub\u002Fcallback\n","text",[109,581,578],{"__ignoreMap":290},[92,583,584,585,588],{},"例如Worker域名为 ",[109,586,587],{},"https:\u002F\u002Fsshwifty.example.com","，callback URL必须是：",[285,590,593],{"className":591,"code":592,"language":579,"meta":290},[577],"https:\u002F\u002Fsshwifty.example.com\u002Fsshwifty\u002Fauth\u002Fgithub\u002Fcallback\n",[109,594,592],{"__ignoreMap":290},[596,597,598],"tip",{},"推荐使用自定义域。",[242,600,601],{"start":349},[140,602,260,603,606],{},[109,604,605],{},"Generate a new client secret","，记录GitHub OAuth App的Client ID与Client Secret，下一步要填写到Cloudflare Dashboard。",[132,608,610],{"id":609},"在dashboard填写variables和secrets","在Dashboard填写Variables和Secrets",[92,612,613,614,617,618,621],{},"首次部署后，打开对应Worker的 ",[114,615,616],{},"设置"," → ",[114,619,620],{},"变量与密钥","，填写以下值。",[623,624,625],"h4",{"id":625},"普通变量",[596,627,628,629,631],{},"这些变量已经在 ",[109,630,282],{}," 内声明，不需要手动添加，你可以根据需要修改。",[459,633,634,646],{},[462,635,636],{},[465,637,638,641,643],{},[468,639,640],{},"名称",[468,642,473],{},[468,644,645],{},"说明",[475,647,648,661,676,691,707,722,737],{},[465,649,650,654,658],{},[480,651,652],{},[109,653,170],{},[480,655,656],{},[109,657,174],{},[480,659,660],{},"要求GitHub登录",[465,662,663,668,673],{},[480,664,665],{},[109,666,667],{},"SSHWIFTY_DIAL_TIMEOUT",[480,669,670],{},[109,671,672],{},"120",[480,674,675],{},"SSH连接超时，单位秒",[465,677,678,683,688],{},[480,679,680],{},[109,681,682],{},"SSHWIFTY_HEARTBEAT_TIMEOUT",[480,684,685],{},[109,686,687],{},"10",[480,689,690],{},"心跳间隔，单位秒",[465,692,693,698,704],{},[480,694,695],{},[109,696,697],{},"SSHWIFTY_ALLOWED_HOSTS",[480,699,700,701],{},"例如 ",[109,702,703],{},"ssh.example.com:22,10.0.0.10:2222",[480,705,706],{},"填写后只能连接指定的主机和端口，暂不支持通配符和网段",[465,708,709,714,719],{},[480,710,711],{},[109,712,713],{},"SSHWIFTY_PUBLIC_ACCESS",[480,715,716],{},[109,717,718],{},"true",[480,720,721],{},"允许无需密码即可进入Sshwifty入口",[465,723,724,729,734],{},[480,725,726],{},[109,727,728],{},"SSHWIFTY_PRESETS",[480,730,731],{},[109,732,733],{},"[]",[480,735,736],{},"SSH preset JSON",[465,738,739,744,747],{},[480,740,741],{},[109,742,743],{},"SSHWIFTY_SERVER_MESSAGE",[480,745,746],{},"任意提示文本",[480,748,749],{},"可选",[92,751,752,753,755],{},"为避免Dashboard值与仓库配置不一致，建议将长期固定的非敏感值提交到 ",[109,754,282],{},"；将环境专属值通过Dashboard管理。",[623,757,759],{"id":758},"secrets","Secrets",[105,761,762,763,765],{},"不要在任何地方暴露这些值，更不要将这些值写入 ",[109,764,282],{}," ！",[92,767,199,768,617,771,774],{},[114,769,770],{},"添加",[114,772,773],{},"密钥"," 添加以下值：",[459,776,777,789],{},[462,778,779],{},[465,780,781,783,786],{},[468,782,640],{},[468,784,785],{},"值来源",[468,787,788],{},"用途",[475,790,791,804,816,832,845],{},[465,792,793,798,801],{},[480,794,795],{},[109,796,797],{},"GITHUB_CLIENT_ID",[480,799,800],{},"GitHub OAuth App的Client ID",[480,802,803],{},"GitHub登录必需",[465,805,806,811,814],{},[480,807,808],{},[109,809,810],{},"GITHUB_CLIENT_SECRET",[480,812,813],{},"GitHub OAuth App的Client Secret",[480,815,803],{},[465,817,818,823,826],{},[480,819,820],{},[109,821,822],{},"SSHWIFTY_SHARED_KEY",[480,824,825],{},"自行设置一个密码",[480,827,828,829,831],{},"可选，当 ",[109,830,713],{}," 禁用时，要求输入密码才能使用Sshwifty",[465,833,834,839,842],{},[480,835,836],{},[109,837,838],{},"SSHWIFTY_SESSION_SECRET",[480,840,841],{},"自行生成的高强度随机值",[480,843,844],{},"签名session与OAuth state cookie",[465,846,847,851,853],{},[480,848,849],{},[109,850,111],{},[480,852,841],{},[480,854,855],{},"加密D1中的SSH私钥",[92,857,858],{},"对于后两个值，建议生成至少32字节的随机字符串后粘贴到Dashboard，并且它们必须不同。",[92,860,861,862,867,868,871,872,871,875,878],{},"推荐使用 ",[96,863,866],{"href":864,"rel":865},"https:\u002F\u002Fpswd.software",[100],"PSWD by MAZE"," ，勾选 ",[109,869,870],{},"Include Uppercase Letters",", ",[109,873,874],{},"Include Lowercase Letters",[109,876,877],{},"Include Numbers"," 。",[105,880,881,882,884],{},"轮换 ",[109,883,838],{}," 会使所有用户重新登录。",[886,887,888,889,891],"caution",{},"不要丢失或随意轮换 ",[109,890,111],{},"。丢失后，D1中已有的托管SSH私钥无法解密。",[92,893,894],{},"保存变量或secrets后，在Dashboard里重试部署或向GitHub推送一次空提交以创建新的Worker版本。",[119,896,898],{"id":897},"首次部署后的d1-处理","首次部署后的D1 处理",[242,900,901,910,915,918],{},[140,902,903,904,906,907,909],{},"确认最新部署已完成，并且 ",[109,905,341],{}," 绑定指向正确的 ",[109,908,267],{}," D1数据库。",[140,911,249,912,257],{},[109,913,914],{},"https:\u002F\u002FYOUR_WORKER_DOMAIN\u002Fsshwifty\u002F",[140,916,917],{},"点击Sign in with GitHub并完成授权。",[140,919,920],{},"OAuth callback会自动执行当前v1 schema的建表自检。",[119,922,923],{"id":923},"部署验证",[242,925,926,930,936,939,945,950,953],{},[140,927,249,928,257],{},[109,929,914],{},[140,931,260,932,935],{},[109,933,934],{},"Sign in with GitHub"," 并完成OAuth授权。",[140,937,938],{},"打开右上角账号菜单，复制Ed25519或RSA公钥。",[140,940,941,942,257],{},"将公钥写入目标服务器用户的 ",[109,943,944],{},"~\u002F.ssh\u002Fauthorized_keys",[140,946,947,948,257],{},"新建SSH连接，在Authentication中选择 ",[109,949,195],{},[140,951,952],{},"确认服务器指纹后，验证shell能打开。",[140,954,955],{},"再次打开连接窗口，确认远程服务器已出现在Connected before；编辑和删除操作应在刷新后保留。",[119,957,958],{"id":958},"遇到问题",[92,960,961,962,257],{},"请提交",[96,963,966],{"href":964,"rel":965},"https:\u002F\u002Fgithub.com\u002Fkrab-lab\u002Fsshwifty-plus\u002Fissues",[100],"Issue",[968,969,970],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":290,"searchDepth":317,"depth":317,"links":972},[973,978,985,986,987],{"id":121,"depth":317,"text":121,"children":974},[975,976,977],{"id":134,"depth":323,"text":135},{"id":163,"depth":323,"text":164},{"id":205,"depth":323,"text":205},{"id":222,"depth":317,"text":222,"children":979},[980,981,982,983,984],{"id":239,"depth":323,"text":240},{"id":276,"depth":323,"text":276},{"id":437,"depth":323,"text":438},{"id":547,"depth":323,"text":548},{"id":609,"depth":323,"text":610},{"id":897,"depth":317,"text":898},{"id":923,"depth":317,"text":923},{"id":958,"depth":317,"text":958},"通过网页建立SSH连接，并自动管理你的SSH密钥，可以自托管于Cloudflare Worker，无需服务器。","md",null,{},{"icon":52},{"description":994,"title":58},"一个WebSSH应用，可以使用Cloudflare Worker自行部署。","RFcul1wNun-1Q2iceouBQ2d7PPa-fzV7VVfKSJ9j7EI",[997,999],{"title":54,"path":55,"stem":56,"description":998,"icon":52,"children":-1},"简单的web应用，能够自动批量将视频或GIF动图转换成TG要求的格式。",{"title":62,"path":63,"stem":64,"description":1000,"icon":52,"children":-1},"加密的跨设备剪贴板，无需登录，无服务器设计。",1783612487933]