近期实践整理:自动化、逆向分析与个人作品集建设

最近的实践主要集中在三个方向:自动化工具、协议与逆向分析、个人作品集建设。这三个方向看起来分散,但实际底层能力是相通的:理解系统输入输出、拆解流程、验证关键分支,然后把重复操作沉淀成可复用工具。

我现在更关注“从问题到可交付”的完整链路,而不是只做单点功能。一个脚本能跑通只是第一步,更重要的是它能不能稳定运行、能不能被复用、能不能被解释清楚。

1. 自动化与工具化:从脚本到小系统

自动化不是简单写几行 Python。真正有价值的自动化,通常需要处理这些问题:

  • 输入来源是否稳定:文件、接口、网页、消息队列或人工录入;
  • 状态如何保存:数据库、JSON、缓存、日志还是内存状态;
  • 异常如何恢复:重试、跳过、告警、回滚还是暂停;
  • 结果如何复核:导出报表、截图留证、接口校验或后台展示;
  • 后续是否可维护:配置化、模块拆分、日志分级和错误定位。

我常用的结构是把自动化任务拆成四层:

配置层 -> 采集层 -> 处理层 -> 输出层

例如数据采集任务中,不直接把请求、解析、保存写在一个函数里,而是拆成:

class Pipeline:
    def fetch(self, task):
        ...

    def parse(self, response):
        ...

    def validate(self, item):
        ...

    def save(self, item):
        ...

这样做的好处是,后面无论换接口、换字段、换存储方式,都不需要重写整个脚本。

2. 协议与逆向分析:先还原链路,再谈实现

博客里已经记录了不少抓包、签名算法、移动端协议分析相关内容。这个方向的核心不是盲目堆工具,而是建立稳定的分析顺序。

我一般会按这个流程推进:

  1. 先抓真实请求,确认接口、请求顺序和关键 Header;
  2. 对比多次请求,找出稳定字段和变化字段;
  3. 观察变化字段是否与时间戳、设备参数、路径、body 有关;
  4. 在 JS / Java / native 层搜索字段名或相邻常量;
  5. 找到生成函数后做最小复现;
  6. 用本地脚本重放请求,验证服务端是否接受。

一个典型签名字段的排查表可能是这样:

字段 变化频率 可能来源 验证方式
timestamp 每次变化 当前时间 固定时间重放
nonce 每次变化 随机数/UUID Hook 随机函数
sign 随参数变化 hash/hmac/native 对比参数组合
device_id 低频变化 本地缓存 清数据或换设备
token 登录后稳定 账号态 退出登录验证

真正要避免的是只看到一个 sign 字段就直接搜索“sign 算法”。很多时候它不是单独生成,而是多个中间参数组合后的结果。

3. 前端作品集建设:页面也是一个工程项目

这次个人网站改版让我重新意识到,作品集不是把内容堆上去,而是要让访问者快速理解三个问题:

  • 你能做什么;
  • 你如何解决问题;
  • 你的结果是否可信。

所以首页不应该只有“我很努力”“我会很多工具”这类空泛表达,而要把工作方式、能力组合、近期实践和项目入口组织起来。

这次网站里做了几个工程化调整:

  • 明暗模式使用 data-theme 控制;
  • 页面切换使用软导航,避免深色模式下整页刷新闪白;
  • 能力展示从进度条改成能力墙;
  • 博客新增近期实践文章,形成持续更新的记录;
  • 合作伙伴与工具生态用轮播展示,增强页面信息密度。

4. 深色模式的技术坑

深色模式最容易犯的错误,是把变量语义写反。

例如:

:root {
  --ink: #182230;
}

:root[data-theme="dark"] {
  --ink: #f5f7fb;
}

这里 --ink 在浅色模式里表示深色文字,在深色模式里表示浅色文字。如果把它拿去做背景:

.card {
  background: var(--ink);
}

深色模式下卡片就会变成浅色块。这次出现的白色 CTA 和白色 logo 方块,本质上就是这个问题。

更合理的做法是把变量按用途拆开:

--text-strong
--text-muted
--surface
--surface-strong
--brand

这样组件不会因为主题切换而语义错乱。

5. 后续要继续完善的方向

接下来我会继续做三件事:

  1. 把已有技术文章补充完整,包括分析路径、关键判断和复现方式;
  2. 把项目页从结果展示改成过程展示,增加“问题、方案、技术点、结果”结构;
  3. 继续把 AI 辅助设计、自动化工具和协议分析沉淀成博客文章。

我的目标是让这个网站不仅是简历,而是一个持续更新的技术工作台。