From 83cfcc80d6bd42c575cd6387efd64a8478a3584d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A4=BE=E4=BC=9A=E6=98=93=E5=A7=90QwQ?= <45892418+SocialSisterYi@users.noreply.github.com> Date: Sun, 30 Jan 2022 22:37:57 +0800 Subject: [PATCH] =?UTF-8?q?fix=E3=80=90README=E3=80=91typo,=20add=20doc?= =?UTF-8?q?=E3=80=90API=E7=AD=BE=E5=90=8D=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 356 ++++++++++++++++++++++---------------------- danmaku/buzzword.md | 4 +- other/API_auth.md | 69 --------- other/API_sign.md | 83 +++++++++++ 4 files changed, 263 insertions(+), 249 deletions(-) delete mode 100644 other/API_auth.md create mode 100644 other/API_sign.md diff --git a/README.md b/README.md index a21e9ff..53bbc2f 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,13 @@

野生API文档

不断更新中....

-本项目旨在对B站web端、移动端以及TV端散落在世界各地的野生api进行收集整理,研究使用方法并对其进行说明,运用了黑箱法、控制变量法、js逆向分析法、apk拆包及反编译法、网络抓包法等研究办法 +本项目旨在对 B 站 web 端、移动端以及 TV 端散落在世界各地的野生 api 进行收集整理,研究使用方法并对其进行说明,运用了黑箱法、控制变量法、js 逆向分析法、apk 拆包及反编译法、网络抓包法等研究办法 -所有api均为标准http协议,返回数据大都为json或protobuf +所有 rest api 均为标准 http 协议,请求数据大多为 url query 表单,返回数据大多为 json 或 protobuf -PS:所有http协议地址均可使用https,文档中为了统一写作`http`,为了数据安全建议所有接口使用https +PS:所有 rest api 均可使用 https,文档中为了统一写作`http`,为了数据安全建议调用接口时使用 https -小小的Demo:~~av583785685~~[视频失效原因](https://shakaianee.top/archives/56/)([Youtube备链](https://www.youtube.com/watch?v=nfF91Z6fqGk)) +小小的 Demo:~~av583785685~~ [视频失效原因](https://shakaianee.top/archives/56/)([Youtube备链](https://www.youtube.com/watch?v=nfF91Z6fqGk)) 联动项目:[Hsury/Bilibili-Toolkit](https://github.com/Hsury/Bilibili-Toolkit) @@ -33,7 +33,7 @@ PS:所有http协议地址均可使用https,文档中为了统一写作`http` **声明**: -1. 本项目遵守CC-BY-NC 4.0协议,禁止一切商业使用,如需转载请注明作者ID +1. 本项目遵守 CC-BY-NC 4.0 协议,禁止一切商业使用,如需转载请注明作者 ID 2. **请勿滥用,本项目仅用于学习和测试!请勿滥用,本项目仅用于学习和测试!请勿滥用,本项目仅用于学习和测试!** 3. 利用本项目提供的接口、文档等造成不良影响及后果与本人无关 4. 由于本项目的特殊性,可能随时停止开发或删档 @@ -41,172 +41,172 @@ PS:所有http协议地址均可使用https,文档中为了统一写作`http` --- -计划整理分类&目录:(√代表已完成,x代表正在施工...)二级目录正在建设中..... +计划整理分类 & 目录:(文档已完结请选中 checkbox)二级目录正在建设中..... -- [API认证与鉴权(APP与Cookie方式)](other/API_auth.md)× -- [公共错误码](other/errcode.md)√ -- [图片格式化](other/picture.md)√ -- [bvid说明](other/bvid_desc.md)√ -- [grpc接口](grpc_api)× -- [登录](login) - - [登录操作(人机认证)](login/login_action)√ - - [短信登录](login/login_action/SMS.md)√ - - [密码登录](login/login_action/password.md)√ - - [二维码登录](login/login_action/QR.md)√ - - SNS登录(QQ&微博) - - [登录基本信息](login/login_info.md)√ - - [个人中心](login/member_center.md)× - - [注销登录](login/exit.md)× - - [登录记录](login/login_notice.md)√ -- [消息中心](message) - - [通知类消息](message/msg.md)× - - [私信](message/private_msg.md)× - - [设置](message/config.md)× -- [用户](user) - - [基本信息](user/info.md)√ - - [状态数](user/status_number.md)√ - - [关系](user/relation.md)√ - - [个人空间](user/space.md)x - - [检查昵称是否可注册](user/check_nickname.md)√ - - [用户注册](user/register.md) - - [大会员福利兑换](user/vip.md) -- [视频](video) - - [视频分区一览(分区代码)](video/video_zone.md)√ - - [基本信息](video/info.md)√ - - [状态数](video/status_number.md)√ - - [快照](video/snapshot.md)√ - - [点赞&投币&收藏](video/like_coin_fav.md)√ - - [TAG](video/tags.md)x - - [视频推荐](video/recommend.md)√ - - [播放&下载地址(视频流)](video/videostream_url.md)√ - - [互动视频](video/interact_video.md)× - - [高能进度条](video/pbp.md)√ - - [信息上报(心跳及记录历史)](video/report.md)× - - [视频属性数据](video/attribute_data.md)√ - - [视频在线人数](video/online.md)√ -- [剧集(番剧、影视)](bangumi) - - [基本信息](bangumi/info.md)× - - 状态数 - - 操作 -- [视频弹幕](danmaku) - - [protobuf实时弹幕](danmaku/danmaku_proto.md)√ - - [protobuf弹幕元数据(BAS弹幕/互动弹幕)](danmaku/danmaku_view_proto.md)√ - - [xml实时弹幕](danmaku/danmaku_xml.md)√ - - [历史弹幕](danmaku/history.md)√ - - [快照](danmaku/snapshot.md)√ - - [弹幕操作](danmaku/action.md)× - - 高级弹幕 - - 屏蔽管理 - - 智能防挡弹幕 - - [弹幕个人配置修改](danmaku/config.md)√ - - [名词解释](danmaku/buzzword.md)√ -- [视频笔记](note)√ - - [笔记列表](note/list.md)√ - - [笔记详细信息](note/info.md)√ - - [笔记操作](note/action.md)√ -- [专栏](article) - - 分区 - - [基本信息](article/info.md)× - - [点赞&投币&收藏&分享](article/like_coin_fav.md)× - - [文集基本信息](article/articles.md)× -- [音频](audio) - - [歌曲基本信息](audio/info.md)√ - - [歌单&音频收藏夹详细信息](audio/music_list.md)× - - [状态数](audio/status_number.md)× - - [投币&收藏](audio/coin&fav.md)× - - [播放&下载地址(音频流)](audio/musicstream_url.md)√ - - 音频榜单 -- [排行榜&最新视频](ranking&dynamic) - - [排行榜](ranking&dynamic/ranking.md)× - - [最新视频](ranking&dynamic/dynamic.md)× -- [搜索](search) - - [搜索请求](search/search_request.md)√ - - [搜索结果](search/search_response.md)√ - - [默认搜索&热搜](search/hot.md)√ - - [搜索建议](search/suggest.md)√ -- [小黑屋](blackroom) - - 基本信息 - - [封禁公示](blackroom/banlist.md)√ - - [风纪委员及众裁案件相关](blackroom/jury)√ - - [风纪委员基本信息](blackroom/jury/base_info.md)√ - - [众裁案件基本信息](blackroom/jury/judgement_info.md)√ - - [裁决操作](blackroom/jury/action.md)√ -- [评论区](comment)√ - - [评论区明细](comment/list.md)√ - - [操作](comment/action.md)√ -- [表情](emoji) - - [表情及表情包信息](emoji/list.md)√ - - [操作](emoji/action.md)√ -- [创作中心](creativecenter) - - [统计与数据](creativecenter/statistics&data.md)× - - 列表查询相关 - - [电磁力数据](creativecenter/railgun.md)√ -- [实时广播(通讯协议)](broadcast)√ - - [视频内广播](broadcast/video_room.md)√ -- [充电](electric) - - [B币方式](electric/Bcoin.md)√ - - [微信&支付宝方式](electric/WeChat&Alipay.md)√ - - [充电留言](electric/charge_msg.md)√ - - [充电列表](electric/charge_list.md)√ -- [动态](dynamic) - - [发送&转载动态](dynamic/publish.md)× - - [根据关键字搜索用户(at别人时的填充列表)](dynamic/atlist.md) - - [删除动态](dynamic/delete.md) - - 动态列表 - - [特定话题动态列表](/dynamic/tag_dynamics.md)√ - - [动态内容](/dynamic/get_dynamic_detail.md)× - - 操作 -- [相簿](album) - - [基本信息](album/info.md)√ - - [相簿列表](album/list.md)√ - - [推荐作者](album/recommend_author.md)√ - - [活动列表](album/activity_list.md)√ - - [操作](album/action.md)√ - - 投稿 -- [历史记录&稍后再看](history&toview) - - [历史记录](history&toview/history.md)√ - - [稍后再看](history&toview/toview.md)√ -- [收藏夹](fav) - - [基本信息](fav/info.md)√ - - [收藏夹内容](fav/list.md)√ - - [收藏夹操作](fav/action.md)× -- [课程](cheese) - - [课程基本信息](cheese/info.md)√ - - 已购课程 - - 分区推荐列表 - - 操作 - - [播放&下载地址(视频流)](cheese/videostream_url.md)√ -- [直播](live) - - [直播间基本信息](live/info.md)× - - [直播分区](live/live_area.md)× - - [直播间管理](live/manage.md)× - - 直播间操作 - - [直播视频流](live/live_stream.md)× - - [直播信息流](live/message_stream.md)× -- [转正答题](newbie_exam)× - - [查询信息](newbie_exam/info.md)√ - - [拉取题目](newbie_exam/fetch.md)√ - - [操作](newbie_exam/action.md)√ -- B币钱包 - - 基本信息 - - B币充值 - - 贝壳相关 -- 哔哩哔哩漫画 -- 哔哩哔哩游戏 -- 轻视频 -- [终端网络查询](clientinfo) - - [基于ip的地理位置查询](clientinfo/ip.md)√ - - [终端信息查询](clientinfo/client_info.md)√ -- [其他](other) - - [获取当前时间戳](other/time_stamp.md)√ -- [web端组件](web_widget) - - [分区当日投稿数](web_widget/zone_upload.md)√ - - [404页漫画收集](web_widget/404_manga.md)√ -- [APP端组件](APP_widget) - - [开屏图片](APP_widget/splash.md)√ -- [个性装扮](garb) - - [APP主题](garb/skin.md)√ - - [主题色](garb/color.md)√ +- [x] [API 签名](other/API_sign.md) +- [ ] [公共错误码](other/errcode.md) +- [x] [图片格式化](other/picture.md) +- [x] [bvid 说明](other/bvid_desc.md) +- [ ] [gRPC API 接口定义](grpc_api) +- [ ] [登录](login) + - [x] [登录操作(人机认证)](login/login_action) + - [x] [短信登录](login/login_action/SMS.md) + - [x] [密码登录](login/login_action/password.md) + - [x] [二维码登录](login/login_action/QR.md) + - [ ] SNS 登录(QQ & 微博) + - [x] [登录基本信息](login/login_info.md) + - [ ] [个人中心](login/member_center.md) + - [ ] [注销登录](login/exit.md) + - [x] [登录记录](login/login_notice.md) +- [ ] [消息中心](message) + - [ ] [通知类消息](message/msg.md) + - [ ] [私信](message/private_msg.md) + - [ ] [设置](message/config.md) +- [ ] [用户](user) + - [x] [基本信息](user/info.md) + - [x] [状态数](user/status_number.md) + - [x] [关系](user/relation.md) + - [ ] [个人空间](user/space.md) + - [x] [检查昵称是否可注册](user/check_nickname.md) + - [x] [用户注册](user/register.md) + - [x] [大会员福利兑换](user/vip.md) +- [ ] [视频](video) + - [x] [视频分区一览(分区代码)](video/video_zone.md) + - [x] [基本信息](video/info.md) + - [x] [状态数](video/status_number.md) + - [x] [快照](video/snapshot.md) + - [x] [点赞 & 投币 & 收藏](video/like_coin_fav.md) + - [ ] [TAG](video/tags.md) + - [x] [视频推荐](video/recommend.md) + - [x] [播放&下载地址(视频流)](video/videostream_url.md) + - [ ] [互动视频](video/interact_video.md) + - [x] [高能进度条](video/pbp.md) + - [ ] [信息上报(心跳及记录历史)](video/report.md) + - [x] [视频属性数据](video/attribute_data.md) + - [x] [视频在线人数](video/online.md) +- [ ] [剧集(番剧、影视)](bangumi) + - [ ] [基本信息](bangumi/info.md) + - [ ] 状态数 + - [ ] 操作 +- [ ] [视频弹幕](danmaku) + - [x] [protobuf 实时弹幕](danmaku/danmaku_proto.md) + - [x] [protobuf 弹幕元数据(BAS 弹幕 / 互动弹幕)](danmaku/danmaku_view_proto.md) + - [x] [xml 实时弹幕](danmaku/danmaku_xml.md) + - [x] [历史弹幕](danmaku/history.md) + - [x] [快照](danmaku/snapshot.md) + - [ ] [弹幕操作](danmaku/action.md) + - [ ] 高级弹幕 + - [ ] 屏蔽管理 + - [ ] 智能防挡弹幕 + - [x] [弹幕个人配置修改](danmaku/config.md) + - [x] [名词解释](danmaku/buzzword.md) +- [x] [视频笔记](note) + - [x] [笔记列表](note/list.md) + - [x] [笔记详细信息](note/info.md) + - [x] [笔记操作](note/action.md) +- [ ] [专栏](article) + - [ ] 分区 + - [ ] [基本信息](article/info.md) + - [ ] [点赞 & 投币 & 收藏 & 分享](article/like_coin_fav.md) + - [ ] [文集基本信息](article/articles.md) +- [ ] [音频](audio) + - [x] [歌曲基本信息](audio/info.md) + - [ ] [歌单 & 音频收藏夹详细信息](audio/music_list.md) + - [ ] [状态数](audio/status_number.md) + - [ ] [投币 & 收藏](audio/coin&fav.md) + - [x] [播放 & 下载地址(音频流)](audio/musicstream_url.md) + - [ ] 音频榜单 +- [ ] [排行榜 & 最新视频](ranking&dynamic) + - [ ] [排行榜](ranking&dynamic/ranking.md) + - [ ] [最新视频](ranking&dynamic/dynamic.md) +- [ ] [搜索](search) + - [x] [搜索请求](search/search_request.md) + - [x] [搜索结果](search/search_response.md) + - [x] [默认搜索 & 热搜](search/hot.md) + - [x] [搜索建议](search/suggest.md) +- [ ] [小黑屋](blackroom) + - [ ] 基本信息 + - [x] [封禁公示](blackroom/banlist.md) + - [x] [风纪委员及众裁案件相关](blackroom/jury) + - [x] [风纪委员基本信息](blackroom/jury/base_info.md) + - [x] [众裁案件基本信息](blackroom/jury/judgement_info.md) + - [x] [裁决操作](blackroom/jury/action.md) +- [x] [评论区](comment) + - [x] [评论区明细](comment/list.md) + - [x] [操作](comment/action.md) +- [ ] [表情](emoji) + - [x] [表情及表情包信息](emoji/list.md) + - [x] [操作](emoji/action.md) +- [ ] [创作中心](creativecenter) + - [ ] [统计与数据](creativecenter/statistics&data.md) + - [ ] 列表查询相关 + - [x] [电磁力数据](creativecenter/railgun.md) +- [x] [实时广播(通讯协议)](broadcast) + - [x] [视频内广播](broadcast/video_room.md) +- [ ] [充电](electric) + - [x] [B币方式](electric/Bcoin.md) + - [x] [微信 & 支付宝方式](electric/WeChat&Alipay.md) + - [x] [充电留言](electric/charge_msg.md) + - [x] [充电列表](electric/charge_list.md) +- [ ] [动态](dynamic) + - [ ] [发送 & 转载动态](dynamic/publish.md) + - [ ] [根据关键字搜索用户(at 别人时的填充列表)](dynamic/atlist.md) + - [ ] [删除动态](dynamic/delete.md) + - [ ] 动态列表 + - [x] [特定话题动态列表](/dynamic/tag_dynamics.md) + - [ ] [动态内容](/dynamic/get_dynamic_detail.md) + - [ ] 操作 +- [ ] [相簿](album) + - [x] [基本信息](album/info.md) + - [x] [相簿列表](album/list.md) + - [x] [推荐作者](album/recommend_author.md) + - [x] [活动列表](album/activity_list.md) + - [x] [操作](album/action.md) + - [ ] 投稿 +- [ ] [历史记录 & 稍后再看](history&toview) + - [x] [历史记录](history&toview/history.md) + - [x] [稍后再看](history&toview/toview.md) +- [ ] [收藏夹](fav) + - [x] [基本信息](fav/info.md) + - [x] [收藏夹内容](fav/list.md) + - [ ] [收藏夹操作](fav/action.md) +- [ ] [课程](cheese) + - [x] [课程基本信息](cheese/info.md) + - [ ] 已购课程 + - [ ] 分区推荐列表 + - [ ] 操作 + - [x] [播放 & 下载地址(视频流)](cheese/videostream_url.md) +- [ ] [直播](live) + - [ ] [直播间基本信息](live/info.md) + - [ ] [直播分区](live/live_area.md) + - [ ] [直播间管理](live/manage.md) + - [ ] 直播间操作 + - [ ] [直播视频流](live/live_stream.md) + - [ ] [直播信息流](live/message_stream.md) +- [ ] [转正答题](newbie_exam) + - [x] [查询信息](newbie_exam/info.md) + - [x] [拉取题目](newbie_exam/fetch.md) + - [x] [操作](newbie_exam/action.md) +- [ ] B币钱包 + - [ ] 基本信息 + - [ ] B币充值 + - [ ] 贝壳相关 +- [ ] 哔哩哔哩漫画 +- [ ] 哔哩哔哩游戏 +- [ ] 轻视频 +- [ ] [终端网络查询](clientinfo) + - [x] [基于ip的地理位置查询](clientinfo/ip.md) + - [x] [终端信息查询](clientinfo/client_info.md) +- [ ] [其他](other) + - [x] [获取当前时间戳](other/time_stamp.md) +- [ ] [web端组件](web_widget) + - [x] [分区当日投稿数](web_widget/zone_upload.md) + - [x] [404 页漫画收集](web_widget/404_manga.md) +- [ ] [APP端组件](APP_widget) + - [x] [开屏图片](APP_widget/splash.md) +- [ ] [个性装扮](garb) + - [x] [APP 主题](garb/skin.md) + - [x] [主题色](garb/color.md) B站专栏同步推出[《B站api研究记》](https://www.bilibili.com/read/readlist/rl207146)系列(更新状态:咕咕......),~~欢迎关注~~ @@ -214,29 +214,29 @@ B站专栏同步推出[《B站api研究记》](https://www.bilibili.com/read/rea # 相关协议基础 -http协议:[传送门](https://www.cnblogs.com/an-wen/p/11180076.html) +http 协议:[传送门](https://www.cnblogs.com/an-wen/p/11180076.html) -json序列格式:[传送门](https://www.sojson.com/json/json_index.html) +json 序列格式:[传送门](https://www.sojson.com/json/json_index.html) -xml序列格式:[传送门](https://www.w3school.com.cn/xml/xml_intro.asp) +xml 序列格式:[传送门](https://www.w3school.com.cn/xml/xml_intro.asp) -protobuf序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a ) +protobuf 序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a ) # 交流 -QQ粉丝交流群:[1136462265](https://jq.qq.com/?_wv=1027&k=s1M0LCcu) +QQ 粉丝交流群:[1136462265](https://jq.qq.com/?_wv=1027&k=s1M0LCcu) -Telegram讨论组:[bilibili_API_collect_community](https://t.me/bilibili_API_collect_community) +Telegram 讨论组:[@bilibili_API_collect_community](https://t.me/bilibili_API_collect_community) -B站空间: +B 站空间: 个人博客: # 发电 -欢迎来py,大家的支持就是我继续开发的动力! +欢迎来~~交♂易~~,大家的支持就是我继续开发的动力! ~~请可爱的易姐喝杯奶茶~~ diff --git a/danmaku/buzzword.md b/danmaku/buzzword.md index 34e86cc..98338c9 100644 --- a/danmaku/buzzword.md +++ b/danmaku/buzzword.md @@ -337,8 +337,8 @@ curl -G 'http://api.bilibili.com/x/v2/dm/buzzword/list' \ | 字段 | 类型 | 内容 | 备注 | | -------- | ---- | ------------ | -------- | -| aid | num | 视频 avid | | -| cid | num | 视频 1P cid | | +| aid | num | 稿件 avid | | +| cid | num | 视频 cid | | | name | str | 视频标题 | | | link | str | 空 | | | play | num | 播放数 | | diff --git a/other/API_auth.md b/other/API_auth.md deleted file mode 100644 index faa2858..0000000 --- a/other/API_auth.md +++ /dev/null @@ -1,69 +0,0 @@ -# API认证与鉴权 - -- [Cookie方式(web端)](#Cookie方式(web端)) -- [APP方式(手机客户端及TV端等)](#APP方式(手机客户端及TV端等)) - ---- - -## Cookie方式(web端) - -cookie中的值在访问登录接口成功登录时,用`set-cookie`写入 - -在访问api时为`Cookie`头的数据 - -Token有效期为1月,更改密码或过期失效 - -| cookie项 | 含义 | 备注 | -| ----------------- | ----------------- | ------------------------------------------ | -| DedeUserID | 当前用户mid | | -| DedeUserID__ckMd5 | 用户mid md5校验值 | | -| SESSDATA | 登录Token | 用于用户识别与鉴权
作用同`access_key` | -| bili_jct | CSRF Token | 用于操作性接口 | - -## APP方式(手机客户端及TV端等) - -| 参数 | 含义 | 备注 | -| ------------- | ---------------- | ---------------------- | -| access_key | APP登录Token | 注意必须在第一个参数 | -| appkey | APP密钥 | | -| refresh_token | APP刷新登录Token | 仅在刷新时使用 | -| ts | 当前时间戳 | | -| sign | APP签名 | 注意必须在最后一个参数 | - -**接口鉴权:** - -使用`appkey`作为api的必要参数,并使用除`sign`外所有参数的url字串后连接相对应的盐值进行**md5校验**(32位小写),把计算结果作为sign的值,与前面参数一同发送 - -**appkey与appsec一一对应** - -已知的appkey与签名: - -| appkey | appsec(sign盐值) | 平台 | 应用 | 备注 | -| ---------------- | -------------------------------- | ---- | -------- | -------- | -| 07da50c9a0bf829f | 25bdede4e1581c836cab73a48790ca6e | 安卓 | 概念版 | | -| 1d8b6e7d45233436 | 560c52ccd288fed045859ed18bffd973 | 安卓 | 客户端 | 一般用途 | -| 178cf125136ca8ea | 34381a26236dd1171185c0beb042e1c6 | 安卓 | 概念版 | | -| 37207f2beaebf8d7 | e988e794d4d4b6dd43bc0e89d6e90c43 | 安卓 | biliLink | | -| 4409e2ce8ffd12b8 | 59b43e04ad6965f34319062b478f83dd | TV | 客户端 | | -| 57263273bc6b67f6 | a0488e488d1567960d3a765e8d129f90 | 安卓 | 客户端 | | -| 5dce947fe22167f9 | | 安卓 | 必剪 | | -| 7d336ec01856996b | a1ce6983bc89e20a36c37f40c4f1a0dd | 安卓 | 概念版 | | -| 85eb6835b0a1034e | 2ad42749773c441109bdc0191257a664 | | | | -| 8e16697a1b4f8121 | f5dd03b752426f2e623d7badb28d190a | 安卓 | 国际版 | | -| aae92bc66f3edfab | af125a0d5279fd576c1b4418a3e8276d | PC | 投稿工具 | | -| ae57252b0c09105d | c75875c596a69eb55bd119e74b07cfe3 | 安卓 | 国际版 | | -| bb3101000e232e27 | 36efcfed79309338ced0380abd824ac1 | 安卓 | 国际版 | | -| bca7e84c2d947ac6 | 60698ba2f68e01ce44738920a0ffe768 | 安卓 | 客户端 | 登录专用 | -| cc578d267072c94d | | 安卓 | 轻视频 | | -| cc8617fd6961e070 | | 安卓 | 漫画 | | -| iVGUTjsxvpLeuDCf | aHRmhWMLkdeMuILqORnYZocwMBpMEOdt | 安卓 | 客户端 | 取流专用 | - -例如: - -参数的url为`appkey=1d8b6e7d45233436&test=123`->连接盐值后为`appkey=1d8b6e7d45233436&test=123560c52ccd288fed045859ed18bffd973`->进行md5 32bit校验,结果为`8a3fdd74911862810f5c78f65afcce5d`->最终参数为`appkey=1d8b6e7d45233436&test=123&sign=8a3fdd74911862810f5c78f65afcce5d` - -**身份认证:** - -使用参数` access_key `进行身份验证,有效期为1月,作用同`SESSDATA` - -可以使用` refresh_token `进行刷新 diff --git a/other/API_sign.md b/other/API_sign.md new file mode 100644 index 0000000..e4f71ab --- /dev/null +++ b/other/API_sign.md @@ -0,0 +1,83 @@ +# API 签名与鉴权 + +部分客户端专用的 rest api 存在基于 sign 的鉴权,需要使用规定的`appkey`及其对应的`appsec`与原始请求参数进行签名计算 + +不同`appkey`对应不同的 app (如客户端、概念版、必剪、漫画、bililink等) + +不同平台同 app 也会存在不同的 `appkey`(如安卓端、ios端、TV端等) + +同平台同 app 下不同功能也会存在不同的 `appkey`(如登录专用、取流专用等) + +**appkey与appsec一一对应** + +- [API 签名的计算方式](#API 签名的计算方式) +- [已知的 APPKey](#已知的 APPKey) + +--- + +## API 签名的计算方式 + +首先为参数中添加`appkey`字段,然后按照参数的 key 重新排序,再将重排序后的参数使用 url query 格式序列化拼接与该 appkey 相对应的 appsec (盐值) 进行**md5 hash计算**(32位小写),该 hash 便是 API 签名 + +为参数尾部增添`sign`字段,它的值为上一步计算所得的 hash,一并作为表单提交 + +**实例:** + +使用 appkey = `1d8b6e7d45233436`, appsec = `560c52ccd288fed045859ed18bffd973` 对如下 `params` 参数进行签名 + +```python +import hashlib +import urllib.parse + +def appsign(params, appkey, appsec): + '为请求参数进行 api 签名' + params.update({'appkey': appkey}) + params = dict(sorted(params.items())) # 重排序参数 key + query = urllib.parse.urlencode(params) # 序列化参数 + sign = hashlib.md5((query+appsec).encode()).hexdigest() # 计算 api 签名 + params.update({'sign':sign}) + return params + +appkey = '1d8b6e7d45233436' +appsec = '560c52ccd288fed045859ed18bffd973' +params = { + 'id':114514, + 'str':'1919810', + 'test':'いいよ,こいよ', +} +signed_params = appsign(params, appkey, appsec) +query = urllib.parse.urlencode(signed_params) +print(signed_params) +print(query) +``` + +输出以下内容,分别是进行 api 签名后参数的 dict 以及 url query 格式 + +``` +{'appkey': '1d8b6e7d45233436', 'id': 114514, 'str': '1919810', 'test': 'いいよ,こいよ', 'sign': '01479cf20504d865519ac50f33ba3a7d'} +appkey=1d8b6e7d45233436&id=114514&str=1919810&test=%E3%81%84%E3%81%84%E3%82%88%EF%BC%8C%E3%81%93%E3%81%84%E3%82%88&sign=01479cf20504d865519ac50f33ba3a7d +``` + +## 已知的 APPKey + +| appkey | appsec(sign盐值) | 平台 | 应用 | 备注 | +| ---------------- | -------------------------------- | ---- | -------- | -------- | +| 07da50c9a0bf829f | 25bdede4e1581c836cab73a48790ca6e | 安卓 | 概念版 | | +| 1d8b6e7d45233436 | 560c52ccd288fed045859ed18bffd973 | 安卓 | 客户端 | 一般用途 | +| 178cf125136ca8ea | 34381a26236dd1171185c0beb042e1c6 | 安卓 | 概念版 | | +| 27eb53fc9058f8c3 | c2ed53a74eeefe3cf99fbd01d8c9c375 | ios | 客户端 | 一般用途 | +| 37207f2beaebf8d7 | e988e794d4d4b6dd43bc0e89d6e90c43 | 安卓 | biliLink | | +| 4409e2ce8ffd12b8 | 59b43e04ad6965f34319062b478f83dd | TV | 客户端 | | +| 57263273bc6b67f6 | a0488e488d1567960d3a765e8d129f90 | 安卓 | 客户端 | | +| 5dce947fe22167f9 | | 安卓 | 必剪 | | +| 7d336ec01856996b | a1ce6983bc89e20a36c37f40c4f1a0dd | 安卓 | 概念版 | | +| 85eb6835b0a1034e | 2ad42749773c441109bdc0191257a664 | | | | +| 8e16697a1b4f8121 | f5dd03b752426f2e623d7badb28d190a | 安卓 | 国际版 | | +| aae92bc66f3edfab | af125a0d5279fd576c1b4418a3e8276d | PC | 投稿工具 | | +| ae57252b0c09105d | c75875c596a69eb55bd119e74b07cfe3 | 安卓 | 国际版 | | +| bb3101000e232e27 | 36efcfed79309338ced0380abd824ac1 | 安卓 | 国际版 | | +| bca7e84c2d947ac6 | 60698ba2f68e01ce44738920a0ffe768 | 安卓 | 客户端 | 登录专用 | +| cc578d267072c94d | | 安卓 | 轻视频 | | +| cc8617fd6961e070 | | 安卓 | 漫画 | | +| iVGUTjsxvpLeuDCf | aHRmhWMLkdeMuILqORnYZocwMBpMEOdt | 安卓 | 客户端 | 取流专用 | +| YvirImLGlLANCLvM | JNlZNgfNGKZEpaDTkCdPQVXntXhuiJEM | ios | 客户端 | 取流专用 |