企业微信OAuth接入实战:Java后端获取UserId完整指南
先直接说结论企业微信应用接入获取 UserId 这件事本质上是借企业微信的 OAuth 授权能力把“当前访问者是谁”这个问题交给企业微信来回答。Java 后端要做的核心动作就三个构造授权链接、接收回调参数、拿 code 调接口换 userid。听起来不复杂但我在实际接入过程中还是踩了不少配置和细节上的坑尤其是回调域配置、URL 编码、access_token 缓存这几个点很容易卡住大半天。这篇文章以自建应用为主线把完整流程、可复现的代码、常见报错和排查思路都梳理出来帮后面接入的人少走弯路。1. 先想清楚整体链路企业微信登录到底在做什么1.1 业务场景拆解大多数场景都是这样的公司内部的 OA 系统、审批应用、报表后台部署在 Web 服务器上员工从企业微信的工作台点开应用页面就直接进入系统。但 Web 服务器怎么知道“打开这个页面的人是谁”这就需要一个统一的身份识别机制。企业微信本身就是组织通讯录的管理者员工身份已经存在里面所以最合理的方式就是直接利用企业微信的身份体系员工点击应用 → 企业微信确认身份 → 把身份信息传给后端 → 后端完成登录或绑定。如果你做过微信生态的开发会发现这个套路很熟悉。企业微信的 OAuth 流程和微信公众号、小程序的原生登录有相似之处但具体接口和参数差异很大不能混用。做之前把链路理清楚后面每个环节的报错都能定位得更快。1.2 技术方案定型为什么是 OAuth 授权码模式企业微信开放了多种身份获取方式但对自建应用来说最常见的、也是官方主推的方案就是 OAuth 授权码模式Authorization Code。这个模式的好处是在整个过程中应用密钥 secret 永远不会暴露给前端浏览器它只留在后端服务器上。code 是一次性的有效期只有几分钟即使被截获也无法长期使用。userid 则是员工在企业微信通讯录中的唯一标识后续做权限绑定、审批流对接都用它作为人员主键。我也见过有人想走另一条路让用户自己在页面上输入企业微信账号密码。这是绝对不可取的一方面企业微信本身就不允许这么做另一方面等于自己绕开了统一身份认证安全风险直线上升。直接走 OAuth 是正规、安全、工作量最小的方案。1.3 整个链路的数据流与关键术语把完整链路画成文字就是下面这样员工在企业微信中打开应用前端页面检测到没有登录态跳转到企业微信授权页。企业微信校验应用身份后将页面重定向到后端配置的回调地址并在 URL 上携带 code 和 state 参数。后端收到 code 后先调用企业微信接口获取 access_token。后端再用 access_token 和 code 调用用户身份接口拿到 userid。后端拿着 userid 去自己的用户表里匹配完成登录态创建。这里涉及四个关键参数我建议一开始就把它们写在项目 README 里分别是参数来源作用corpid企业微信管理后台「我的企业」企业的唯一标识agentid应用管理里的自建应用详情应用的唯一标识secret应用管理里的自建应用详情调用接口的密钥仅后端持有access_token用 corpid secret 换取后续所有接口调用的凭证2. 动手前的后台配置corpid、secret、回调域一个都不能少2.1 应用信息获取登录企业微信管理后台在「应用管理」里创建一个自建应用创建完成后进入应用详情页能看到两个关键信息AgentId 和 Secret。corpid 则在「我的企业」页面的企业信息里。这三个值就是整个接入的起点。Secret 是敏感信息建议不要直接写在代码仓库里而是放到配置中心或环境变量中。我见过有人把 secret 提交到 Git 仓库后来整个仓库都泄露了不得不重置应用密钥还影响了线上业务。这个坑最好从一开始就避开。2.2 网页授权回调域配置这一步是整个接入过程中最容易出问题的地方。企业微信要求你在应用详情里配置「网页授权及 JS-SDK」的可信域名并且这个域名必须和你实际回调地址的域名一致。配置完成后企业微信在授权时只会重定向到这个域名下其他域名一律拒绝返回的错误基本都会指向 redirect_uri 不合法。注意这个域名配置的是根域名还是具体路径答案是需要看你用的服务器和代理方式。一般建议配置到域名的根层级让回调路径支持任意子路径。比如回调地址是https://oa.example.com/wecom/callback那可信域名就配oa.example.com。如果回调地址还涉及多个端口也要确认端口是否能被企业微信正常回调通常企业微信只允许 80 和 443 端口或者经过 HTTPS 协议访问。2.3 IP 白名单与 HTTPS 要求在企业微信管理后台的「应用管理 → 自建应用」里还有一个容易被忽略的配置企业可信 IP。如果你调用的接口需要在服务器端发起请求那么服务器的公网出口 IP 必须加到可信 IP 白名单里否则接口会直接返回调用来源不合法的错误。尤其要注意公司出口 IP 可能会有多条链路比如办公网和机房是两个不同的出口都要加进去。HTTPS 建议必须配。企业微信的授权流程本身允许 HTTP但在生产环境中回调地址如果不是 HTTPS用户访问时会非常危险而且一些浏览器新版本会直接拦截。我在测试环境图省事用 HTTP 跑通过但真到了联调和生产部署阶段还是得把 HTTPS 证书补齐。现在免费的 HTTPS 证书申请很方便不要在这上面省事。3. Java 端完整实现从授权链接到 userid3.1 工程结构与环境准备这一节给出一个完整的可运行参考实现。我用的是 Spring Boot 2.7 Hutool 工具库也可以用原生 HttpClient 或 RestTemplate核心逻辑一样。工程结构大致如下WeComProperties读取配置文件中的 corpid、agentid、secret 等参数。WeComService负责生成授权链接、获取 access_token、通过 code 换 userid。WeComCallbackController处理企业微信回调请求。pom.xml 里需要引入 web 和 hutool 依赖如果你不想用 Hutool自己封装一个 HttpClient 工具类也没问题。重点是逻辑不是某一家包。3.2 配置类与实体application.yml 里配置企业微信相关参数生产环境建议把这些值放到配置中心或环境变量中wecom: corpid: ww1234567890abcdef agentid: 1000002 secret: your-app-secret callback-host: https://oa.example.com callback-path: /wecom/callback对应的配置类Data Component ConfigurationProperties(prefix wecom) public class WeComProperties { private String corpid; private Integer agentid; private String secret; private String callbackHost; private String callbackPath; }3.3 核心服务构建授权链接企业微信授权页的 URL 格式是固定的构造时最关键的坑是 redirect_uri 必须做 URL 编码而且要把编码结果直接拼进 URL。如果漏了这一步企业微信解析 redirect_uri 时会失败直接报 redirect_uri 错误。state 参数用于防 CSRF建议每次生成授权链接时都带上一个随机值存到 session 或 Redis 里回调时校验。Service Slf4j public class WeComService { private static final String AUTHORIZE_URL https://open.weixin.qq.com/connect/oauth2/authorize; private static final String TOKEN_URL https://qyapi.weixin.qq.com/cgi-bin/gettoken; private static final String USERINFO_URL https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo; private final WeComProperties props; public WeComService(WeComProperties props) { this.props props; } public String buildAuthorizeUrl(String state) { String callbackUrl props.getCallbackHost() props.getCallbackPath(); String encodedRedirectUri URLEncoder.encode(callbackUrl, StandardCharsets.UTF_8); return AUTHORIZE_URL ?appid props.getCorpid() redirect_uri encodedRedirectUri response_typecode scopesnsapi_base state state #wechat_redirect; } }scope 这里我选的是snsapi_base这是静默授权用户在企业微信中不会有任何弹窗确认直接跳转到回调地址。如果你的应用只需要拿 userid用这个就够了。还有一种snsapi_userinfo会请求用户授权获取更多资料但大部分内部应用场景根本不需要而且会打扰用户。能不用就不用。agentid参数在授权链接中不是必传但如果你想在企业微信授权页上做更细的跳转控制可以把它也加上不影响主流程。3.4 核心服务code 换取 userid拿到 code 之后后端需要先获取 access_token再用 access_token 调用户身份接口。这里有个细节access_token 是所有企业微信 API 调用的公共凭证有效期 7200 秒不能每次都现拿必须缓存。我先给出一个最简版的实现稍后会专门讲缓存细节。public String getAccessToken() { String url TOKEN_URL ?corpid props.getCorpid() corpsecret props.getSecret(); String body HttpUtil.get(url); JSONObject json JSONUtil.parseObj(body); if (json.getInt(errcode, 0) ! 0) { log.error(获取 access_token 失败: {}, body); throw new RuntimeException(获取 access_token 失败); } return json.getStr(access_token); } public String getUserIdByCode(String code) { String accessToken getAccessToken(); String url USERINFO_URL ?access_token accessToken code code; String body HttpUtil.get(url); JSONObject json JSONUtil.parseObj(body); if (json.getInt(errcode, 0) ! 0) { log.error(根据 code 获取用户信息失败: {}, body); throw new RuntimeException(根据 code 获取用户信息失败); } return json.getStr(userid); }这里有两个容易掉的坑。第一code 是一次性的用完即失效不能重复使用。如果你在测试时连续调试同一个 code第二次大概率会报 code 无效。第二userid 是通讯录里的账号不是手机号、不是姓名被绑定到具体员工上。如果一个应用需要显示员工姓名之后还要调通讯录成员详情接口根据 userid 再换姓名和头像。3.5 Controller 回调处理与 state 校验回调接口是整个流程的最后一环也是前端和后端联动的关键。企业微信重定向时会带着 code 和 state 参数后端要先校验 state防止 CSRF 攻击再拿 code 换 userid最后根据业务做登录态写入。RestController RequestMapping(/wecom) public class WeComCallbackController { private final WeComService weComService; public WeComCallbackController(WeComService weComService) { this.weComService weComService; } GetMapping(/callback) public String callback(RequestParam(code) String code, RequestParam(state) String state, HttpSession session) { // 1. 校验 state防 CSRF String expectedState (String) session.getAttribute(wecom_state); if (expectedState null || !expectedState.equals(state)) { throw new RuntimeException(state 校验失败); } // 2. code 换 userid String userId weComService.getUserIdByCode(code); // 3. 在这里基于 userId 做用户绑定、登录态创建等业务逻辑 return 登录成功 userId; } }回调接口返回的类型和格式根据你的业务来定。如果是给前端页面回跳通常会重定向到某个前端路由并携带临时票据如果是纯接口对接可以直接返回 JSON。这里的HttpSession用法只是示意如果服务是多实例部署建议把 state 放到 Redis 里。4. access_token 的缓存与并发刷新别让 token 管理拖垮你4.1 access_token 有效期与缓存策略access_token 的有效期是 7200 秒也就是 2 小时。官方文档明确说企业在一天内获取 access_token 的次数是有限制的频繁获取会触发频控接口直接拒绝服务。所以在生产环境里access_token 绝对不能每次请求现获取必须在内存或分布式缓存里做存储并设置合理的过期时间。比较保守的做法是提前 60 秒就认为 token 过期主动刷新避免在边界情况下刚好卡在 token 失效的窗口里。刷新时要考虑并发问题如果多个线程同时发现 token 过期同时发起刷新请求既浪费调用次数还可能出现刷新后的 token 覆盖问题。4.2 单机内存缓存写法单实例部署时最简单稳妥的办法是 synchronized 加双重检查锁保证只有一个线程去刷新 token其他线程直接复用刷新后的结果。下面这个写法我在项目里用过线上跑了很长时间都没问题private volatile String accessToken; private volatile long expireAt; public String getAccessToken() { if (accessToken ! null expireAt - System.currentTimeMillis() 60_000L) { return accessToken; } synchronized (this) { if (accessToken ! null expireAt - System.currentTimeMillis() 60_000L) { return accessToken; } String url TOKEN_URL ?corpid props.getCorpid() corpsecret props.getSecret(); String body HttpUtil.get(url); JSONObject json JSONUtil.parseObj(body); if (json.getInt(errcode, 0) ! 0) { throw new RuntimeException(获取 access_token 失败: body); } this.accessToken json.getStr(access_token); this.expireAt System.currentTimeMillis() json.getInt(expires_in) * 1000L; return this.accessToken; } }这样写虽然逻辑简单但在一个小小的临界区里完成了 token 刷新能避免并发情况下重复刷新。性能上完全没有问题因为正常情况下请求都会命中第一层判断真正进入 synchronized 块的频率极低。4.3 多实例部署时的 Redis 方案建议如果服务是横向扩容的比如多个 Pod 或者多台服务器同时部署再用 JVM 内存缓存就会出现一个问题每个实例各持有一份 access_token刷新时机不一致容易造成 token 混乱还会白白消耗频繁调用的额度。这种情况建议统一走 Redis 缓存。方案是在 Redis 里存一个 key例如wecom:access_token:{corpid}value 存 token 字符串过期时间设成 7000 秒。取 token 时先从 Redis 查查不到就加一个分布式锁。可以用 Redis 的 setnx 或者 Redisson 的 Lock 实现锁住后再次从 Redis 查一遍如果还是没有就重新调用获取接口并写入 Redis。这样能保证整个集群中同时在刷 token 的请求只有一个。在大型企业里如果多个应用都接入了同一个企业微信它们各自的 secret 不同所以 token 是不同的缓存 key 一定要带上应用的唯一标识不要只存一个全局 token。你可以在 key 里同时体现 corpid 和应用 secret 的哈希值避免混用。5. 常见错误与排查实录5.1 错误码速查表我整理了一份高频错误码速查表接入时如果遇到对应报错能少走不少弯路错误码含义常见原因与解决思路40001secret 不合法检查 secret 是否抄错是否混入了空格是否在多个应用间混淆40002redirect_uri 未通过校验回调域名没有配置到网页授权可信域或 URL 编码有问题40014access_token 不合法token 缓存丢失或手动重置过 secret重新获取即可40029code 无效或已过期code 一次性使用后失效或者过期时间超过 5 分钟40164调用 IP 不在白名单将服务器公网出口 IP 加到企业微信可信 IP 里42001access_token 过期检查缓存逻辑刷新 token 的时间窗口是否能覆盖 7200 秒45009接口调用超频一天内获取 token 次数太多检查是否每次请求都在刷新 token5.2 我踩过的两个必记的坑第一个坑是回调域名配置和 URL 编码。当时我把 redirect_uri 直接拼在原 URL 上没有做 URLEncoder 编码回调地址里带了接口路径和问号参数结果企业微信一直报 redirect_uri 不合法。后来把整个 redirect_uri 编码之后再拼接问题立刻消失。记住最终生成授权链接时redirect_uri 必须是编码后的字符串而且只能编码一次别把整个授权链接都编码了。第二个坑是 state 校验。一开始我以为 state 只是随便填一个字符串就行结果被前辈指出如果不校验 state攻击者可以构造一个授权链接诱导用户点击拿到用户的 code 后回跳到你的后端通过 POST 或 GET 伪造回调从而让后端以受害者身份登录。我在本地测了很久才发现这个问题的重要性。现在的标准做法是在发起授权跳转前生成一个随机字符串当作 state存到 session 或 Redis 中同时在回调接口里对比传回来的 state 与存储值。不一致就拒绝。5.3 排查问题时的通用思路如果你在接入过程中遇到问题了先别急着翻代码按下面这个顺序排查基本能解决大部分问题第一步确认后台配置是否符合corpid、secret、可信域名、IP 白名单、应用是否在企业微信管理后台正确启用。第二步确认请求 URL 是否正确授权链接的 redirect_uri 是否编码回调链接是否能在浏览器里直接访问后端日志里是否能收到回调请求。第三步确认 code 和 token 是否配对同一个 code 不能换两次用户信息每次请求 token 的 corpid 和 corpsecret 要匹配token 是否过期或被重置。第四步确认环境问题服务器时间是否准确代理或负载均衡是否剥掉了原始请求的 Host 头HTTPS 证书是否有效。这四步走下来绝大多数问题都能定位到具体环节。剩下的一小部分问题通常就需要看企业微信官方接口文档里对应错误码的详细说明了。6. 最后分享几条实际操作经验这套流程做完之后我想再分享几个平时不那么容易在文档里看到但实际非常影响体验的处理习惯。第一前端拿到 userid 后不要直接把它当作登录凭证用。userid 只是企业的内部账号如果系统被爆破或泄露攻击者拿到一个 userid 并不能直接证明身份。正确做法是在换取 userid 后后端自己生成一个 session token 或 JWT设置合理的过期时间管理登录状态。userid 只作为用户身份的唯一标识不参与鉴权。第二整个换取 userid 的过程建议在服务端完成不要让前端直接拿着 code 去调企业微信接口。code 虽然是一次性的但如果前端暴露了 access_token就等于把整个后端接口的钥匙交了出去。把获取 userid 的逻辑封在 service 层前端只感知“登录成功”或“登录失败”安全性会高很多。第三如果后续还有“根据 userid 补充员工姓名、部门、头像”的需求可以再调企业微信通讯录成员详情接口。我这里没有展开讲但接口和流程不复杂核心仍是用 access_token 作为凭证再做一次 GET 请求。做之前建议看下员工在通讯录中的可见范围有些员工信息可能需要特殊权限才能读取。第四调试的时候最好在企业微信客户端里测而不是在普通浏览器里访问授权链接。普通浏览器打开授权链接后会走企业微信的登录页流程逻辑上没问题但用户体验和跳转细节会和客户端内不一样。我早期在 Chrome 里测过一次遇到了页面显示“请在微信客户端打开”的情况吓一跳后来才发现只是不同客户端的处理差异不用紧张。最后这套 OAuth 授权模式只要走通一遍后面接企业微信的其他能力比如通讯录同步、消息推送、审批事件回调思路基本都是相通的后台配权限、后端拿 token、接口换数据。把这次的基础打好后续扩展会轻松很多。

