最近逛著名同性交友代码托管+分享网站GitHub时,发现某大佬的抓取bilibili追番列表作品,于是去看了一下bilibili首页的源码,试图找找实现的方式:

image

很明显大部分主页上的信息都没有跟随document从服务端来到用户端,那么显然是通过js从api获取数据在本地渲染,于是决定看看bilibili首页调用的api玩玩。

apis

部分api需要cookie验证登录,在此用“x”标注。

api.bilibili.com/x/web-show/res/locs

参数image

pffrom_spm_id作用不明确,但from_spm_id为访问主页时的spm_id_from参数相同,据网友所言属于动作捕捉的依赖。

ids对应的返回值:(据图可看出其中的id 2954对应顶部导航栏的“BLS”项目)

image

image

根据id 7个指猜测对应上述7个options,应该是用于请求options是否有特殊样式设定。


passport.bilibili.com/x/passport-login/web/cookie/info x

image

据url猜测为校验用户账户使用,csrf应为md5加密作为用户识别码。


api.bilibili.com/x/web-interface/pcdn/v1 (据返回值为样式api)

image

api.bilibili.com/x/web-interface/search/default (为顶部搜索框推荐视频信息)


api.bilibili.com/x/web-interface/dynamic/entrance x

image(不明意义)

image

据返回数据为更新显示,应需要cookie用于登陆校验。


api.bilibili.com/x/space/acc/info

image

mid为user_id,用于请求用户基本信息。


space.bilibili.com/ajax/settings/getSettings

image

用于请求用户对主页展示的设定。以及各展示项目对应的id和顺序信息。

image


api.bilibili.com/x/relation/stat

image

vmid为user_id,用于请求用户关注数等信息。

image


api.bilibili.com/x/space/upstat x

image

请求用户所有作品总浏览数和获赞数。


api.bilibili.com/x/space/top/arc

image

官方返回数据显示为请求置顶视频,但咱并没有找到“置顶视频”是什么,“代表作”也并不是所谓“置顶视频”。

image


api.bilibili.com/x/space/masterpiece

image

请求用户“代表作”(这个才是嘛!)

image

(效果图)


api.bilibili.com/x/space/arc/search

image

请求用户投稿信息,返回值示例:

image

tlist为投稿各项分类的数量和id(依旧不明何用),vlist为所有视频的详细信息。

其他一致,pnps类似分页切片器,前者决定切片选择哪一个,后者决定切片长度,index作用没有尝试出来。


api.bilibili.com/x/polymer/space/seasons_series_list

image

请求视频合集和视频分类,与上个api类似的切片器形式,page_num决定页码,page_size决定每页的合集+分类总数(经测试会优先返回合集,合集返回完才按照剩下个数返回分类)

上位为合集,下位为分类


api.bilibili.com/x/v3/fav/folder/created/list

image

请求用户公开的收藏夹信息。

注:收藏夹url:space.bilibili.com/(用户id)/favlist?fid=(收藏夹fid)&ftype=create

image

请求用户订阅的标签。

image

暂未尝试出用途。


api.bilibili.com/x/ugcpay-rank/elec/month/up

image

请求up主的充电信息(包括总数,近30次详细信息)。


api.bilibili.com/x/space/reservation

image

请求用户订阅信息,type=1为追番信息,type=2为追剧信息。


api.bilibili.com/x/space/notice

image

请求用户空间公告。


api.bilibili.com/x/space/navnum

image

视频和相簿数量等。

image


api.vc.bilibili.com/link_setting/v1/link_setting/get

image

用处不明确。

image


api.bilibili.com/x/msgfeed/unread x

image

请求用户未读消息数量(需要cookie登陆校验)。


api.bilibili.com/x/space/article

image

请求用户专栏数据。


pi.bilibili.com/x/relation/followers

请求用户粉丝列表。(关于切片器见上文)(order暂未发现任何其他有效取值)


api.bilibili.com/x/relation/followings

请求用户关注者列表。(同上)