PROJECT MOGFACE微信小程序开发实战:AI功能集成与云调用指南
PROJECT MOGFACE微信小程序开发实战AI功能集成与云调用指南最近在做一个智能小程序项目需要集成AI对话和图像生成能力。调研了一圈发现PROJECT MOGFACE提供的模型能力挺全面的正好可以满足需求。但怎么把它和小程序结合起来特别是处理网络请求和用户体验这里面有不少门道。今天我就结合自己的实战经验聊聊怎么在微信小程序里顺畅地调用PROJECT MOGFACE的AI能力。我会从界面设计、云函数调用、交互逻辑到性能优化一步步带你走完整个流程最后还会分享一个可运行的小程序demo。1. 为什么要在小程序里集成AI你可能会有疑问现在AI应用这么多为什么还要费劲在小程序里做集成直接让用户去网页端或者用App不就好了吗其实原因很简单场景和便利性。微信小程序最大的优势就是“即用即走”用户不需要下载安装扫个码或者搜一下就能用。对于很多轻量级的AI应用场景比如智能客服用户在浏览商品时随时可以唤出AI助手咨询。创意工具快速生成营销文案、朋友圈配图。学习助手遇到不懂的问题拍个照或者输入文字就能得到解答。这些场景下用户的需求是碎片化、即时性的。让他们专门打开一个网站或者下载App门槛就高了。小程序正好填补了这个空白把AI能力无缝嵌入到用户最熟悉的微信环境里。而PROJECT MOGFACE提供了丰富的模型从文本对话到图像生成都能覆盖通过云函数调用也很方便非常适合作为小程序的后端AI引擎。2. 小程序前端设计一个友好的AI交互界面好的体验从界面开始。AI功能的交互和普通表单提交不太一样用户需要看到“过程”而不仅仅是结果。2.1 核心页面布局对于集成AI功能的小程序我建议至少包含两个核心页面对话/输入页用户在这里输入问题或描述。结果展示页展示AI生成的文本、图片或对话历史。以智能对话为例一个基础的页面结构可以这样设计!-- pages/chat/chat.wxml -- view classchat-container !-- 对话历史区域 -- scroll-view classchat-history scroll-y scroll-into-view{{toView}} scroll-with-animation block wx:for{{messages}} wx:keyindex view classmessage-item {{item.role}} view classavatar{{item.role user ? 我 : AI}}/view view classbubble{{item.content}}/view !-- 如果是图片消息这里可以展示图片 -- image wx:if{{item.type image}} src{{item.content}} modewidthFix classgenerated-image/image /view /block !-- 加载指示器 -- view wx:if{{isLoading}} classloading-indicator textAI正在思考中.../text view classtyping-dots view classdot/view view classdot/view view classdot/view /view /view /scroll-view !-- 底部输入区域 -- view classinput-area input value{{inputValue}} bindinputonInput placeholder请输入您的问题... confirm-typesend bindconfirmsendMessage disabled{{isLoading}} / button classsend-btn bindtapsendMessage disabled{{!inputValue.trim() || isLoading}}发送/button !-- 扩展功能按钮如图片生成 -- button classextend-btn bindtapswitchToImageMode生成图片/button /view /view这个布局的关键点在于滚动区域对话内容多了要能自动滚动最新的消息要能出现在视野里通过scroll-into-view实现。角色区分用不同的样式区分用户消息和AI回复让对话脉络清晰。状态反馈当AI“正在思考”时通过加载动画和禁用输入框给用户明确的等待提示避免重复提交。2.2 状态管理与用户体验AI请求通常需要几秒甚至更长时间这段时间的用户体验至关重要。// pages/chat/chat.js Page({ data: { messages: [], // 对话历史 inputValue: , // 输入框内容 isLoading: false, // 是否正在请求中 toView: , // 控制滚动到哪条消息 }, onInput(e) { this.setData({ inputValue: e.detail.value }); }, async sendMessage() { const userInput this.data.inputValue.trim(); if (!userInput || this.data.isLoading) return; // 1. 清空输入框添加用户消息到历史 this.setData({ inputValue: , isLoading: true, messages: [...this.data.messages, { role: user, content: userInput }] }); // 2. 滚动到底部 this.scrollToBottom(); try { // 3. 调用云函数 const res await wx.cloud.callFunction({ name: callMogfaceAI, data: { type: text, // 请求文本生成 prompt: userInput } }); // 4. 处理成功响应 const aiReply res.result?.content || 抱歉我暂时无法回答这个问题。; this.setData({ messages: [...this.data.messages, { role: assistant, content: aiReply }], isLoading: false }); } catch (error) { // 5. 处理错误 console.error(调用AI失败:, error); this.setData({ messages: [...this.data.messages, { role: assistant, content: 网络似乎不太稳定请稍后再试。 }], isLoading: false }); } // 6. 再次滚动到底部展示AI回复 this.scrollToBottom(); }, scrollToBottom() { // 简单实现设置toView为最后一条消息的id const lastIndex this.data.messages.length - 1; if (lastIndex 0) { // 这里假设每条消息有一个唯一id实践中可以用时间戳或索引 this.setData({ toView: msg-${lastIndex} }); } } })这段代码的核心逻辑是状态驱动UI。isLoading这个状态控制了按钮是否可点、输入框是否禁用以及加载动画的显示。清晰的错误处理也能让用户在遇到网络问题时不至于茫然。3. 后端桥梁通过云函数调用PROJECT MOGFACE API小程序不能直接请求大多数外部API有域名白名单限制所以我们需要一个“中转站”——云函数。3.1 创建并配置云函数首先在小程序项目中创建一个云函数比如叫callMogfaceAI。// cloudfunctions/callMogfaceAI/index.js const cloud require(wx-server-sdk); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); // 这里假设你已经获得了PROJECT MOGFACE的API访问密钥 // 重要密钥等敏感信息不要写死在代码里应该通过云开发环境变量管理 const MOGFACE_API_KEY process.env.MOGFACE_API_KEY; const MOGFACE_BASE_URL https://api.mogface.example.com; // 替换为实际API地址 exports.main async (event, context) { const { type, prompt, imageUrl, options } event; // 简单的请求参数验证 if (!type || !prompt) { return { code: 400, msg: 缺少必要参数 }; } try { let response; const requestConfig { headers: { Authorization: Bearer ${MOGFACE_API_KEY}, Content-Type: application/json, } }; // 根据请求类型调用不同的模型接口 if (type text) { // 调用文本生成模型 const requestBody { model: mogface-text-v1, // 指定模型 prompt: prompt, max_tokens: 500, // 控制生成长度 temperature: 0.7, // 控制创造性 ...options // 允许前端传递其他参数 }; response await cloud.fetch({ url: ${MOGFACE_BASE_URL}/v1/completions, method: POST, headers: requestConfig.headers, data: requestBody }); } else if (type image) { // 调用图像生成模型 const requestBody { model: mogface-image-v1, prompt: prompt, size: 512x512, // 图片尺寸 n: 1, // 生成数量 ...options }; response await cloud.fetch({ url: ${MOGFACE_BASE_URL}/v1/images/generations, method: POST, headers: requestConfig.headers, data: requestBody }); } else { return { code: 400, msg: 不支持的请求类型 }; } const result response.data; // 统一处理响应格式 if (type text) { return { code: 200, content: result.choices?.[0]?.text?.trim() || 未生成有效内容, usage: result.usage // 返回token使用情况可用于计费或监控 }; } else if (type image) { // 图片生成通常返回URL const imageUrl result.data?.[0]?.url; if (!imageUrl) { return { code: 500, msg: 图片生成失败 }; } return { code: 200, content: imageUrl, // 这里返回图片URL type: image }; } } catch (error) { console.error(云函数调用PROJECT MOGFACE API失败:, error); // 根据错误类型返回更友好的提示 if (error.errCode -404011) { return { code: 503, msg: AI服务暂时繁忙请稍后再试 }; } return { code: 500, msg: 服务内部错误请稍后重试 }; } };这个云函数做了几件关键事情统一入口处理不同类型的AI请求文本、图片。参数校验与转发验证前端传来的参数并按照PROJECT MOGFACE API的格式发起请求。错误处理与格式化捕获网络或API错误并转换成前端能理解的格式。敏感信息保护API密钥通过环境变量管理不暴露在代码中。3.2 部署与测试云函数写完云函数后需要上传并部署到云端。你可以使用微信开发者工具的“云开发”控制台或者命令行工具。部署成功后建议先在小程序端写一个简单的测试函数确保通路是通的。// 在页面JS中测试云函数 async testCloudFunction() { try { const res await wx.cloud.callFunction({ name: callMogfaceAI, data: { type: text, prompt: 你好请介绍一下你自己。 } }); console.log(云函数调用成功:, res.result); } catch (err) { console.error(云函数调用失败:, err); } }4. 应对网络延迟让等待变得可接受AI模型推理需要时间网络传输也有延迟用户可能会面对一个“空白”的等待期。我们的目标是让等待变得可感知、可预期甚至是有趣的。4.1 前端加载状态优化除了基础的加载动画还可以做得更细致!-- 更丰富的加载状态 -- view wx:if{{isLoading}} classloading-wrapper view classloading-content !-- 随机显示不同的等待文案 -- text{{loadingTexts[loadingIndex]}}/text view classstage view classdot-pulse/view /view !-- 显示预估等待时间如果后端能提供的话 -- text wx:if{{estimatedTime}} classestimated-time预计还需{{estimatedTime}}秒/text /view /viewdata: { isLoading: false, loadingTexts: [ 正在思考中..., 努力组织语言中..., 查阅知识库..., 就差一点点了... ], loadingIndex: 0, estimatedTime: null, loadingTimer: null, }, // 开始请求时 startLoading() { this.setData({ isLoading: true, loadingIndex: 0 }); // 轮换等待文案 const textTimer setInterval(() { if (!this.data.isLoading) { clearInterval(textTimer); return; } const nextIndex (this.data.loadingIndex 1) % this.data.loadingTexts.length; this.setData({ loadingIndex: nextIndex }); }, 2000); // 模拟或根据历史数据估算时间 this.data.loadingTimer setTimeout(() { this.setData({ estimatedTime: 3 }); // 假设后端返回了剩余时间 }, 1000); }, // 请求结束时 stopLoading() { this.setData({ isLoading: false, estimatedTime: null }); if (this.data.loadingTimer) { clearTimeout(this.data.loadingTimer); } }4.2 实现流式响应如果API支持如果PROJECT MOGFACE的API支持流式输出即一个字一个字地返回那体验会提升一个档次。虽然小程序云函数对长连接的支持有限但我们可以通过轮询来模拟。思路云函数调用一个支持“任务ID”的异步AI接口然后前端轮询查询任务结果。// 云函数端 - 创建异步任务 exports.main async (event) { // 1. 请求AI接口获取一个任务ID const createRes await cloud.fetch({ url: ${MOGFACE_BASE_URL}/v1/async/completions, method: POST, data: { prompt: event.prompt } }); const taskId createRes.data.task_id; // 2. 立即返回任务ID给前端 return { code: 200, taskId: taskId }; }; // 另一个云函数 - 查询任务结果 exports.checkResult async (event) { const taskId event.taskId; const checkRes await cloud.fetch({ url: ${MOGFACE_BASE_URL}/v1/async/tasks/${taskId} }); return { code: 200, status: checkRes.data.status, result: checkRes.data.result }; };// 小程序前端 - 轮询获取结果 async sendMessageWithStreaming() { // 1. 创建任务 const createRes await wx.cloud.callFunction({ name: createMogfaceTask, data: { prompt: this.data.inputValue } }); const taskId createRes.result.taskId; // 2. 轮询查询结果 const pollResult async () { const checkRes await wx.cloud.callFunction({ name: checkMogfaceResult, data: { taskId: taskId } }); if (checkRes.result.status completed) { // 任务完成显示结果 this.appendAIMessage(checkRes.result.result); this.stopLoading(); } else if (checkRes.result.status processing) { // 还在处理中继续轮询 setTimeout(pollResult, 500); // 500毫秒后再次查询 // 这里可以更新UI显示“正在生成第X个字...”等提示 } else { // 任务失败 this.showError(生成失败); this.stopLoading(); } }; // 开始轮询 pollResult(); }这种方式虽然比直接等待复杂但用户能看到进度体验会好很多。不过要注意轮询频率避免给服务器造成太大压力。5. 实战构建一个“AI创意助手”小程序Demo理论讲完了我们来动手做一个简单但完整的小程序Demo。这个Demo包含文本对话和图片生成两个核心功能。5.1 项目结构miniprogram-ai-demo/ ├── pages/ │ ├── chat/ # 智能对话页 │ │ ├── chat.wxml │ │ ├── chat.wxss │ │ ├── chat.js │ │ └── chat.json │ └── image-gen/ # 图片生成页 │ ├── image-gen.wxml │ ├── image-gen.wxss │ ├── image-gen.js │ └── image-gen.json ├── cloudfunctions/ │ ├── callMogfaceAI/ # 主云函数 │ │ └── index.js │ └── uploadImage/ # 辅助云函数处理图片上传如需图生图 │ └── index.js ├── app.js ├── app.json └── project.config.json5.2 核心代码片段图片生成页!-- pages/image-gen/image-gen.wxml -- view classcontainer view classprompt-section textarea value{{prompt}} bindinputonPromptInput placeholder详细描述你想生成的图片例如一只戴着眼镜、在敲代码的卡通猫数字艺术风格 maxlength500 auto-height / view classhint描述越详细图片越符合预期哦~/view view classoptions picker range{{sizeOptions}} value{{sizeIndex}} bindchangeonSizeChange view classpicker图片尺寸: {{sizeOptions[sizeIndex]}}/view /picker picker range{{styleOptions}} value{{styleIndex}} bindchangeonStyleChange view classpicker艺术风格: {{styleOptions[styleIndex]}}/view /picker /view /view button classgenerate-btn bindtapgenerateImage loading{{isGenerating}} disabled{{!prompt.trim() || isGenerating}} {{isGenerating ? 生成中... : 开始生成}} /button view classresult-section wx:if{{imageUrl}} view classsection-title生成结果/view image src{{imageUrl}} modewidthFix classgenerated-image / view classactions button classaction-btn bindtapsaveToPhotos保存到相册/button button classaction-btn bindtapgenerateAgain再生成一张/button button classaction-btn bindtapshareImage分享图片/button /view /view view classhistory-section wx:if{{history.length 0}} view classsection-title生成历史/view scroll-view scroll-x classhistory-scroll view classhistory-list block wx:for{{history}} wx:keytimestamp view classhistory-item bindtaploadHistoryItem>// pages/image-gen/image-gen.js Page({ data: { prompt: , sizeIndex: 0, sizeOptions: [512x512, 768x768, 1024x1024], styleIndex: 0, styleOptions: [默认, 数字艺术, 油画, 水彩画, 卡通], isGenerating: false, imageUrl: , history: [], // 本地缓存生成历史 }, onPromptInput(e) { this.setData({ prompt: e.detail.value }); }, onSizeChange(e) { this.setData({ sizeIndex: e.detail.value }); }, onStyleChange(e) { this.setData({ styleIndex: e.detail.value }); }, async generateImage() { const { prompt, sizeIndex, sizeOptions, styleIndex, styleOptions } this.data; if (!prompt.trim()) { wx.showToast({ title: 请输入描述, icon: none }); return; } this.setData({ isGenerating: true }); try { // 构建请求参数 const options { size: sizeOptions[sizeIndex], style: styleOptions[styleIndex] }; const res await wx.cloud.callFunction({ name: callMogfaceAI, data: { type: image, prompt: ${prompt}${options.style}风格, // 将风格加入提示词 options: options } }); if (res.result.code 200) { const imageUrl res.result.content; const historyItem { prompt: prompt, imageUrl: imageUrl, timestamp: new Date().getTime(), options: options }; // 更新UI和历史记录 this.setData({ imageUrl: imageUrl, history: [historyItem, ...this.data.history.slice(0, 9)] // 只保留最近10条 }); // 可选将历史记录存入本地缓存 wx.setStorageSync(imageGenHistory, this.data.history); wx.showToast({ title: 生成成功, icon: success }); } else { wx.showToast({ title: res.result.msg || 生成失败, icon: none }); } } catch (error) { console.error(生成图片失败:, error); wx.showToast({ title: 网络请求失败, icon: none }); } finally { this.setData({ isGenerating: false }); } }, // 保存图片到相册 saveToPhotos() { const { imageUrl } this.data; wx.showLoading({ title: 保存中 }); wx.downloadFile({ url: imageUrl, success: (res) { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: () { wx.hideLoading(); wx.showToast({ title: 保存成功, icon: success }); }, fail: (err) { wx.hideLoading(); // 处理用户拒绝权限等情况 if (err.errMsg.includes(auth deny)) { wx.showModal({ title: 提示, content: 需要您授权保存图片到相册, success: (modalRes) { if (modalRes.confirm) { wx.openSetting(); // 引导用户打开设置页 } } }); } } }); }, fail: () { wx.hideLoading(); wx.showToast({ title: 保存失败, icon: none }); } }); }, generateAgain() { // 清空当前结果保留输入内容让用户可以微调描述再次生成 this.setData({ imageUrl: }); // 可以自动聚焦到输入框 }, shareImage() { const { imageUrl, prompt } this.data; // 这里可以实现分享到朋友圈或好友的功能 // 注意分享图片需要先下载到本地 wx.showShareImageMenu({ path: imageUrl, // 实际需要是本地临时路径 success: () { console.log(分享成功); } }); }, loadHistoryItem(e) { const index e.currentTarget.dataset.index; const item this.data.history[index]; this.setData({ prompt: item.prompt, imageUrl: item.imageUrl, // 可以根据item.options恢复尺寸和风格选择 }); }, onLoad() { // 加载本地历史记录 const history wx.getStorageSync(imageGenHistory) || []; this.setData({ history }); } });这个Demo虽然简单但涵盖了核心流程用户输入、参数选择、调用云函数、结果展示、历史记录和图片保存。你可以在此基础上扩展更多功能比如“图生图”需要先上传图片、多图生成、效果增强等。6. 总结把PROJECT MOGFACE的AI能力集成到微信小程序里技术上并不复杂核心就是“前端交互 云函数中转”。但要做好关键在细节。首先前端交互要考虑到AI请求的延迟特性用清晰的加载状态、流式输出如果可能和友好的错误提示来管理用户预期。一个“正在思考中...”的动画比一个卡住的界面要好得多。其次云函数作为桥梁要做好参数转发、错误处理和格式统一。把复杂的API调用和密钥管理放在云端让小程序端保持轻量和安全。最后小程序本身的能力比如本地存储存历史记录、相机图片上传用于图生图、分享等可以和AI功能很好地结合创造出更丰富的应用场景。在实际开发中你可能会遇到更多具体问题比如如何设计提示词模板、如何处理生成内容的安全审核、如何对使用量进行计费或限制。每个问题都需要根据你的具体业务来寻找解决方案。但无论如何起点就是动手尝试。从最简单的文本对话开始慢慢加入更多功能你会发现在微信小程序这个生态里AI能做的事情远比想象中要多。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻

数字孪生实战指南:从3D建模到物联网的10个核心技术栈详解

数字孪生实战指南:从3D建模到物联网的10个核心技术栈详解

数字孪生实战指南:从3D建模到物联网的10个核心技术栈详解 最近几年,和不少制造业、智慧城市领域的朋友聊天,发现“数字孪生”这个词出现的频率越来越高。起初,很多人觉得它就是个炫酷的3D可视化大屏,或者一个高级的模拟…

2026/5/17 11:40:46 阅读更多 →
ESP32-H2-MINI模组深度解析:RISC-V架构、双模无线与低功耗工程实践

ESP32-H2-MINI模组深度解析:RISC-V架构、双模无线与低功耗工程实践

ESP32-H2-MINI-1 / MINI-1U 深度技术解析:从模组特性到启动配置与外设工程实践1. 模组核心架构与硬件特性全景ESP32-H2-MINI-1 和 ESP32-H2-MINI-1U 是乐鑫面向超低功耗物联网场景推出的双模无线模组,其设计目标直指 Matter、Thread、Zigbee 3.0 等新一代…

2026/7/3 3:42:59 阅读更多 →
霜儿-汉服-造相Z-Turbo效果实测:这些惊艳汉服图都是AI画的

霜儿-汉服-造相Z-Turbo效果实测:这些惊艳汉服图都是AI画的