相关新闻

JSP企业电子投票系统源码实战:从环境搭建到二次开发完整指南

JSP企业电子投票系统源码实战:从环境搭建到二次开发完整指南

简介:这是一套面向Java Web初学者与课程设计者的JSP企业电子投票系统完整源码,基于JSP、Tomcat与JDK环境开发,适合用于毕业设计、课程实训或投票类功能模块的学习参考。系统分为普通用户与管理员两大模块:用户可登录退出、对已开放…

2026/10/17 16:10:25 阅读更多 →
GPS轨迹降噪:从几何滤波到运动状态建模的工程实践

GPS轨迹降噪:从几何滤波到运动状态建模的工程实践

简介:本资源是一套面向GIS开发工程师、位置服务算法工程师及Python数据处理学习者的GPS轨迹降噪实践工具包,聚焦解决智能终端采集的原始GPS数据中普遍存在的噪点、跳变点与异常漂移问题,适用于物流跟踪、运动轨迹分析、车载导航优化等实际场景…

2026/10/17 16:10:25 阅读更多 →
Linux 终端提示符 PS1 自定义指南:原理、颜色与动态信息实战

Linux 终端提示符 PS1 自定义指南:原理、颜色与动态信息实战

你有没有过这样的时刻?费了半天劲装好系统,打开终端一看,光标前面永远是那个灰头土脸的 userhost:~$ ,用三天就腻了。想改吧,网上教程东一句西一句,不是让你装这个框架就是装那个工具,改完还不…

