
ArtCraft 接入 Midjourney 的底层秘密Rust Cookie 存储与 Cloudflare 防护库完整拆解【免费下载链接】artcraftArtCraft is an intentional crafting engine for artists, designers, and filmmakers项目地址: https://gitcode.com/gh_mirrors/ar/artcraftArtCraft是一款面向艺术家、设计师与电影人的AI 创作 IDE把提示词变成可重复、可精确控制的创作工艺原生支持 Midjourney、Sora、Grok、World Labs 等多家 AI 提供商。本文将拆解 ArtCraft 接入Midjourney的完整底层链路Rust 编写的Cookie 存储库如何安全保存登录凭据Cloudflare 防护库如何识别人机验证并模拟真实浏览器请求头。即使你是新手也能看懂这套AI 绘图引擎背后的工程细节。 本文核心关键词ArtCraft · Midjourney 接入 · Rust Cookie 存储 · Cloudflare 防护 · AI 绘图一、ArtCraft 是什么一个会创作的 AI 图像引擎ArtCraft 定位是The IDE for artists——它不只是把文字丢给模型出图而是让你先搭场景再生成2D 合成、3D 摆位、角色姿势、镜头机位全部可视化。在快速提示这条主线上ArtCraft 把多家提供商统一成同一个入口提供商能力ArtCraft图像、视频、音乐、3D 网格、世界Midjourney图像生成本文主角SoraSora 1 / 2、GPT Image 1GrokGrok Imagine / Grok VideoWorld LabsMarble 高斯泼溅世界也就是说你在 ArtCraft 里输入一句提示词背后会路由到不同引擎。Midjourney 之所以特殊是因为它没有公开 APIArtCraft 必须用 Cookie 模拟登录态、用请求头伪装成真实浏览器才能打通——这正是本文要拆解的两个秘密。二、Midjourney 如何接入 ArtCraft三条核心链路把一句话出图翻译成代码ArtCraft 需要串起三件事登录态—— 用两个认证 Cookie 证明我是你。提交任务——text_to_image配方把提示词 频道 ID 打包附上cookie_header和BrowserProfile浏览器指纹提交。收进度—— 用 WebSocket 监听作业生成进度取回图片 URL。对应的代码入口在 text_to_image.rspub async fn text_to_image(args: TextToImageArgs_) - ResultTextToImageResponse, MidjourneyError { // prompt channel_id → 附上 cookie_header 与 browser 指纹 → 提交作业 let response submit_job(SubmitJobArgs { request, cookie_header, hostname, browser }).await?; // 成功拿到 maybe_job_id失败拿到结构化错误含 SubscriptionRequired 等 }注意这里两个关键参数cookie_header登录态与browser浏览器指纹。它们分别来自本文后面两大库——Cookie 存储库和Cloudflare 防护 / 浏览器模拟库。三、Rust Cookie 存储库一套两层设计很多新手会问一个存 Cookie的库为什么要写两层答案藏在职责分层里。ArtCraft 把 Cookie 拆成底层极简模型和上层合规封装。3.1 底层cookie_store名字-值的最小映射最底层的 cookie_store.rs 只做一件事——把 Cookie 存进一个哈希表pub struct CookieStore { pub cookies: HashMapString, Cookie, // 键 Cookie 名 }它提供了add_cookie/get_cookie/has_cookie/to_cookie_string等极简 API并刻意保持轻量源码里也标注了TODO暂不处理子域名、路径匹配。它是积木不是成品。3.2 上层cookie_store_wrapper符合 RFC 6265 的真实 Cookie 罐真正像浏览器的能力全部在这一层 cookie_store.rs。它在 RFC 6265 标准库之上封装出三大亮点域 / 路径匹配Cookie 按(domain, path, name)三元组存储同名不同域互不干扰重复的Set-Cookie会替换旧值过期的会删除——和真实服务器行为一致。调试变更日志每一次增/改/删都被记录进有界的CookieChangeLog排查登录流程时 invaluable。跨域安全校验来自other.com的Set-Cookie会被直接拒绝杜绝串域风险。它还能精确按需取 Cookie——只挑出 RFC 6265 匹配会发往目标请求的那一批cookie_header_for_url而不是无脑全发/// 只包含 RFC 6265 域/路径/secure 匹配会发往 request_url 的 Cookie pub fn cookie_header_for_url(self, request_url: Url) - OptionString { ... }3.3 线程安全句柄SharedCookieStore桌面端是多线程的Cookie 罐必须能跨线程共享。shared_cookie_store.rs 用一个经典的组合解决pub struct SharedCookieStore { inner: ArcRwLockCookieStore, // 廉价克隆 读写锁 }多个clone()共享同一份底层数据一个线程写入的Set-Cookie所有持有者立即可见。启用wreq特性后它直接实现 wreq 的CookieStore特征HTTP 客户端会自动把每个Set-Cookie响应回写到共享罐——登录态无感续期。 一句话记忆底层cookie_store管存上层 wrapper 管像浏览器 线程安全 可调试。四、Cloudflare 防护库如何识别人机验证Midjourney 站点由 Cloudflare 守护请求太像机器人就会被拦。ArtCraft 用两个库组合应对识别问题 伪装绕过。4.1cloudflare_errors把 502/504/524 归类cloudflare_error.rs 定义了一个枚举把常见的 Cloudflare 异常状态码翻译成可处理的具体类型枚举状态码含义ChallengeInterstitial403403要弹验证码做人机验证BadGateway502502后端网关异常GatewayTimeout504504网关超时TimeoutOccurred524524连上了但后端没按时回包4.2filter_cloudflare_errors识别验证码挑战filter_cloudflare_errors.rs 是关键——它在 403 响应体里找指纹判断是不是 Cloudflare 的人机验证墙if body.contains(challenge-platform) || body.contains(challenge-error-text) || body.contains(cType: managed) || body.contains(Just a moment...) { return Err(CloudflareError::ChallengeInterstitial403); }识别出来后客户端就能针对性重试或降级而不是笼统地报错。这些 Cloudflare 错误最终会被MidjourneyApiError统一收纳midjourney_api_error.rs。4.3cloudflare_mitigation 浏览器指纹伪装成真人光识别不够还得像人。cloudflare_mitigation库提供真实的浏览器请求头模板如 firefox_websocket_http_1_1_headers.rs配合browser_emulation的BrowserProfile让请求头序列与真实浏览器一致——这是通过 Cloudflare 检测的最后一道关键。 攻防思路cloudflare_errors负责看懂对方在拦什么cloudflare_mitigation负责装得像真人。两者配合才是一条稳定的接入链路。五、登录凭据与安全Midjourney 的认证 Cookie那么登录态到底存在哪答案是两个特定的认证 Cookie。ArtCraft 在 cookie_names.rs 里把它们写死pub const AUTH_COOKIE_NAME_R: str __Host-Midjourney.AuthUserTokenV3_r; pub const AUTH_COOKIE_NAME_I: str __Host-Midjourney.AuthUserTokenV3_i;接入前会先做健康检查——两个 Cookie 必须同时存在才算已登录cookie_store_has_auth_cookies.rspub fn cookie_store_has_auth_cookies(cookie_store: CookieStore) - bool { cookie_store.has_cookie(AUTH_COOKIE_NAME_I) cookie_store.has_cookie(AUTH_COOKIE_NAME_R) }Cookie 里还携带可解码的JWT含midjourney_id、exp过期时间等见 jwt_decode.rsArtCraft 借此解析用户身份并判断是否快过期提前续期避免画到一半掉线。 安全提醒认证 Cookie 等同于钥匙务必妥善保管、不要明文提交进仓库cookie_store_wrapper的变更日志正是为了在调试登录流程时安全地观察凭据流转。六、上手指南从零接入 Midjourney 的四步把上面的链路串起来一次完整接入只需四步准备 Cookie—— 从浏览器 / WebView 拿到登录 Cookie写入SharedCookieStore。校验登录态—— 调用cookie_store_has_auth_cookies确认两个认证 Cookie 都在。发起创作—— 调text_to_image带上cookie_header与BrowserProfile指纹提交作业。处理防护—— 用filter_cloudflare_errors判断是否被拦被拦则按CloudflareError类型重试或降级。✅ 小贴士真正的浏览器行为由cookie_store_wrappercloudflare_mitigation共同保证你只要专注写提示词 搭场景工程细节已被封装。七、关键模块路径速查表能力相对路径Midjourney 客户端入口midjourney_client/src/lib.rs文本转图像配方text_to_image.rs认证 Cookie 名称cookie_names.rs登录态健康检查cookie_store_has_auth_cookies.rs轻量 Cookie 罐cookie_store.rsRFC 6265 完整 Cookie 罐cookie_store_wrapper/cookie_store.rs线程安全共享句柄shared_cookie_store.rsCloudflare 错误归类cloudflare_error.rs验证码挑战识别filter_cloudflare_errors.rs浏览器指纹模拟browser_emulation/browser_profile.rs八、写在最后ArtCraft 接入 Midjourney 的秘密其实是一套教科书级的分层工程Cookie 存储用极简底层 合规上层 线程安全句柄三层既像浏览器又可调试Cloudflare 防护用识别 伪装双库组合稳定穿过人机验证认证凭据用两个特定 Cookie JWT 过期判断实现无感续期。理解了这套链路你不仅能看懂 ArtCraft也能把它当作模板给自己的项目接入任何无公开 API的 AI 服务。【免费下载链接】artcraftArtCraft is an intentional crafting engine for artists, designers, and filmmakers项目地址: https://gitcode.com/gh_mirrors/ar/artcraft创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考