Giter Club home page Giter Club logo

bilibili-api-collect's Introduction

哔哩哔哩-API收集整理

GitHub issues GitHub stars GitHub forks GitHub license

SocialSisterYi%2Fbilibili-API-collect | Trendshift

野生API文档

不断更新中....

本项目旨在对 B站 WEB、APP、TV 等客户端中,散落在世界各地的野生 API 进行收集整理,研究使用方法并对其进行说明,运用了黑箱法、控制变量法、代码逆向分析、拆包及反编译法、网络抓包法等研究办法

本文档探讨的对象是主站业务接口,官方开放平台直播开放平台 均不属于本项目范畴,请移步

B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接口为 WebSocket;REST API 接口请求数据大多为 url query 表单或 JSON,返回数据大多为 JSON 或 Protobuf,强制使用 https 协议

📖阅读地址:GithubPages

小小的 Demo:av583785685 视频失效原因 (Youtube备链)

::: warning ⚠️声明

  1. 本项目遵守 CC-BY-NC 4.0 协议,禁止一切商业使用,如需转载请注明作者 ID
  2. 请勿滥用,本项目仅用于学习和测试!请勿滥用,本项目仅用于学习和测试!请勿滥用,本项目仅用于学习和测试!
  3. 利用本项目提供的接口、文档等造成不良影响及后果与本人无关
  4. 由于本项目的特殊性,可能随时停止开发或删档
  5. 本项目为开源项目,不接受任何形式的催单和索取行为,更不容许存在付费内容

:::

🌱参与贡献

欢迎各位 dalao 对本项目做出贡献,也希望每个使用者都能提出宝贵的意见

目前本项目存在的问题包括但不限于:

  1. 文档二级目录尚未完成
  2. 部分文档较旧,修改与更新没有跟进
  3. 目前文档使用 markdown 语法编写,不易生成编程语言的 SDK,详见 #604

更多信息请浏览 贡献指南

🍴目录

计划整理分类 & 目录:(文档已完结请选中 checkbox)

✨鸣谢

你们的存在,让社区更美好

contributors

📖相关协议基础

http 协议:传送门

json 序列格式:传送门

xml 序列格式:传送门

protobuf 序列格式:传送门

💦交流

⚠注意:开源社群欢迎交流探讨,拒绝咨询、不支持合作,黑产号一经发现立即拉黑并举报相关 SRC

🧋发电

欢迎来交♂易,大家的支持就是我继续开发的动力!

请可爱的易姐喝杯奶茶

WeChat & Alipay:

OR Aifadian:https://afdian.net/@ShakaiAneE

🔗相关项目推荐

库及文档

成品

其他

  • kuresaru/geetest-validator:geetest调试器

  • uw-labs/bloomrpc: GUI Client for GRPC Services

  • grpc/grpc: The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

  • quicktype quicktype generates strongly-typed models and serializers from JSON, JSON Schema, TypeScript, and GraphQL queries, making it a breeze to work with JSON type-safely in many programming languages.一键生成多种语言的json反序列化所需类,以便于快速反序列化, 有网页版

<style scoped> .shields a { margin: auto .5em; } </style>

bilibili-api-collect's People

Contributors

7rikka avatar catlair avatar chesha1 avatar colerar avatar cxw620 avatar galaxysnail avatar iyear avatar jackwu945 avatar jannchie avatar kuresaru avatar lb-chc avatar mckuhei avatar minecreeper86 avatar moshicoco avatar nemo2011 avatar pooneyy avatar programripper avatar sessionhu avatar setupdata avatar sheep-realms avatar socialsisteryi avatar spacexc avatar stmtc233 avatar thefatwhale avatar wuziqian211 avatar xiaomiku01 avatar z0z0r4 avatar zjkwdy avatar zly2006 avatar zxc135781 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bilibili-api-collect's Issues

bvID 编码位置顺序

请问 11, 10, 3, 8, 4, 6, 2, 9, 5, 711, 10, 3, 8, 4, 6, 7, 9, 5, 2 怎么确定是前者的,难道已经有 29460791296 以上的 avID 出现?

关于直播间操作

能否分析一下关于直播间开启和关闭直播的API
另外如果需要在获取csrf的值可以怎么弄呢?

爬太快容易封api

用cookie爬的话会被封api,不知道app的token会不会被封,有人试过嘛

我按照作者提供的方法尝试下载视频,被403了

我打了这个指令
curl -G 'http://api.bilibili.com/x/player/playurl' --data-urlencode 'avid=99999999' --data-urlencode 'cid=171776208' --data-urlencode 'qn=16'
服务器给我返回了这么一串东西

{
    "code": 0,
    "message": "0",
    "ttl": 1,
    "data": {
        "from": "local",
        "result": "suee",
        "message": "",
        "quality": 16,
        "format": "mp4",
        "timelength": 283724,
        "accept_format": "hdflv2,flv,flv720,flv480,mp4",
        "accept_description": [
            "高清 1080P+",
            "高清 1080P",
            "高清 720P",
            "清晰 480P",
            "流畅 360P"
        ],
        "accept_quality": [
            112,
            80,
            64,
            32,
            16
        ],
        "video_codecid": 7,
        "seek_param": "start",
        "seek_type": "second",
        "durl": [
            {
                "order": 1,
                "length": 283724,
                "size": 16427702,
                "ahead": "",
                "vhead": "",
                "url": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-16.mp4?e=ig8euxZM2rNcNbRMhbUVhoM17wNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_\u0026uipk=5\u0026nbs=1\u0026deadline=1594980833\u0026gen=playurl\u0026os=kodobv\u0026oi=3524671974\u0026trid=19c54f7f826840fdb291ce093815323cu\u0026platform=pc\u0026upsig=c9b10c3171953c0eaaa241c6e24e312e\u0026uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform\u0026mid=0\u0026orderid=0,3\u0026logo=80000000",
                "backup_url": [
                    "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-16.mp4?e=ig8euxZM2rNcNbRMhbUVhoM17wNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_\u0026uipk=5\u0026nbs=1\u0026deadline=1594980833\u0026gen=playurl\u0026os=kodobv\u0026oi=3524671974\u0026trid=19c54f7f826840fdb291ce093815323cu\u0026platform=pc\u0026upsig=c9b10c3171953c0eaaa241c6e24e312e\u0026uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform\u0026mid=0\u0026orderid=1,3\u0026logo=40000000",
                    "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-16.mp4?e=ig8euxZM2rNcNbRMhbUVhoM17wNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_\u0026uipk=5\u0026nbs=1\u0026deadline=1594980833\u0026gen=playurl\u0026os=kodobbv\u0026oi=3524671974\u0026trid=19c54f7f826840fdb291ce093815323cu\u0026platform=pc\u0026upsig=9d9fea7ec4740ca85851396dd8258976\u0026uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform\u0026mid=0\u0026orderid=2,3\u0026logo=40000000"
                ]
            }
        ]
    }
}

然后我试图

wget "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-16.mp4?e=ig8euxZM2rNcNbRMhbUVhoM17wNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_\u0026uipk=5\u0026nbs=1\u0026deadline=1594980833\u0026gen=playurl\u0026os=kodobv\u0026oi=3524671974\u0026trid=19c54f7f826840fdb291ce093815323cu\u0026platform=pc\u0026upsig=c9b10c3171953c0eaaa241c6e24e312e\u0026uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform\u0026mid=0\u0026orderid=0,3\u0026logo=80000000" --referer 'https://www.bilibili.com/video/av99999999' -O 'ret.mp4'

最后它说

--2020-07-17 16:17:26--  http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-16.mp4?e=ig8euxZM2rNcNbRMhbUVhoM17wNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_%5Cu0026uipk=5%5Cu0026nbs=1%5Cu0026deadline=1594980833%5Cu0026gen=playurl%5Cu0026os=kodobv%5Cu0026oi=3524671974%5Cu0026trid=19c54f7f826840fdb291ce093815323cu%5Cu0026platform=pc%5Cu0026upsig=c9b10c3171953c0eaaa241c6e24e312e%5Cu0026uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform%5Cu0026mid=0%5Cu0026orderid=0,3%5Cu0026logo=80000000
正在解析主机 upos-sz-mirrorkodo.bilivideo.com (upos-sz-mirrorkodo.bilivideo.com)... 110.52.198.100, 2408:8752:0:3:12::, 2408:8752:0:3:18::, ...
正在连接 upos-sz-mirrorkodo.bilivideo.com (upos-sz-mirrorkodo.bilivideo.com)|110.52.198.100|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 403 Forbidden
2020-07-17 16:17:26 错误 403:Forbidden。

奉上一对密钥

APPKEY aae92bc66f3edfab
APPSECRET af125a0d5279fd576c1b4418a3e8276d
pc端投稿工具

应援应援~

up太强了太强了太强了!!!!

话说我也超想这么写逆向的来着?
只不过放弃了2333

番剧API的文档中貌似有内容错误

image

番剧API的文档(master/bangumi/info.md)中,关于wide_screen项的介绍是“投币数”,此处是否有错?
不敢贸然更正,因此发出一个issues询问一下。

十分感谢。

风纪委众裁相关api

需要SESSDATA

发送投票(POST)
https://api.bilibili.com/x/credit/jury/vote
参数:
cid=案件id
vote=投票类型(1:封禁,2:否,3:弃权,4:删除)
attr=1 (没看懂, 疑似可选
csrf=csrf
apply_type= (可选
origin_reason= (可选
apply_reason= (可选
以上三个疑似为理由
返回值:
code: 0
message: "0"
ttl: 1
image

获取案件(POST)
https://api.bilibili.com/x/credit/jury/caseObtain
参数:
csrf=csrf
返回值:
code: 0, 25008(众裁处理完), 25014(今日数量已满)
data: {"id": 案件id}
message: "0"
ttl: 1
image

我已成功用以上两个api众裁一个案件
image

关于./x/article/viewinfo的返回

最近使用GET方法对比了带Cookie和不带Cookie情况下的**api/x/article/viewinfo*,,发现response.data.is_author值在不带Cookie情况下总是为false
带Cookie:
{"code":0,"message":"0","ttl":1,"data":{"like":0,"attention":false,"favorite":false,"coin":0,"stats":{"view":807325,"favorite":8699,"like":21028,"dislike":1,"reply":8587,"share":352,"coin":1574,"dynamic":79},"title":"未知的光","banner_url":"https://i0.hdslb.com/bfs/article/b1e1029c08d8ad1bb06460d736839a7741dd7925.jpg","mid":91221505,"author_name":"gggwvg","is_author":true,"image_urls":["https://i0.hdslb.com/bfs/article/d2eedf1fd338bceca10099e2f7b33fa9017c859b.jpg"],"origin_image_urls":["https://i0.hdslb.com/bfs/article/b1e1029c08d8ad1bb06460d736839a7741dd7925.jpg"],"shareable":true,"show_later_watch":true,"show_small_window":true,"in_list":true,"pre":4155124,"next":0,"share_channels":[{"name":"QQ","picture":"https://i0.hdslb.com/bfs/album/114ccfb3a999df9c4d11f274c8c61a804c8f8803.png","share_channel":"QQ"},{"name":"QQ空间","picture":"https://i0.hdslb.com/bfs/album/30e9608bbce725bca45b5910866f60ab4d5e18b3.png","share_channel":"QZONE"},{"name":"微信","picture":"https://i0.hdslb.com/bfs/album/658af3c22431cd78bb7c50be3394f7c032eba12c.png","share_channel":"WEIXIN"},{"name":"朋友圈","picture":"https://i0.hdslb.com/bfs/album/c1ebcec8c5302f29f792d15f04e0d6dcef53ec27.png","share_channel":"WEIXIN_MONMENT"},{"name":"微博","picture":"https://i0.hdslb.com/bfs/album/3707fc23f7d3e24022712320284b0de9aa78c87d.png","share_channel":"SINA"}]}}
不带Cookie:
{"code":0,"message":"0","ttl":1,"data":{"like":0,"attention":false,"favorite":false,"coin":0,"stats":{"view":807319,"favorite":8699,"like":21028,"dislike":1,"reply":8587,"share":352,"coin":1574,"dynamic":79},"title":"未知的光","banner_url":"https://i0.hdslb.com/bfs/article/b1e1029c08d8ad1bb06460d736839a7741dd7925.jpg","mid":91221505,"author_name":"gggwvg","is_author":false,"image_urls":["https://i0.hdslb.com/bfs/article/d2eedf1fd338bceca10099e2f7b33fa9017c859b.jpg"],"origin_image_urls":["https://i0.hdslb.com/bfs/article/b1e1029c08d8ad1bb06460d736839a7741dd7925.jpg"],"shareable":true,"show_later_watch":true,"show_small_window":true,"in_list":true,"pre":4155124,"next":0,"share_channels":[{"name":"QQ","picture":"https://i0.hdslb.com/bfs/album/114ccfb3a999df9c4d11f274c8c61a804c8f8803.png","share_channel":"QQ"},{"name":"QQ空间","picture":"https://i0.hdslb.com/bfs/album/30e9608bbce725bca45b5910866f60ab4d5e18b3.png","share_channel":"QZONE"},{"name":"微信","picture":"https://i0.hdslb.com/bfs/album/658af3c22431cd78bb7c50be3394f7c032eba12c.png","share_channel":"WEIXIN"},{"name":"朋友圈","picture":"https://i0.hdslb.com/bfs/album/c1ebcec8c5302f29f792d15f04e0d6dcef53ec27.png","share_channel":"WEIXIN_MONMENT"},{"name":"微博","picture":"https://i0.hdslb.com/bfs/album/3707fc23f7d3e24022712320284b0de9aa78c87d.png","share_channel":"SINA"}]}}

好像发现个逻辑漏洞

image

二维码登录的web端流程&逻辑那里
如果if data == -5的话将会一直循环下去哎好像,甚至是从是否已经确认循环,实际变量内容还是以前的

查询每日奖励状态API偶尔会返回投币经验为0的数据

问题API地址:http://api.bilibili.com/x/member/web/exp/reward
我在开发BILIBILI-HELPER的过程中遇到了这个问题,应该不是请求速率过快导致的(rate<5次/s),当天投币投5枚后,经验信息有时候会返回0。通过网页版登录个人中心查看也是0。建议文档中增加相关提示。

这里我找到了另外一个获得每日投币经验的API :https://www.bilibili.com/plus/account/exp.php 这个api的数据出奇的准确和及时。

返回示例
{"code":0,"message":"0","number":50}

另外 提供一个直接查询硬币余额的api :https://account.bilibili.com/site/getCoin

返回示例
{"code":0,"status":true,"data":{"money":536.9}}

关于sid和bfe_id的讨论

据了解使用api带上bfe_id和sid会更容易被封,以下是我了解到的一些信息,但仍有需要继续研究的地方,开个issue希望能共同完成这部分的研究

  • 使用 api.bilibili.com 的api进行获取会返回bfe_id
  • sid属于 bilibili.com 的cookie
  • 这两个cookies大约10分钟刷新一次,同时B站会检查10分钟内的扒取次数,若超过上限封30分钟

反馈一下

收藏视频(双端)

prompt 有时候会返回true
我觉得应该是收藏就是true 取消收藏就是false 试了好几次
{"code":0,"message":"0","ttl":1,"data":{"prompt":true}}

[BUG] 示例命令几乎都不正确

几乎所有命令都像这样, \与结尾之间没有空格

curl -G 'http://api.bilibili.com/xxx'\
--data-urlencode 'xxx=xxx'\
-b 'SESSDATA=xxx'

其等效于

curl -G 'http://api.bilibili.com/xxx'--data-urlencode 'xxx=xxx'-b 'SESSDATA=xxx'

执行会报错
应该改成这样

curl -G 'http://api.bilibili.com/xxx' \
--data-urlencode 'xxx=xxx' \
-b 'SESSDATA=xxx'

202分区请求错误

http://api.bilibili.com/x/web-interface/ranking/region?rid=202&day=3

{"code":-400,"message":"请求错误","ttl":1,"data":null}

关于发送动态的 我这里找到一个

https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create
POST
dynamic_id=0
&type=4
&rid=0
(这些不知道干什么用的 应该是恒定的吧)
&content=hello%20word%20this%20is%20gwzkj%20%40%E9%AC%BC%E6%9C%AA%E6%97%8F%E7%A7%91%E6%8A%80%20
(发送信息的内容)
&up_choose_comment=0
&extension=%7B%22emoji_type%22%3A1%2C%22from%22%3A%7B%22emoji_type%22%3A1%7D%7D
&csrf_token=04fdb0b19d166faf8ff6a18c685c1a30
(对应你cookies 里的bili_jet)
发送信息的原文:hello word this is gwzkj @鬼未族科技
希望能对你有用~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.