2026/10/17 16:09:24 阅读更多 →

最新新闻

SPC开发包源代码实战:控制图与过程能力计算落地指南

SPC开发包源代码实战:控制图与过程能力计算落地指南

简介:这份SPC开发包源代码面向工业自动化与现场总线方向的嵌入式开发者,聚焦Profibus-DP从站通信的底层实现,适合已具备C语言基础、希望深入理解协议栈细节的中高级工程师。压缩包共4个文件,包含3个c源文件与1个h头文件&#xff0…

2026/10/17 17:12:18 阅读更多 →
人工智能导论期末冲刺:知识表示、归结原理与可信度计算全攻略

人工智能导论期末冲刺:知识表示、归结原理与可信度计算全攻略

简介:这是一份山东大学《人工智能导论》课程概念汇总PDF,适合正在备考期末、考研复试或系统梳理AI基础概念的本科生与自学读者。内容以章节为主线,从智能、知识、智能特征出发,梳理人工智能定义与发展阶段;随后系统整理…

2026/10/17 17:12:18 阅读更多 →
Serv-U 14.0白金版实战:老文件服务器安全升级与多协议配置指南

Serv-U 14.0白金版实战:老文件服务器安全升级与多协议配置指南

简介:Serv-U 14.0 白金版是一款面向专业用户与企业级场景的 FTP 服务器软件,主打高效、安全的文件传输与稳定的服务运营。该资源包聚焦其界面与传输历史记录相关的前端素材,适合正在部署或维护 FTP 服务、需要了解历史记录模块实现方式的运维…