霜儿-汉服-造相Z-Turbo效果实测:这些惊艳汉服图都是AI画的 1. 开篇:当AI遇见汉服,一场视觉盛宴 如果你觉得AI生成的图片总是千篇一律,或者对古风人物的刻画不够细腻,那么今天这篇文章可能会改变你的看法。我最近深度…

2026/7/3 11:51:47 阅读更多 →

最新新闻

M1 Mac mini部署OpenClaw AI Agent实战指南

M1 Mac mini部署OpenClaw AI Agent实战指南

1. 项目概述 去年底我把一台闲置的M1 Mac mini改造成了AI Agent服务器,运行OpenClaw框架部署了3个不同类型的AI Agent,让它们帮我处理日常工作整整30天。这套系统现在每天自动处理约200封邮件、整理会议纪要、生成日报,甚至能帮我预约会议室。…

2026/7/5 12:27:48 阅读更多 →
从零部署Hermes Agent:构建自我进化的AI智能体实战指南

从零部署Hermes Agent:构建自我进化的AI智能体实战指南

在 AI 智能体领域,从简单的聊天机器人到能够自主执行复杂任务的智能助手,中间隔着一道巨大的鸿沟。这道鸿沟的核心在于,一个真正的智能体不仅需要理解指令,更需要具备学习、记忆、规划和利用工具的能力。Hermes Agent 正是 Nous R…

2026/7/5 12:21:48 阅读更多 →
AI建站工具指南:零代码打造专业网站的完整流程

AI建站工具指南:零代码打造专业网站的完整流程

1. AI建站工具的本质与核心价值AI建站工具正在彻底改变个人和小型企业创建网站的方式。这类工具的核心价值在于将原本需要专业开发技能的建站过程,简化为一个自然语言交互的对话流程。想象一下,你只需要告诉AI"我想要一个展示摄影作品集的网站&…

2026/7/5 12:21:48 阅读更多 →
如何用开源工具Meshroom从照片创建专业3D模型:完整免费指南

如何用开源工具Meshroom从照片创建专业3D模型:完整免费指南

如何用开源工具Meshroom从照片创建专业3D模型:完整免费指南 【免费下载链接】Meshroom Node-based Visual Programming Toolbox 项目地址: https://gitcode.com/gh_mirrors/me/Meshroom 在当今数字时代,将普通照片转化为精美3D模型不再是专业工作…

2026/7/5 12:19:47 阅读更多 →
PPO算法实战:从原理到调试技巧

PPO算法实战:从原理到调试技巧

1. 项目概述:PPO算法初体验 第一次接触强化学习中的PPO(Proximal Policy Optimization)算法时,那种既兴奋又忐忑的心情至今记忆犹新。作为目前最主流的策略梯度算法之一,PPO以其出色的稳定性和样本效率,成为…

2026/7/5 12:17:47 阅读更多 →
BetterGenshinImpact:三阶段智能辅助指南,从萌新到高玩的完整解决方案

BetterGenshinImpact:三阶段智能辅助指南,从萌新到高玩的完整解决方案

BetterGenshinImpact:三阶段智能辅助指南,从萌新到高玩的完整解决方案 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄…

2026/7/5 12:15:46 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