设置Kimi动态头像教程

设置Kimi动态头像教程

Goose Lv3

通过油猴脚本在浏览器中为 Kimi 设置动态头像。脚本读取本地登录 token,在页面添加一个上传按钮,选择 GIF 后调用 Kimi 头像接口。

如果你想偷懒,请见文章结尾~

1. 原理

脚本主要做四件事:

  • 从 localStorage 读取 access_token 或 token
  • 在页面右下角添加“设置头像”按钮
  • 选择本地图片文件
  • 用 fetch 以 FormData 向 https://www.kimi.com/api/user/avatar 发送 POST 请求

请求头模拟 Android 客户端,Authorization 使用 Bearer token。

2. 安装方法

Android

推荐 VIA 浏览器,体积不到 1MB,自带脚本管理。

  1. 安装 VIA 浏览器。
  2. 打开 VIA → 设置 → 通用 → 脚本 → 点击右上角 +。
  3. 选择“新建”,删除默认内容,粘贴脚本代码并保存。
  4. 打开 kimi.com,登录账号并刷新页面。
  5. 右下角出现“设置头像”按钮后,点击选择 GIF 上传。

其他可选:Kiwi Browser + Tampermonkey、Edge + Tampermonkey、Firefox + Violentmonkey。

iOS

  1. 在 App Store 安装 Stay 或 Userscripts。
  2. 设置 → Safari → 扩展 → 启用 Stay/Userscripts。
  3. 打开 kimi.com 并登录。
  4. 点击扩展图标 → 新建脚本 → 粘贴代码 → 保存。
  5. 刷新页面,右下角出现“设置头像”按钮。

Windows / macOS

  1. Chrome / Edge / Firefox 安装 Tampermonkey。
  2. 打开 kimi.com 并登录。
  3. 点击 Tampermonkey 图标 → 创建新脚本 → 粘贴代码 → 保存。
  4. 刷新页面,右下角出现“设置头像”按钮。

其他可选扩展:Violentmonkey、Greasemonkey、ScriptCat。

3. 脚本代码

将以下代码粘贴到脚本管理器中,保存。

// ==UserScript==
// @name Kimi 头像设置器
// @namespace https://viayoo.com/
// @version 0.1
// @description try to take over the world!
// @author You
// @run-at document-idle
// @match https://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';

const btn = document.createElement('button');
btn.textContent = '设置头像';
btn.style.cssText = 'position:fixed;bottom:20px;right:20px;z-index:999999;background:#111;color:#fff;border:2px solid #111;padding:12px 20px;font-size:13px;font-weight:600;cursor:pointer;font-family:sans-serif;';
btn.onclick = () => {
const token = localStorage.getItem('access_token') || localStorage.getItem('token') || '';
const fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.accept = 'image/*';
fileInput.onchange = async (e) => {
const file = e.target.files[0];
if (!file) return;
if (!token) { alert('未找到 Token,请先登录 Kimi'); return; }

const fd = new FormData();
fd.append('file', file);

try {
const resp = await fetch('https://www.kimi.com/api/user/avatar', {
method: 'POST',
headers: {
'R-Timezone': 'Asia/Shanghai',
'x-msh-platform': 'android',
'x-msh-os-version': 'GOOGLE 10',
'x-msh-device-model': 'Google',
'x-msh-session-id': '1',
'x-msh-device-id': '1',
'x-msh-version': '2.5.1',
'x-msh-app-channel': 'kimi',
'x-msh-android-version': '29',
'Authorization': 'Bearer ' + token,
'X-Language': 'zh-CN',
'Accept': 'application/json',
'Accept-Charset': 'UTF-8',
'User-Agent': 'ktor-client',
},
body: fd,
});
const data = await resp.json().catch(() => ({}));
alert(resp.ok ? '上传成功!' : '失败 ' + resp.status + '\n' + JSON.stringify(data));
} catch (err) {
alert('异常: ' + err.message);
}
};
fileInput.click();
};

document.body.appendChild(btn);
})();

4. 使用方法

  1. 在浏览器打开 kimi.com 并登录账号。
  2. 刷新页面,等待右下角出现“设置头像”按钮。
  3. 点击按钮,选择 GIF 文件,等待上传结果。

上传成功后头像会更新。如果 Kimi App 中没有变化,可以清除 App 缓存或重新登录。

注意事项

  • 按钮未出现:确认已登录、页面已刷新、脚本已启用。
  • 上传失败 413:GIF 文件过大,压缩到 5MB 以下。
  • 上传失败 401:token 过期,重新登录后再试。
  • 头像不动:App 可能有缓存,清除缓存或重新安装 App。
  • iOS 无法安装扩展:使用 Stay App,无需越狱。

偷懒方法

将以下的话、你的GIF和你的accesstoken发给Kimi:

这是要设置的头像GIF和我的登录凭证,请使用一下Python代码帮我上传头像
```python
#!/usr/bin/env python3
# 用法:
# export KIMI_TOKEN="你的token"
# python kimi_avatar.py avatar.gif
# 或:
# python kimi_avatar.py avatar.gif --token "xxx"

import os
import sys
import argparse
import mimetypes

import requests

URL = "https://www.kimi.com/api/user/avatar"


def build_headers(token: str) -> dict:
return {
"R-Timezone": "Asia/Shanghai",
"x-msh-platform": "android",
"x-msh-os-version": "GOOGLE 10",
"x-msh-device-model": "Google",
"x-msh-session-id": "1",
"x-msh-device-id": "1",
"x-msh-version": "2.5.1",
"x-msh-app-channel": "kimi",
"x-msh-android-version": "29",
"Authorization": f"Bearer {token}",
"X-Language": "zh-CN",
"Accept": "application/json",
"Accept-Charset": "UTF-8",
"User-Agent": "ktor-client",
}


def upload(token: str, file_path: str, timeout: int = 60) -> int:
if not os.path.isfile(file_path):
print(f"文件不存在: {file_path}")
return 2

size = os.path.getsize(file_path)
print(f"文件: {file_path} ({size / 1024:.1f} KB)")
if size > 5 * 1024 * 1024:
print("警告: 文件超过 5MB,可能返回 413")

mime = mimetypes.guess_type(file_path)[0] or "application/octet-stream"
name = os.path.basename(file_path)

with open(file_path, "rb") as f:
files = {"file": (name, f, mime)}
try:
resp = requests.post(
URL, headers=build_headers(token), files=files, timeout=timeout
)
except requests.RequestException as e:
print(f"请求异常: {e}")
return 2

print(f"状态码: {resp.status_code}")
print(f"响应: {resp.text[:1000]}")

if resp.ok:
print("上传成功")
return 0
if resp.status_code == 401:
print("401: token 无效或已过期,重新登录后获取新的 token")
elif resp.status_code == 413:
print("413: 文件过大,压缩到 5MB 以下再试")
elif resp.status_code == 403:
print("403: 缺少签名/设备信息或被风控,需要抓包确认最新请求头")
return 1


def main() -> int:
p = argparse.ArgumentParser(description="Kimi 动态头像上传")
p.add_argument("file", help="GIF/图片文件路径")
p.add_argument("--token", help="Kimi token,默认读环境变量 KIMI_TOKEN")
args = p.parse_args()

token = args.token or os.environ.get("KIMI_TOKEN", "").strip()
if not token:
print("未提供 token。设置环境变量 KIMI_TOKEN 或使用 --token")
return 2
if token.lower().startswith("bearer "):
token = token[7:].strip()

return upload(token, args.file)


if __name__ == "__main__":
sys.exit(main())
```

哎呀,忘了教你们怎么获取access_token了。。。

按下F12,打开开发者工具
按下F12,打开开发者工具

选择应用程序
选择应用程序

找到名为本地储存的东西
找到名为本地储存的东西

在右侧的列表中找到access_token
在右侧的列表中找到access_token

复制
复制

  • 标题: 设置Kimi动态头像教程
  • 作者: Goose
  • 创建于 : 2026-11-02 21:14:38
  • 更新于 : 2026-11-02 21:14:38
  • 链接: https://blog.goose.cc.cd/posts/kimi-gif/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论