2026/10/17 17:12:17 阅读更多 →
claude-code-templates 不是 CLI:本地代码知识库的正确打开方式

claude-code-templates 不是 CLI:本地代码知识库的正确打开方式

1. 这不是又一个 CLI 工具:Claude-Code-Templates 的真实定位与误用陷阱“claude-code-templates”——光看这个名字,绝大多数人第一反应是:“哦,Anthropic 官方出的 Claude 代码生成 CLI?”或者“是不是类似 Copilot …

2026/10/17 17:12:17 阅读更多 →
光伏功率预测新框架:VMD-RIME-LSTM原理与Matlab实战

光伏功率预测新框架:VMD-RIME-LSTM原理与Matlab实战

现在到处都能看到光伏功率预测的论文,组合模型一个比一个花哨,但很多同学卡在同一个地方:方法选了一堆,真正能跑出干净结果、还能把论文故事讲完整的没几个。最近被问得最多的就是"变分模态分解霜冰算法优化LSTM"这条路…

2026/10/17 17:12:17 阅读更多 →
Unity虚拟装配中的机械运动仿真:从可视化到工程验证

Unity虚拟装配中的机械运动仿真:从可视化到工程验证

1. 这不是“转个齿轮”那么简单:虚拟装配仿真里藏着的机械逻辑陷阱很多人第一次在Unity里拖进一个齿轮模型,加个Rigidbody和HingeJoint,再写几行代码让电机轴转起来,看到齿轮咬合转动,就以为“机械运动仿真”这事搞定了…

2026/10/17 17:11:17 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →