instagrapi 登录挑战自动化解密指南:challenge_code_handler 与 change_password_handler 的完整实战
网页爬虫【免费下载链接】instagrapi The fastest and powerful Python library for Instagram Private API 2026 with HikerAPI SaaS项目地址https://gitcode.com/gh_mirrors/in/instagrapi点击查看免费下载导读instagrapi 是 Python 生态中通过私有接口驱动 Instagram 的第三方库。自动化登录过程中Instagram 会不定时抛出验证码、改密、手机号绑定、Bloks 重定向、自拍人工审核等挑战challenge。本文以官方使用指南 docs/usage-guide/challenge_resolver.md 为骨架结合 instagrapi/mixins/challenge.py 源码与 tests/regression/test_challenge.py 回归测试系统讲解如何为Client挂载挑战处理器自动完成验证码与改密流程并厘清哪些挑战必须人工处理、哪些异常信息应当如何解读。读完本文你将掌握注册challenge_code_handler/change_password_handler的正确姿势、ChallengeChoice枚举的语义、登录与注册两条流程中手机号的使用差异、Bloks 重定向等手工 checkpoints 的处理策略以及 bug 报告时如何安全地提交上下文而不泄露敏感凭据。挑战处理器挂载机制两个可覆盖的类属性在深入各流程之前先理解 instagrapi 的挑战处理机制。挑战处理器并非独立对象而是PrivateRequestMixin上两个可覆盖的类属性默认值为人工输入版本challenge_code_handler manual_input_code阻塞式读取控制台输入要求 6 位纯数字验证码保留字符串类型避免以 0 开头的验证码丢失change_password_handler manual_change_password阻塞式读取新密码。对应实现位于 instagrapi/mixins/private.pydef manual_input_code(self, username, choice): while True: code input(fEnter code (6 digits) for {username} ({choice}): ).strip() if code and code.isdigit(): break return code # is not int, because it can start from 0 def manual_change_password(self, username: str): pwd None while not pwd: pwd input(fEnter password for {username}: ).strip() return pwd也就是说即使你不写任何 handler登录遇到挑战时也会退化为控制台人工输入。而自动化部署服务器、无头环境、批量账号通常希望直接覆盖这两个属性把验证码获取逻辑替换为短信网关、IMAP 邮箱读取或第三方接码服务。挑战解析的核心逻辑集中在 instagrapi/mixins/challenge.py 的ChallengeResolveMixin中该模块同时定义了枚举ChallengeChoice与挑战表单类型的判定函数handle_challenge_result。新密码挑战自动修改密码解除账号风险提示当 Instagram 判定账号存在风险、要求强制改密时会进入密码重置流程。instagrapi 支持声明change_password_handler由它返回一个新密码库内部自动提交import random def change_password_handler(username): # Simple way to generate a random string chars list(abcdefghijklmnopqrstuvwxyz1234567890!£#) password .join(random.sample(chars, 8)) return password cl Client() cl.change_password_handler change_password_handler cl.login(IG_USERNAME, IG_PASSWORD)从源码 instagrapi/mixins/challenge.py 可以看到_challenge_resolve_change_password()的完整处理逻辑先从last_json中取出challenge_context缺失时直接抛出ChallengeRequired提示手工完成最多重试 24 次、每次间隔 5 秒调用change_password_handler(username)直到拿到非空密码拿到密码后调用bloks_change_password(pwd, challenge_context)提交并通过logger.info记录密码长度而非密码本身。关于密码泄漏防护tests/regression/test_challenge.py 中有专门的回归测试test_change_password_step_does_not_leak_password_to_stdout_or_logs它验证改密流程既不会通过print(...)打印新密码也不会通过logger.info(...)写入日志此前版本曾把新密码打印到 stdout。这意味着你可以在 handler 内放心生成强密码而无需担心密码在终端或日志中明文暴露。需要说明challenge_type_enum_str PASSWORD_RESET的 Bloks 重定向改密场景同样会复用change_password_handler见下文 Bloks 小节因此一个 handler 即可覆盖新旧两代改密流程。验证码挑战自动处理 Email / SMS 验证码最常见的挑战是验证码验证。你需要声明challenge_code_handler它接收用户名与验证渠道枚举返回从短信或邮箱中提取的验证码from instagrapi.mixins.challenge import ChallengeChoice def challenge_code_handler(username, choice): if choice ChallengeChoice.SMS: return get_code_from_sms(username) elif choice ChallengeChoice.EMAIL: return get_code_from_email(username) return False cl Client() cl.phone_number 15551234567 # required for submit_phone challenges cl.challenge_code_handler challenge_code_handler cl.login(IG_USERNAME, IG_PASSWORD)ChallengeChoice定义于 instagrapi/mixins/challenge.pyclass ChallengeChoice(Enum): SMS 0 EMAIL 1底层调用链中验证码的获取与重试由challenge_code_or_raised(choice, wait_seconds5, attempts24)统一封装instagrapi/mixins/challenge.py它循环调用challenge_code_handler(self.username, choice)一旦拿到非空 code 立即返回并打印形如Code entered 123456 for user (2 attempts by 5 seconds)的信息若 handler 一直返回空值则最终抛出ChallengeRequired并把last_json中除message外的上下文作为异常参数一并携带。各流程中 handler 的调用约定官方文档给出了几条必须牢记的约定逐一说明如下返回约定challenge_code_handler(username, choice)应以字符串返回收到的验证码返回任何假值False/None/空串表示目前还没有拿到 code框架会按 5 秒间隔自动重试。登录submit_phone挑战先使用client.phone_number提交手机号然后以ChallengeChoice.SMS调用challenge_code_handler获取短信验证码。若未设置client.phone_number源码会抛出ChallengeRequired(Phone number required to continue submit_phone challenge...)对应实现见 instagrapi/mixins/challenge.py。注册signupSMS 挑战使用传给signup(...)的phone_number参数同样以ChallengeChoice.SMS调用 handler 获取验证码。signup 流程对 handler 的调用位于 instagrapi/mixins/signup.py 与 instagrapi/mixins/signup.py。纯手机号注册支持signup(username, password, email, phone_number15551234567)当email与phone_number同时提供时instagrapi 保持邮箱注册流程手机号仅用于挑战阶段。相关分支可见 instagrapi/mixins/signup.py。验证渠道选择select_verify_method与select_contact_point_recovery阶段框架依据step_data中是否存在email/phone_number键来决定向 handler 传入ChallengeChoice.EMAIL还是ChallengeChoice.SMSinstagrapi/mixins/challenge.py。这意味着你的 handler 必须同时处理两种渠道不能只处理其中一种。验证渠道回退联系表单流程除私有 API 的简单挑战外instagrapi 还实现了基于 Web 表单的challenge_resolve_contact_forminstagrapi/mixins/challenge.py。该流程首先尝试 Email 渠道若遭遇SelectContactPointRecoveryForm则回退到 SMS 渠道重新 POST{choice: 0}对应ChallengeChoice.SMS的枚举值随后依次处理SubmitPhoneNumberForm、验证码输入、ReviewContactPointChangeForm资料确认等步骤。测试 tests/regression/test_challenge.py 验证了先 Email、回退 SMS的两次 POST 调用顺序。因此一个健壮的 handler 应能容忍验证渠道在流程中被切换。signup 注册流程的挑战语义与限制signup(...)在当前仓库中带有明确的使用前提。源码 instagrapi/mixins/signup.py 会发出RuntimeWarningLEGACY_SIGNUP_WARNING因为该函数走的是 Instagram 的旧版账号创建流程应视为实验性能力在现代 Instagram 应用版本上旧版注册流程经常被拒绝抛出SignupSpamError/feedback_required对应异常类定义于 instagrapi/exceptions.py因为官方 App 使用了 instagrapi 目前不会生成的额外注册校验请把这类错误视为平台拒绝而不是短信/邮箱验证码格式错误。不要因为看到SignupSpamError就怀疑 handler 提取的验证码不正确也不要无限重试注册以免账号与设备上下文恶化。必须人工处理的挑战类型自动化边界并非所有挑战都能自动化解正确识别哪些能自动、哪些必须人工是避免账号风控恶化的关键。以下内容直接摘自官方文档并结合源码展开1./auth_platform/?apc...流程当前master分支对/auth_platform/开头的流程会抛出语义更清晰的ChallengeRequired。该路径尚不支持自动处理仍需要人工验证。源码实现位于 instagrapi/mixins/challenge.py当_normalize_challenge_api_path解析出的 URL 以/auth_platform/开头时直接设置提示消息并抛出ChallengeRequired。异常消息生成逻辑见 instagrapi/exceptions.py。2. 原生挑战native flow当挑战载荷带有challenge.native_flowtrue且api_path为不透明的/challenge/...路径时属于人工 checkpoint。这类载荷不暴露 SMS/Email/改密步骤因此challenge_code_handler与change_password_handler不会被调用。challenge_resolve会先于旧流程快速失败fail-fast测试 tests/regression/test_challenge.py 明确断言此时_send_private_request与challenge_resolve_simple均不会被调用。3. Bloks 重定向 checkpoint形如bloks_actioncom.bloks.www.ig.challenge.redirect.async或占位符step_nameSTEP_NAME的重定向 checkpoint 需要在可信设备上的官方 Instagram App 或 Web 流程中人工确认。instagrapi 不再将其当作旧式挑战步骤处理而是抛出携带脱敏挑战上下文的ChallengeRequired常量BLOKS_REDIRECT_ACTION定义于 instagrapi/mixins/challenge.py。不过对于已经在官方 App 中人工批准、但客户端实例还活着的场景instagrapi 提供了challenge_bloks_redirect_dismiss()instagrapi/mixins/challenge.py它检查last_json中是否存在待处理的 Bloks 上下文然后以bloks_challenge_take_challenge(challenge_context...)确认审批结果。回归测试覆盖了无待处理上下文时抛错tests/regression/test_challenge.py与审批后仍处于 checkpoint 时继续抛ChallengeRequiredtests/regression/test_challenge.py两条路径。而challenge_resolve_simple中当challenge_type_enum_str PASSWORD_RESET时会走_challenge_resolve_change_password()自动改密分支instagrapi/mixins/challenge.py其余 Bloks 重定向则需人工确认。4. 其他明确要求人工的 stepstep_name ufac_www_bloksUFAC Web bloks checkpoint抛ChallengeRequired提示在 App/Web 中处理instagrapi/mixins/challenge.py未知step_name抛ChallengeUnknownStep异常消息中包含账号名与last_json上下文instagrapi/mixins/challenge.pyRecaptchaChallengeFormreCAPTCHA 表单抛RecaptchaChallengeForminstagrapi/mixins/challenge.pyLegacyForceSetNewPasswordForm要求使用智能手机登录 Instagram 并修改密码抛LegacyForceSetNewPasswordForminstagrapi/mixins/challenge.py。自拍验证与人工审核挑战ChallengeSelfieCaptcha异常类见 instagrapi/exceptions.py以及自拍/人工审核类流程是 Instagram 的账号审查决定instagrapi不提供任何通用绕过手段。当这类挑战在注册或登录期间反复出现时停止自动化流程保持同一个账号、设备、代理上下文不变不要频繁重建 session、更换 IP尽可能在官方 App 中人工解决账号问题。源码中step_name selfie_captcha直接抛出ChallengeSelfieCaptcha(self.last_json)instagrapi/mixins/challenge.py即 instagrapi 的立场是识别并明确上报而非绕过。完整实战示例通过 Gmail IMAP 自动读取验证码官方文档与示例仓库 examples/challenge_resolvers.py 提供了一个可直接运行的邮箱取码实现。它用imaplib连接 Gmail IMAP、扫描未读邮件、按用户名匹配验证码邮件并提取 6 位数字import email import imaplib import re def get_code_from_email(username): mail imaplib.IMAP4_SSL(imap.gmail.com) mail.login(CHALLENGE_EMAIL, CHALLENGE_PASSWORD) mail.select(inbox) result, data mail.search(None, (UNSEEN)) assert result OK, Error1 during get_code_from_email: %s % result ids data.pop().split() for num in reversed(ids): mail.store(num, FLAGS, \\Seen) # mark as read result, data mail.fetch(num, (RFC822)) assert result OK, Error2 during get_code_from_email: %s % result msg email.message_from_string(data[0][1].decode()) payloads msg.get_payload() if not isinstance(payloads, list): payloads [msg] code None for payload in payloads: body payload.get_payload(decodeTrue).decode() if div not in body: continue match re.search(([^]*?({u})[^]*?).format(uusername), body) if not match: continue print(Match from email:, match.group(1)) match re.search(r(\d{6}), body) if not match: print(Skip this email, code not found) continue code match.group(1) if code: return code return False配套的短信取码函数交互式输入便于本地调试与完整入口如下import random from instagrapi import Client from instagrapi.mixins.challenge import ChallengeChoice def get_code_from_sms(username): while True: code input(fEnter code (6 digits) for {username}: ).strip() if code and code.isdigit(): return code return None def challenge_code_handler(username, choice): if choice ChallengeChoice.SMS: return get_code_from_sms(username) elif choice ChallengeChoice.EMAIL: return get_code_from_email(username) return False def change_password_handler(username): chars list(abcdefghijklmnopqrstuvwxyz1234567890!£#) return .join(random.sample(chars, 10)) if __name__ __main__: cl Client() cl.challenge_code_handler challenge_code_handler cl.change_password_handler change_password_handler cl.login(IG_USERNAME, IG_PASSWORD)实战要点示例中的CHALLENGE_EMAIL/CHALLENGE_PASSWORD是收件邮箱的 IMAP 凭据通常需要开启 Gmail 的允许不够安全的应用或使用应用专用密码与登录的IG_USERNAME/IG_PASSWORD相互独立邮箱正则(\d{6})是启发式提取先按邮件正文中是否出现目标用户名来过滤无关邮件再抽取 6 位数字。若你的验证码邮件格式不同应调整正则而不是修改框架行为代码对没找到 code返回False假值正好契合框架假值 尚未拿到验证码稍后重试的约定完整的 SMS/Email 自动提交示例保存在 examples/challenge_resolvers.py所有挑战解析的实现集中在 instagrapi/mixins/challenge.py。长时间自动化任务的会话保持策略官方文档明确建议对于长时间运行的自动化任务在挑战处理前后持久化客户端设置以便在挑战解决后无需重建整套设备/会话状态即可重试。具体到 instagrapi 的实践使用Client().settings序列化当前会话含 cookies、device 信息、uuid 等挑战被ChallengeRequired中断后可从磁盘恢复再重新登录异常消息中反复出现retry with the same saved client settings, device identifiers, and proxy/IP正是因为 Instagram 的挑战判定与设备指纹、IP 一致性强相关——换设备或换 IP 重试往往导致挑战升级为人工审核Bloks 重定向场景下保持同一 client 实例存活 官方 App 确认 challenge_bloks_redirect_dismiss()是唯一能衔接人工与自动化两段流程的路径参见 instagrapi/mixins/challenge.py 与 tests/regression/test_challenge.py。Bug 报告规范如何安全地提交上下文遇到无法解决的挑战时向项目提交 issue 应包含脱敏后的client.last_json、异常类名以及触发流程严禁在报告中分享cookies、session ID手机号、邮箱地址密码与验证码。源码在多数异常路径上已经做了脱敏上下文处理_challenge_error_context()与challenge_code_or_raised的错误上下文都会从last_json中剔除message键后透传instagrapi/mixins/challenge.pyChallengeRequired._message_for_payload则根据载荷特征生成可读的错误说明instagrapi/exceptions.py。即便如此last_json中可能仍包含部分掩码后的联系方式如x****gy*****.com提交前请人工复查一遍。总结挑战类型自动/人工涉及的 handler 或异常验证码验证Email/SMS自动challenge_code_handler(username, choice)密码重置/强制改密自动change_password_handler(username)submit_phone手机号绑定自动需client.phone_number先提交手机号再走ChallengeChoice.SMSsignup 注册挑战自动实验性challenge_code_handlerRuntimeWarning/auth_platform/人工ChallengeRequired不自动支持native flow 原生挑战人工ChallengeRequired不调用任何 handlerBloks 重定向 checkpoint人工可衔接ChallengeRequiredchallenge_bloks_redirect_dismiss()自拍/人工审核人工ChallengeSelfieCaptchareCAPTCHA / 未知 step人工RecaptchaChallengeForm/ChallengeUnknownStepinstagrapi 的挑战解析设计遵循一条清晰的分界线凡是暴露了明确 code/password 步骤的旧式流程尽量自动化凡是平台要求人工确认的 checkpoint明确报错并提示保持会话上下文后人工处理。掌握这条分界线再结合本文给出的 handler 注册方式与ChallengeChoice语义你就能把登录挑战从阻断自动化的黑盒变成可观测、可重试、可上报的确定环节。赞分享网页爬虫【免费下载链接】instagrapi The fastest and powerful Python library for Instagram Private API 2026 with HikerAPI SaaS项目地址https://gitcode.com/gh_mirrors/in/instagrapi点击查看免费下载相关推荐instagrapi 快速上手安装、登录与会话持久化实战指南instagrapi 快速上手安装、登录与会话持久化实战指南 本篇指南围绕 instagrapi 的入门链路展开如何安装这个非官方的 Instagram A网页爬虫instagrapi 示例脚本实战指南从会话登录、登录诊断到媒体上传的完整可运行模板instagrapi 示例脚本实战指南从会话登录、登录诊断到媒体上传的完整可运行模板 本指南以 examples/README.md https://link网页爬虫终极VSCode Fortran插件指南5分钟快速上手教程终极VSCode Fortran插件指南5分钟快速上手教程 想要在Visual Studio Code中高效编写Fortran代码吗fortran lang网页爬虫上一篇ArduinoJson 支持与高效求助指南在 X-TRACK 嵌入式项目中定位、复现与提交 JSON 问题下一篇recipe-scrapers 架构揭秘理解HTML解析、Schema标记和OpenGraph元数据处理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

微信聊天记录如何搬到外置盘?AppPorts APFS挂载迁移完整教程

微信聊天记录如何搬到外置盘?AppPorts APFS挂载迁移完整教程

微信聊天记录如何搬到外置盘?AppPorts APFS挂载迁移完整教程 【免费下载链接】AppPorts 📦 A macOS utility to seamlessly migrate applications to external storage and reclaim local disk space.【一款 macOS 工具,无缝迁移应用到外部存…

2026/10/9 3:06:54 阅读更多 →
LetRecovery 在线下载功能实战:Aria2 多线程加速,一键获取微软官方系统镜像

LetRecovery 在线下载功能实战:Aria2 多线程加速,一键获取微软官方系统镜像

LetRecovery 在线下载功能实战:Aria2 多线程加速,一键获取微软官方系统镜像 【免费下载链接】LetRecovery 一款免费开源的 Windows 系统重装工具 项目地址: https://gitcode.com/gh_mirrors/le/LetRecovery 📌 为什么你需要一个靠谱的…

2026/10/9 3:06:54 阅读更多 →
5个真正靠谱的XML格式化工具推荐与工程化实践

5个真正靠谱的XML格式化工具推荐与工程化实践

1. 为什么XML格式化这件事&#xff0c;90%的开发者还在用“复制粘贴空格对齐”硬扛你有没有过这样的时刻&#xff1a;凌晨两点&#xff0c;调试一个接口返回的XML数据&#xff0c;肉眼在密密麻麻的<tag>和</tag>之间反复横跳&#xff0c;就为了确认某个<status&…

2026/10/9 3:06:54 阅读更多 →

最新新闻

双指针算法全攻略:对撞、快慢、滑动窗口三大模板与实战总结

双指针算法全攻略:对撞、快慢、滑动窗口三大模板与实战总结

刷题刷到一定量&#xff0c;很多人会慢慢总结出一条规律&#xff1a;有一类题的解法特别“固定”——有序数组里找两个数凑目标值、链表中判断有没有环、字符串里找不重复的最长子串&#xff0c;题面长得完全不一样&#xff0c;翻开题解一看&#xff0c;底层全是同一个思路&…

2026/10/9 3:32:13 阅读更多 →
医疗NLP实战:词典构建与最大匹配实体标注

医疗NLP实战:词典构建与最大匹配实体标注

简介&#xff1a;一套基于Python与Jupyter构建的医疗实体识别模型资源&#xff0c;面向疾病、症状、身体部位三类实体&#xff0c;完整呈现词典构造、语料标注、模型训练与结果评估的工程化流程。压缩包共147个文件&#xff0c;约581MB&#xff0c;具体包含18个txt词典/文本、1…

2026/10/9 3:32:13 阅读更多 →
Git远程分支覆盖本地分支:reset、clean实操与急救指南

Git远程分支覆盖本地分支:reset、clean实操与急救指南

1. 什么时候需要“用远程分支覆盖本地分支”先聊个真实的场景。我在维护一个项目时&#xff0c;远程仓库里develop分支已经被同事 rebase 重新整理过&#xff0c;提交历史完全换了样子。我本地还停在老版本上&#xff0c;这时候直接git pull会提示分叉严重&#xff0c;甚至直接…

2026/10/9 3:32:13 阅读更多 →
Cache模拟器实战:从映射原理到命中率计算的完整工程解析

Cache模拟器实战:从映射原理到命中率计算的完整工程解析

简介&#xff1a;一份面向计算机组成原理与操作系统学习者的缓存模拟器源码&#xff0c;在Visual Studio 2010环境下编写&#xff0c;通过读取地址流文件模拟处理器访存行为&#xff0c;可设置缓存容量、块大小&#xff0c;并支持直接映射、组关联映射、全关联映射三种策略&…

2026/10/9 3:32:13 阅读更多 →
Servlet配置实战:web.xml与@WebServlet注解全面解析

Servlet配置实战:web.xml与@WebServlet注解全面解析

Servlet这个词&#xff0c;放在今天动辄微服务、云原生的大环境下&#xff0c;多少有点“老古董”的感觉。但你只要还在写Java后端&#xff0c;不管用Spring Boot还是Spring MVC&#xff0c;请求真正进来之后&#xff0c;最终处理的还是Servlet容器那一层。很多新人会直接跳过S…

2026/10/9 3:32:13 阅读更多 →
Claude Code与桌面版安装教程:环境配置、VS Code插件及MCP部署

Claude Code与桌面版安装教程:环境配置、VS Code插件及MCP部署

最近一直被同一个问题刷屏&#xff1a;“Claude到底怎么装&#xff1f;”尤其是Claude Code这三个月火起来之后&#xff0c;各大群里问安装的比问用法的还多。我前前后后帮朋友远程装过几十次&#xff0c;也踩了不少坑——什么安装到一半卡死、装完打开白屏、输入命令提示找不到…

2026/10/9 3:31:13 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题&#xff0c;隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题&#xff0c;排查到最后发现是ZonedDateTime序列化后时区丢了&#xff0c;用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问&#xff1a;办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好&#xff0c;问题是工作场景经常要在几处环境之间来回切换&#xff0c;每次都先登录跳板机再层层代理&#xff0c;实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及&#xff0c;但真正动手搭过一套能跑起来的 Agent 系统的人都知道&#xff0c;从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地&#xff0c;从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →