AutoxJS自动化脚本开发实战:从零到精通的完整指南
1. 环境准备从零搭建你的第一个AutoxJS项目很多朋友第一次接触手机自动化可能觉得这东西门槛很高得会编程才行。其实真没那么复杂我刚开始玩的时候也是零基础现在用AutoxJS写个自动签到、自动刷视频的脚本也就几分钟的事儿。今天我就带你从最基础的安装开始一步步走进AutoxJS的世界。首先你得知道AutoxJS是什么。简单说它就是一个能让你用JavaScript代码控制手机的工具。你想让手机自动帮你点开某个App、滑动屏幕、输入文字甚至判断屏幕上的内容这些都可以通过写几行代码来实现。它特别适合处理那些每天都要重复的、枯燥的手机操作比如上班打卡、游戏日常任务、收集电商平台的优惠券等等。那么开始前我们需要准备些什么呢主要就三样东西一部安卓手机或者电脑上的安卓模拟器、AutoxJS的App、还有一个写代码的地方。手机最好用系统版本在Android 7.0以上的兼容性会更好。如果你用模拟器我实测下来雷电模拟器9的稳定性和兼容性都不错而且它对AutoxJS的支持很友好。接下来我们去AutoxJS的官方仓库比如GitHub上的kkevsekk1/AutoX下载最新版本的APK文件直接安装到手机或模拟器里。安装好后打开记得按照提示把“无障碍服务”和“悬浮窗权限”给打开这是AutoxJS能“操控”你手机的关键。光有运行环境还不够我们还得有个舒服的“写字台”来写代码。直接在手机的小屏幕上敲代码太痛苦了所以我强烈推荐你用电脑来写。这里有个非常高效的组合VSCode加上AutoX.js-VSCodeExt插件。你在VSCode的扩展商店里搜索这个插件并安装它就能让你在电脑上编写、调试AutoxJS脚本并且一键同步到手机或模拟器上运行效率直接翻倍。把开发环境搭好就像木匠有了顺手的工具后面干活就轻松多了。2. 核心基础理解AutoxJS的“三板斧”环境搭好了我们得先摸清AutoxJS的“脾气”知道它最核心的几样本事是什么。别急着写复杂脚本把基础打牢后面学什么都快。AutoxJS的核心能力我总结为“三板斧”控件操作、手势模拟和图像识别。掌握了这三样你就能解决80%的自动化需求。第一板斧控件操作。这是最精准、最高效的操作方式。你可以把手机屏幕上的每一个按钮、文本框、图片都看作一个“控件”UI控件。每个控件通常都有一些属性比如id身份证、text显示的文本、className类型。我们的脚本就是通过找到这些属性来定位并操作它。举个例子你想自动点击微信的“发现”选项卡你可以这样写// 通过文本内容找到“发现”这个控件并点击 let discoverTab text(“发现”).findOne(); if(discoverTab){ discoverTab.click(); }这里的text(“发现”).findOne()就是在当前屏幕上寻找第一个文本内容是“发现”的控件。findOne()会一直找直到找到为止如果一直找不到脚本就会卡在这里。所以实际使用时我们常会配合waitFor()或者设置超时时间。控件操作的优势是精准只要App的界面结构不变脚本就非常稳定。但它的缺点是如果App更新导致控件id或text变了脚本就可能失效。第二板斧手势模拟。当控件操作不好使或者你想执行滑动、长按等操作时就得用手势模拟了。AutoxJS提供了click(),swipe(),longClick()等函数你可以直接指定屏幕坐标来操作。比如你想从屏幕中间向下滑动// 在屏幕坐标(500, 1000)处按下滑动到(500, 500)持续300毫秒 swipe(500, 1000, 500, 500, 300);但直接写死坐标很麻烦因为不同手机分辨率不一样。更常见的做法是结合控件操作先找到控件的位置再在这个位置附近操作。就像原始文章里提到的当按钮clickable属性为false无法直接点击时可以先用bounds()方法获取控件的矩形区域然后计算中心点再点击let buttonBounds text(“签到”).findOne().bounds(); click(buttonBounds.centerX(), buttonBounds.centerY());第三板斧图像识别。这是应对复杂情况或游戏界面的“终极武器”。它的原理是你先截取一张目标按钮或区域的图片作为模板然后让脚本在当前屏幕上寻找和这个模板最像的地方。AutoxJS内置了images模块来处理这个。比如你想识别并点击游戏里的一个特定图标// 先确保模板图片放在设备的指定路径下 let targetImage images.read(“/sdcard/模板图片.png”); let found images.findImage(captureScreen(), targetImage); if(found){ click(found.x, found.y); }图像识别对设备性能有点要求而且如果游戏画面特效太多或者亮度变化大识别可能会失败。所以它通常是控件操作失效后的备选方案。把这“三板斧”的原理和适用场景搞明白了你就能根据不同的任务灵活选择最合适的工具。3. 脚本开发实战打造一个智能打卡机器人光说不练假把式我们现在就动手用前面学的知识开发一个完整的、带“脑子”的自动打卡脚本。这个脚本会比简单的“点一点”更高级它会包含随机延迟启动避免每天固定时间打卡被察觉、节假日判断放假就不白跑、失败重试和结果通知等功能。我会把每个部分拆开揉碎了讲你跟着做一定能实现。首先我们来搭脚本的骨架也就是定义好整个流程需要哪些配置和变量。一个好的脚本开头应该把所有可能修改的参数都集中定义这样以后维护起来特别方便。// 1. 基础配置 var appName “企业考勤App”; // 要打开的应用名称 var packageName getPackageName(appName); // 自动获取包名 var maxRetryCount 3; // 打卡失败最大重试次数 var useHolidayCheck true; // 是否启用节假日检查 var useNotification true; // 是否启用结果通知邮件或钉钉等 // 2. 时间配置增加随机性更模拟真人 var baseTime “09:00”; // 基准打卡时间 var randomDelayMax 5 * 60 * 1000; // 最大随机延迟5分钟毫秒 var randomDelay parseInt(Math.random() * randomDelayMax); // 生成0-5分钟的随机延迟 var operationTimeout 60 * 1000; // 单次操作超时时间60秒 // 3. 日志记录器非常重要用于排查问题 let operationLog “”; // 用一个字符串变量记录所有日志 function log(message) { let logEntry ${new Date().toLocaleString()}${message}\n; operationLog logEntry; toast(message); // 手机屏幕弹窗提示 console.log(logEntry); // 输出到控制台 } log(脚本启动本次随机延迟${randomDelay/1000}秒);你看这样一整理脚本要干什么、有哪些可以调节的“开关”就一目了然了。接下来我们实现第一个智能功能节假日判断。我们总不希望脚本在国庆节、春节还傻乎乎地去尝试打卡吧这里我们可以调用一个免费的公共API服务比如天行数据来查询当天是否是工作日。注意我们需要处理网络请求和异步回调。// 节假日检查函数 function checkIfWorkDay(callback) { if (!useHolidayCheck) { callback(true); // 如果不启用检查默认认为是工作日 return; } let apiUrl “https://api.example.com/holiday”; // 替换为真实的API地址 let apiKey “your_api_key_here”; // 需要自己申请 let today new Date(); let dateStr ${today.getFullYear()}-${today.getMonth()1}-${today.getDate()}; // 发起HTTP请求 let res http.get(${apiUrl}?key${apiKey}date${dateStr}); if (res.statusCode 200) { let result res.body.json(); // 假设API返回格式中isWork为1代表工作日 let isWorkDay (result.data.isWork 1); log(节假日API查询结果今日${isWorkDay ? ‘是’ : ‘不是’ }工作日); callback(isWorkDay); } else { log(节假日API请求失败按工作日处理); callback(true); // 网络失败时保守起见按工作日处理 } } // 使用方式 checkIfWorkDay(function(isWorkDay){ if(!isWorkDay){ log(“今天是节假日停止执行打卡任务”); if(useNotification){ sendNotification(“打卡跳过通知”, “今天是法定节假日无需打卡。”); } exit(); // 退出脚本 } else { log(“今天是工作日开始执行打卡流程”); // 延迟随机时间后开始打卡主流程 setTimeout(mainCardProcess, randomDelay); } });完成了“大脑”决策逻辑接下来就是“手和脚”执行操作的部分了也就是打卡主流程。这里我们要用到前面学的控件操作。流程一般是启动App - 等待界面加载 - 找到打卡入口 - 进入打卡页 - 等待定位成功 - 点击打卡按钮。function mainCardProcess() { log(“开始执行打卡主流程”); launchApp(appName); // 启动目标App waitForPackage(packageName, operationTimeout); // 等待App启动完成 // 假设打卡入口在底部导航栏的第二个Tab let cardTab id(“bottom_tab_2”).findOne(operationTimeout); if (cardTab) { cardTab.click(); log(“已进入打卡模块”); } else { throw new Error(“未找到打卡入口可能界面已更新”); } // 进入打卡页面后寻找签到按钮 let signButton textContains(“签到”).findOne(operationTimeout); if (signButton signButton.clickable()) { signButton.click(); } else { // 如果按钮不可点尝试用坐标点击原始文章中的技巧 let bounds signButton.bounds(); click(bounds.centerX(), bounds.centerY()); log(“使用坐标模拟点击签到按钮”); } // 等待定位成功提示 let locationSuccess text(“定位成功”).findOne(operationTimeout); if (locationSuccess) { log(“定位成功准备最终打卡”); // 找到最终的打卡按钮并点击 let finalCardBtn id(“final_sign_button”).findOne(5000); if (finalCardBtn) { finalCardBtn.click(); log(“打卡点击操作完成”); // 这里可以再加一个检查确认是否出现“打卡成功”的提示 sleep(2000); // 等待结果弹窗 let successToast text(“打卡成功”).findOne(3000); if (successToast) { handleSuccess(); } else { handleRetry(“未检测到成功提示”); } } else { handleRetry(“未找到最终打卡按钮”); } } else { handleRetry(“定位失败”); } }任何一个健壮的脚本都必须有错误处理和重试机制。网络可能波动App可能卡顿我们不能因为一次失败就放弃。我借鉴了原始文章的思路设置一个最大重试次数并在每次失败后记录日志然后重新尝试整个流程。var retryCount 0; function handleRetry(errorReason) { log(打卡失败原因${errorReason}); retryCount; if (retryCount maxRetryCount) { log(准备第${retryCount 1}次重试${maxRetryCount - retryCount}次机会); sleep(5000); // 等待5秒后重试 // 先强制关闭App清理状态 shell(“am force-stop ” packageName, true); sleep(2000); mainCardProcess(); // 重新执行主流程 } else { log(已达最大重试次数${maxRetryCount}打卡失败); handleFailure(); } } function handleSuccess() { log(“打卡成功”); if(useNotification){ sendNotification(“打卡成功通知”, 打卡成功时间${new Date().toLocaleString()}\n日志摘要${operationLog}); } exit(); } function handleFailure() { log(“最终打卡失败”); if(useNotification){ sendNotification(“打卡失败告警”, 打卡失败已重试${maxRetryCount}次。请手动处理\n详细日志${operationLog}); } exit(); }最后我们来实现结果通知。脚本不能“闷声干活”成功或失败都得告诉我们。除了原始文章里提到的邮件EmailJS现在更常用的可能是钉钉、企业微信或Server酱这类即时通讯工具的通知。这里我以钉钉机器人为例展示如何发送通知function sendNotification(title, content) { if (!useNotification) return; let dingtalkWebhook “https://oapi.dingtalk.com/robot/send?access_tokenYOUR_TOKEN”; let message { “msgtype”: “text”, “text”: { “content”: 【AutoxJS打卡脚本】\n${title}\n${content} } }; let res http.postJson(dingtalkWebhook, message); if (res.statusCode 200) { log(“通知发送成功”); } else { log(“通知发送失败: ” res.body.string()); } }把以上这些代码块按逻辑顺序组合起来就是一个功能相对完整、考虑周全的自动打卡脚本了。它具备了决策、执行、容错和反馈的全链条能力。你在实际使用时只需要根据自己公司App的实际情况修改里面的控件定位信息id、text和API配置即可。4. 进阶技巧与避坑指南脚本能跑起来只是第一步要想让它长期稳定、可靠地运行还需要掌握一些进阶技巧并避开我当年踩过的那些“坑”。这部分内容都是实战中总结出来的血泪经验能帮你节省大量调试时间。第一个大坑控件找不到或点击无效。这是AutoxJS新手遇到最多的问题。你可能照着教程写了id(“xxx”).click()但脚本就是报错说找不到控件。原因主要有几个一是App界面还没加载出来你就开始找了二是控件的属性特别是text是动态变化的三是高版本安卓系统的无障碍服务限制。我的解决方法是“等待、容错、多方案备用”。不要直接用findOne()而是用waitFor()或者设置查找超时。对于动态文本可以用textContains()或descContains()进行模糊匹配。如果控件clickable为false就使用原始文章里提到的bounds()坐标点击法。有时候甚至需要结合图像识别来作为最终保底手段。第二个技巧巧用“选择器”和“兄弟/父子节点”。AutoxJS的选择器非常强大除了id和text你还可以用className、packageName甚至通过控件之间的层级关系来定位。比如你想找一个在“确定”按钮旁边的“取消”按钮但两个按钮都没id你可以这样写// 先找到“确定”按钮 let okButton text(“确定”).findOne(); if (okButton) { // 通过父容器找到同一层级的兄弟节点中的“取消”按钮 let cancelButton okButton.parent().children().find(text(“取消”)); if (cancelButton) { cancelButton.click(); } }熟练掌握选择器的组合使用能让你在应对复杂界面时游刃有余。第三个核心问题脚本的稳定运行与自启动。我们肯定希望脚本能定时自动运行比如每天上午9点自动打卡。这里通常需要AutoxJS配合Tasker安卓自动化神器或系统定时任务来实现。在AutoxJS里写好主脚本然后在Tasker里创建一个“时间”上下文比如每天9:00关联一个“运行AutoxJS脚本”的任务。但是这里有个连环套问题怎么保证Tasker和AutoxJS本身不被系统“杀掉”我的经验是利用AutoxJS写一个非常简单的“保活”脚本让Tasker在特定时间比如每天凌晨运行它这个脚本的唯一任务就是启动一次AutoxJS主应用确保它的服务是活跃的。反过来也可以在AutoxJS脚本开始时检查并启动Tasker。这就形成了一个相互保活的闭环。第四个性能要点避免主线程阻塞。JavaScript是单线程的如果你在脚本里执行一个非常耗时的循环操作比如不断截图找图界面就会“卡死”甚至触发ANR应用无响应。原始文章里用threads.start()来开启新线程处理超时逻辑这个思路非常好。对于任何可能耗时的操作比如网络请求、复杂的图像识别我都建议放到子线程里去做。// 在主线程进行界面操作 let uiThread threads.currentThread(); // 开启一个子线程执行耗时任务 threads.start(function(){ let result doHeavyCalculation(); // 耗时计算 // 将结果传回主线程更新UI uiThread.run(function(){ toast(“计算完成结果是” result); }); });第五个调试神器详尽的日志系统。我在脚本骨架部分就强调要写log函数。一个完善的日志系统应该能把关键操作、函数入参出参、错误信息、甚至截图都记录下来并保存到文件或发送到远程服务器。这样当脚本出现预期外的行为时你就能像侦探一样通过日志还原现场快速定位问题所在。这比盲目地修改代码和反复测试要高效得多。把这些技巧融入到你的脚本开发习惯中你写出来的就不再是“玩具脚本”而是能在生产环境稳定运行的“自动化工具”了。记住自动化脚本的核心价值是解放人力如果它本身需要你花大量时间去维护和调试那就本末倒置了。所以在开发阶段多花点心思做好健壮性和可观测性是非常值得的投资。5. 真实案例扩展自动化签到与信息收集掌握了打卡脚本的开发我们就可以举一反三用AutoxJS解决更多实际问题。比如很多App都有每日签到领积分、金币的任务手动点很烦我们可以写一个通用签到脚本框架。再比如需要每天从某个网站或App里收集特定信息如天气、油价、商品价格我们也可以让AutoxJS自动完成。这里我分享一个我实际在用的、自动收集多个平台优惠信息的脚本思路。这个脚本的目标是每天上午10点自动打开某电商App、某外卖App和某资讯App完成签到任务并抓取首页的“今日特价”或“热门活动”标题整理后通过钉钉发给我。它比单纯打卡更复杂涉及多个App的切换和信息提取。首先我们需要一个任务队列来管理要执行的一系列操作。每个任务是一个对象包含App名、要执行的操作函数、以及可能的数据提取规则。var taskList [ { appName: “某电商App”, packageName: “com.example.shop”, execute: function() { // 1. 启动App launchApp(this.appName); waitForPackage(this.packageName, 10000); // 2. 查找并点击签到按钮可能弹窗需要处理 let signBtn textMatches(/签到|领金币|领积分/).findOne(5000); if(signBtn) signBtn.click(); sleep(2000); // 等待弹窗或动画 // 3. 提取首页活动信息 let activityTexts className(“TextView”).depth(10).find(); let todayDeal “”; for(let i0; iMath.min(activityTexts.length, 5); i){ let txt activityTexts[i].text(); if(txt txt.includes(“特价”) || txt.includes(“活动”)){ todayDeal txt; break; } } return { success: true, data: todayDeal }; } }, { appName: “某资讯App”, packageName: “com.example.news”, execute: function() { // ... 类似的签到和信息提取逻辑 // 可能还需要处理滑动屏幕查看更多 swipe(device.width/2, device.height*0.7, device.width/2, device.height*0.3, 500); sleep(1000); // ... 提取新闻头条 return { success: true, data: headlineNews }; } } // ... 可以添加更多任务 ];然后我们写一个调度器来按顺序执行这些任务并收集结果。var collectedData []; for(let task of taskList){ log(开始执行任务${task.appName}); try { let result task.execute(); collectedData.push({ app: task.appName, info: result.data || “未找到信息” }); log(${task.appName} 任务完成); } catch (error) { log(${task.appName} 任务执行失败${error}); collectedData.push({ app: task.appName, info: “任务执行失败” }); } finally { // 无论成功失败执行完一个App后都强制关闭它避免后台堆积 shell(“am force-stop ” task.packageName, true); sleep(2000); // 间隔一下避免启动太快被系统限制 } } // 所有任务完成后整理并发送报告 if(collectedData.length 0){ let report “【每日信息简报】\n”; for(let item of collectedData){ report ${item.app}${item.info}\n; } sendNotification(“每日自动签到与信息收集完成”, report); } log(“所有任务执行完毕”);在这个案例里我们综合运用了控件操作、文本匹配、手势滑动、异常处理和多任务调度。你会发现一旦掌握了AutoxJS的核心模式你就可以像搭积木一样把不同的功能组合起来实现非常复杂的自动化流程。关键在于分解任务把一个大的自动化目标拆解成一个个小的、可重复的“启动App - 定位元素 - 执行操作 - 提取数据”的单元然后逐个击破。开发这类脚本时还有一个小技巧多用sleep()函数在操作之间加入短暂的等待。因为手机App的响应需要时间代码执行得太快可能界面还没刷新出来下一个查找操作就失败了。适当的sleep能让脚本更稳定更模拟人的操作节奏。当然更好的做法是用waitFor()等待特定条件出现这比写死等待时间更智能。通过这个扩展案例我希望你能感受到AutoxJS的潜力远不止于打卡。它就像给你的手机配了一个不知疲倦的智能助手凡是规则固定、重复性高的手机操作都可以尝试交给它。从简单的签到到中等复杂度的信息聚合甚至到需要简单逻辑判断的游戏日常任务AutoxJS都能大显身手。多动手多思考把重复劳动交给脚本把宝贵的时间留给自己。

相关新闻

5分钟搞定时间序列预测:IBM Granite FlowState R1轻量模型实战教程

5分钟搞定时间序列预测:IBM Granite FlowState R1轻量模型实战教程

5分钟搞定时间序列预测:IBM Granite FlowState R1轻量模型实战教程 导语 还在为时间序列预测模型动辄几十GB的显存需求而头疼吗?还在为复杂的模型训练和调参流程感到焦虑吗?今天,我要向你介绍一个能彻底改变你工作流的“神器”—…

2026/6/17 23:59:57 阅读更多 →
计算机毕业设计springboot惠水科院图书馆图书借还子系统 基于SpringBoot的高校智慧图书馆流通管理系统 SpringBoot框架下的学院图书借阅与归还服务平台

计算机毕业设计springboot惠水科院图书馆图书借还子系统 基于SpringBoot的高校智慧图书馆流通管理系统 SpringBoot框架下的学院图书借阅与归还服务平台

计算机毕业设计springboot惠水科院图书馆图书借还子系统(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着信息技术的快速发展,图书馆作为知识与信息的重要载体正面…

2026/7/4 16:26:56 阅读更多 →
工业组态软件Intouch(单机版)实战技巧:标记名批量处理全攻略

工业组态软件Intouch(单机版)实战技巧:标记名批量处理全攻略

1. 为什么你需要掌握标记名批量处理? 如果你刚开始接触工业组态软件Intouch,可能会觉得创建几个、几十个标记名(Tag)不是什么难事,点点鼠标就搞定了。但等你真正接手一个工业现场项目,比如一个污水处理厂的…

2026/6/17 23:59:57 阅读更多 →

最新新闻

PostgreSQL与MySQL比较

PostgreSQL与MySQL比较

PostgreSQL与MySQL比较 摘要 在当今数据驱动的时代,关系型数据库仍然是绝大多数应用系统的核心基础设施。开源数据库领域,PostgreSQL与MySQL长期占据主导地位,两者在发展哲学、架构设计、功能特性和许可模式上存在深刻差异。PostgreSQL以对…

2026/7/5 8:26:20 阅读更多 →
深入NVIDIA驱动的隐藏世界:用Profile Inspector解锁显卡潜能

深入NVIDIA驱动的隐藏世界:用Profile Inspector解锁显卡潜能

深入NVIDIA驱动的隐藏世界:用Profile Inspector解锁显卡潜能 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 当你在游戏世界中驰骋时,是否曾想过显卡驱动里还藏着许多未公开的宝…

2026/7/5 8:24:19 阅读更多 →
2026年最新揭秘!这些梳子生产厂家排名,你知道几个?

2026年最新揭秘!这些梳子生产厂家排名,你知道几个?

痛点深度剖析 我们团队在实践中发现,梳子行业存在诸多实际技术困境。市面上普通木梳多为机器量产,工艺粗糙、梳齿尖锐,实测数据显示,使用这类梳子时,易扎头皮、拉扯发丝的情况高达80%,严重损伤发质与头皮。…

2026/7/5 8:24:19 阅读更多 →
SkillComposer:当你的 Skill 库超过 80 个,模型怎么知道选哪个?

SkillComposer:当你的 Skill 库超过 80 个,模型怎么知道选哪个?

来源:arXiv:2606.32025(2026-07-01 提交),发布于 arXiv cs.CL / cs.AI 核心标签:Skill 组合、约束自回归解码、任务条件序列预测、技能依赖建模一、为什么你现在应该读这篇 如果你维护的 Agent 系统里 Skill 数量已经涨…

2026/7/5 8:24:19 阅读更多 →
Blender 3MF插件:从创意到3D打印的无缝桥梁

Blender 3MF插件:从创意到3D打印的无缝桥梁

Blender 3MF插件:从创意到3D打印的无缝桥梁 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经在Blender中精心设计的模型,在导出到3D打印…

2026/7/5 8:22:19 阅读更多 →
Java实战:解析Navicat连接加密机制与密码恢复

Java实战:解析Navicat连接加密机制与密码恢复

1. 项目概述:为什么我们需要关注Navicat的连接加密作为一名常年和数据库打交道的Java开发者,Navicat几乎是工具箱里的标配。它图形化的界面、便捷的数据操作和连接管理,极大地提升了我们的工作效率。但不知道你有没有遇到过这样的场景&#x…

2026/7/5 8:14:18 阅读更多 →

日新闻

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 阅读更多 →

月新闻