64 lines
40 KiB
HTML
64 lines
40 KiB
HTML
<!doctype html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||
<meta name="generator" content="VuePress 2.0.0-rc.24" />
|
||
<style>
|
||
:root {
|
||
--vp-c-bg: #fff;
|
||
}
|
||
|
||
[data-theme='dark'] {
|
||
--vp-c-bg: #1b1b1f;
|
||
}
|
||
|
||
html,
|
||
body {
|
||
background-color: var(--vp-c-bg);
|
||
}
|
||
</style>
|
||
<script>
|
||
const useChoice = localStorage.getItem('vuepress-color-scheme')
|
||
const systemStatus =
|
||
'matchMedia' in window
|
||
? window.matchMedia('(prefers-color-scheme: dark)').matches
|
||
: false
|
||
|
||
if (useChoice === 'light') {
|
||
document.documentElement.dataset.theme = 'light'
|
||
} else if (useChoice === 'dark' || systemStatus) {
|
||
document.documentElement.dataset.theme = 'dark'
|
||
}
|
||
</script>
|
||
<link rel="icon" href="/bilibili-API-collect/logo2.jpg"><title>设备各类标识算法(APP 端) | BAC Document</title><meta name="description" content="社区开源的第三方哔哩哔哩 API 文档">
|
||
<link rel="preload" href="/bilibili-API-collect/assets/style-D1PJH1oj.css" as="style"><link rel="stylesheet" href="/bilibili-API-collect/assets/style-D1PJH1oj.css">
|
||
<link rel="modulepreload" href="/bilibili-API-collect/assets/app-Dgsdh8A6.js"><link rel="modulepreload" href="/bilibili-API-collect/assets/device_identity.html-B5I04eFh.js">
|
||
<link rel="prefetch" href="/bilibili-API-collect/assets/CONTRIBUTING.html-Dg5RrJ0s.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-CyFjrwOB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-DfGFo93u.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/splash.html-DTxmsPVe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ver.html-BK7Hl968.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CRFYL4xy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-67H6b90D.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-CkX_wc45.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/activity_list.html-Bekn3Lxe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DMnsBsuq.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-CBuhzqhd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/recommend_author.html-DBwItBdc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-C0ql065z.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/articles.html-zLkcz3pu.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/card.html-wL4C5GKc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/category.html-Xldy-aPs.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CB0fSHFP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/view.html-COrufaKB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-BeujPZDG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DvFa4PRS.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/music_list.html-DeijlME4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/musicstream_url.html-qq6CNfyp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/rank.html-DT2C28KO.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/status_number.html-DEiPXucy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/follow.html-DOVJW4CZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BLypTc8g.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season_index.html-BSNCSXU1.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/timeline.html-CzpzQzIG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DlvjAVi_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/banlist.html-Bx6m-UTQ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BMdR7u31.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/video_room.html-CJ-aNxn7.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BHbw7wWp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DnLcd0On.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ip.html-BZmNmhHk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-D_ydhzqh.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-D36gw51A.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BN64GETH.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/opus.html-CoQ5EdO3.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/railgun.html-2O05GCD4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season.html-B_fCwBA8.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/statistics_data.html-BWH8OqIZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/upload.html-DvDEkxhj.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videos.html-4_uXrA4K.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/msg.html-C4G_rrXA.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DeaDnvTK.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/buzzword.html-3axAz5ab.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/config.html-P2TT80Ma.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/danmaku_proto.html-B5M4AXvu.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/danmaku_view_proto.html-DtK2aZTc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/danmaku_xml.html-bHEnwOx6.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/history.html-D731H-Qd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/snapshot.html-sItLSrou.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/thumbup.html-oIOmP01b.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/webmask.html-BwxLSheT.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-D9uytAI1.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/all.html-MgLtiraJ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/atlist.html-CG0zNeT5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/banner.html-W9RH5Lg_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/basicInfo.html-DamYRO2m.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/card_info.html-BWktH6O6.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/content.html-DefzfqTR.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/detail.html-DH1NRSL5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/dynamic_enum.html-DL_Gf64x.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/get_dynamic_detail.html-Bbk5LVZ-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/nav.html-D91zXMZR.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/publish.html-DaacAe0m.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/space.html-BjwA2AkB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/topic.html-CxxVTskb.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Bcoin.html-BhhfS1Rx.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/WeChat_Alipay.html-D7UPw-Mv.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/charge_list.html-DOFwkRFh.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/charge_msg.html-Bd63UhW6.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/monthly.html-D8O3h0v-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DvqnymQp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-Dk7ayv8u.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DkRNgDlt.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BSjizl7z.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-BfbnP9bx.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/color.html-D1CBKZrT.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/lottery.html-DbmXyYLK.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/skin.html-B7_-FfE5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/history.html-U2B19yU-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/toview.html-m3XzHepP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/danmaku.html-cYqsa6rm.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/emoticons.html-XPYXDzf0.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/follow_up_live.html-B7NT2XJb.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/gift.html-CPTDEb2_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/guard.html-CgEHD9Az.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-bgddEvuk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_area.html-UOPRZqNz.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_bill.html-Bxf6rN7p.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_data.html-DPx4fcGp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_replay.html-iMUKGSwe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_stream.html-CTvbm8Zd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_vote.html-niGIJdSc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/manage.html-DmvWf2hl.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/message_stream.html-DYabMnOf.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/recommend.html-0Yo2xP9c.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/redpocket.html-Bc9pXjpT.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/report.html-BHBFFQZc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/silent_user_manage.html-8B8EvR5w.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/user.html-FhJX8EJT.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/cookie_refresh.html-C-y7uaCA.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/exit.html-wyBJUhyQ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/login_info.html-DcTURbz0.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/login_notice.html-BXRbf4ou.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/member_center.html-UE6PIsuf.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Activity.html-Bxk-gk5Y.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ClockIn.html-CenNAwzg.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Comic.html-CLerib4W.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Download.html-Br9YEqP_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Season.html-Bv-xbTdd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/User.html-BxuEgE-I.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index_file.html-KxhduYzw.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/light_card.html-BX3csIVY.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/point_shop.html-BUYGiY4x.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/msg.html-DgLc4Fa5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/private_msg.html-CTuY6IIe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/private_msg_content.html-DnEBdBrk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/settings.html-BbVpohbZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/b23tv.html-Dxsq1OVj.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/buvid3_4.html-DBUwha3H.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/bvid_desc.html-C81lzKez.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/errcode.html-BlmDP2Xd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/mathjax.html-B4Rx2kT_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/picture.html-CKV2obIX.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/time_stamp.html-Cf7HhcO3.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-UGem3f8j.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/fetch.html-BtDU5o5f.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-C9gLOntC.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DLzbyzsd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BtDZhXMA.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-Db8OOHOo.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-5vHX0xv-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/detail.html-VOBIbF4h.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/features.html-DiZBiXUW.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/rich_text_nodes.html-BvGiNCao.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/space.html-BdhGUVoS.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/hot.html-C_FX8JaJ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/search_request.html-xQgx95ji.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/search_response.html-BFpK_6jG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/suggest.html-DlPRFJxV.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/teenager_mode.html-D3G18A_n.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/batch.html-cGq5Qeh2.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/check_nickname.html-BRdxxp6m.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/contract.html-YS65q_jn.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CktfHCh6.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/medals.html-BRvf8EJa.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/official_role.html-CBvofUdP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/register.html-BOasFjaK.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/relation.html-b3hEZ13C.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/space.html-BfZb_dIi.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/status_number.html-BT56l5dB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DLBmRfG7.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/appeal.html-CcLQmg66.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/attribute_data.html-C_YkRlS-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/collection.html-B-uxvybk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-L873uB9d.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/interact_video.html-DoiQ0Pcr.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/online.html-DJ5lT1x9.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/pbp.html-BBYSf0a-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/player.html-ZpJBp7gv.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/recommend.html-D0A21iEw.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/report.html-DuHXegGH.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/snapshot.html-hqn3Xd78.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/status_number.html-iguXtKgQ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/summary.html-DYcY1pBr.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/tags.html-Jjo00nOo.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/video_zone.html-B-nRnqQj.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/video_zone_v2.html-Cqbk0tky.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-JIL5pwcj.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/dynamic.html-BfZKb2_b.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/popular.html-xzW9jflm.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/precious_videos.html-DUvixdN1.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ranking.html-Cx0F7V2z.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-1E0fVjfS.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/center.html-FZSMvI39.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/clockin.html-CE6-I-0u.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-D7kTJjVD.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-Bj2GpsEI.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/404_manga.html-CkQTSSKc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/banner.html-CWlCIz3C.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/header.html-CSeKquiq.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/zone_upload.html-CcYIfnj4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-BIakPva5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/base_info.html-DevYYkKc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/judgement_info.html-BuyAWrJX.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/QR.html-BHJa37nz.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/SMS.html-In_XL6PP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/password.html-CmP0Tl9k.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-B3pWXgRb.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/APP.html-CuPBHwrB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/APPKey.html-CPC2-tlJ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/bili_ticket.html-BusUE46s.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/v_voucher.html-BbbVVnZu.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/wbi.html-D21GJ5Gx.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/404.html-DrI-cPdQ.js" as="script">
|
||
</head>
|
||
<body>
|
||
<div id="app"><!--[--><div class="vp-theme-container external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/bilibili-API-collect/"><img class="vp-site-logo" src="/bilibili-API-collect/logo2.jpg" alt="BAC Document"><span class="vp-site-name vp-hide-mobile" aria-hidden="true">BAC Document</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/#🍴目录" aria-label="目录"><!--[--><!--[--><!--]--><!--]-->目录<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/CONTRIBUTING.html" aria-label="贡献指南"><!--[--><!--[--><!--]--><!--]-->贡献指南<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="right arrow"></span></button><ul class="vp-navbar-dropdown" style="display:none;"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&noverify=0&group_code=191187164" aria-label="QQ交流群(综合技术交流)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->QQ交流群(综合技术交流)<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://t.me/bilibili_API_collect_community" aria-label="Telegram交流群(Github Bot推送)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Telegram交流群(Github Bot推送)<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://github.com/SocialSisterYi/bilibili-API-collect" aria-label="GitHub" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->GitHub<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><form class="search-box" role="search"><input type="search" placeholder="搜索" autocomplete="off" spellcheck="false" value><!----></form></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/#🍴目录" aria-label="目录"><!--[--><!--[--><!--]--><!--]-->目录<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/CONTRIBUTING.html" aria-label="贡献指南"><!--[--><!--[--><!--]--><!--]-->贡献指南<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="right arrow"></span></button><ul class="vp-navbar-dropdown" style="display:none;"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&noverify=0&group_code=191187164" aria-label="QQ交流群(综合技术交流)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->QQ交流群(综合技术交流)<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://t.me/bilibili_API_collect_community" aria-label="Telegram交流群(Github Bot推送)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Telegram交流群(Github Bot推送)<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://github.com/SocialSisterYi/bilibili-API-collect" aria-label="GitHub" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->GitHub<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="vp-sidebar-items"><!--[--><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading">设备各类标识算法(APP 端) <!----></p><!----></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div vp-content><!--[--><!--]--><div id="content"><h1 id="设备各类标识算法-app-端" tabindex="-1"><a class="header-anchor" href="#设备各类标识算法-app-端"><span>设备各类标识算法(APP 端)</span></a></h1><h2 id="设备唯一标识-buvid" tabindex="-1"><a class="header-anchor" href="#设备唯一标识-buvid"><span>设备唯一标识 BUVID</span></a></h2><p>注意区分于 Web 端的 <a class="route-link" href="/bilibili-API-collect/docs/misc/buvid3_4.html">buvid3, buvid4</a>.</p><p>BUVID 在 APP 首次安装于某设备, 且首次启动时生成.</p><p>APP 首次(即每次安装后)启动, 会向云端发送本机各类设备特征, 含 <code>AndroidId</code>, <code>DrmId</code> 等, 请求是否有匹配的 BUVID, 有就使用云端的, 否则使用本地生成的.</p><p>APP 请求是否有匹配的 BUVID 发送的本机各类设备特征包括(但不限于):</p><ul><li><code>AndroidID</code></li><li><code>DrmId</code></li><li><code>IMEI</code></li><li><code>OAID</code></li><li>手机网卡 <code>MAC</code></li><li>设备品牌</li><li>设备 Model</li><li>本地生成的 BUVID</li></ul><h3 id="生成方法" tabindex="-1"><a class="header-anchor" href="#生成方法"><span>生成方法</span></a></h3><ol><li><p>选定设备特征码, 可以是 <code>AndroidID</code>, <code>DrmId</code>, 手机网卡 <code>MAC</code> 等. 记为 <code>ID</code>. 特别地, <code>MAC</code> 应当去掉 <code>:</code>, <code>GUID</code>(即 UUID) 应当去掉 <code>-</code>.</p></li><li><p>计算 <code>ID</code> 的 MD5. 记为 <code>ID_MD5</code>.</p></li><li><p>从 <code>ID_MD5</code> 抽取第 3, 13, 23 位, 失败就默认为 000, 记为 <code>ID_E</code>.</p></li><li><p>根据选定的设备特征码类型确定 BUVID Prefix, 见附录. 记为 <code>BUVID_Prefix</code>.</p></li><li><p>按 <code>{BUVID_Prefix}{ID_E}{ID_MD5}</code> 的顺序连接起来, 共37位(2+3+32). 结果应当为大写.</p></li></ol><h3 id="demo" tabindex="-1"><a class="header-anchor" href="#demo"><span>Demo</span></a></h3><h4 id="rust" tabindex="-1"><a class="header-anchor" href="#rust"><span>Rust</span></a></h4><p>代码及测试样例见 <a href="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=40b5906cf3838a60efa83fa368b15147" target="_blank" rel="noopener noreferrer">Rust Playground</a>.</p><h2 id="设备指纹-fp-fp-local-fp-remote" tabindex="-1"><a class="header-anchor" href="#设备指纹-fp-fp-local-fp-remote"><span>设备指纹 fp (fp_local, fp_remote)</span></a></h2><p>用于请求账户相关 REST API, 及 gRPC Metadata 生成.</p><p>在请求头中, <code>fp_local</code> 和 <code>fp_remote</code> 设置为同一值即可, 暂不清楚区别.</p><h3 id="生成方法-1" tabindex="-1"><a class="header-anchor" href="#生成方法-1"><span>生成方法</span></a></h3><ol><li><p>获取 BUVID. 此处一般使用 XU Prefix 的 BUVID.</p></li><li><p>获取设备 Model(<code>Build.MODEL</code>), 如 <code>NOH-AN01</code>.</p></li><li><p>获取手机无线电固件版本号(<code>Build.getRadioVersion()</code>), 失败则留空. 如 <code>21C20B686S000C000,21C20B686S000C000</code>.</p></li><li><p>按前述顺序拼接字符串, 计算得 MD5.</p></li><li><p>获取年月日, 格式 <code>yyyyMMddhhmmss</code>, 拼接到 4 得到的字符串后.</p></li><li><p>生成 16 位随机字符串, CharSet 为 <code>0123456789abcdef</code>, 拼接到 5 得到的字符串后, 记为 <code>fp_raw</code>.</p></li><li><p>计算得到一个特殊字符串, 拼接到 <code>fp_raw</code> 后, 即得到最终的 <code>fp</code>, 特殊字符串算法见下:</p></li></ol><div class="language-rust line-numbers-mode" data-highlighter="shiki" data-ext="rust" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-rust"><span class="line"><span style="color:#569CD6;">let</span><span style="color:#569CD6;"> mut</span><span style="color:#9CDCFE;"> veri_code</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#6A9955;">// 有点像 HEX 的操作</span></span>
|
||
<span class="line"><span style="color:#569CD6;">let</span><span style="color:#9CDCFE;"> fp_raw_sub_str</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">fp_raw</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">as_bytes</span><span style="color:#D4D4D4;">() </span><span style="color:#6A9955;">// 将字符串 fp_raw 转换为字节数组</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">chunks</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">) </span><span style="color:#6A9955;">// 按每两个字节一组进行切分</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">map</span><span style="color:#D4D4D4;">(|</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">| </span><span style="color:#569CD6;">unsafe</span><span style="color:#D4D4D4;"> { ::</span><span style="color:#4EC9B0;">std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">str</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">from_utf8_unchecked</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">) }) </span><span style="color:#6A9955;">// 对每一组解析作为 UTF-8 字符串</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">collect</span><span style="color:#D4D4D4;">::<</span><span style="color:#4EC9B0;">Vec</span><span style="color:#D4D4D4;"><</span><span style="color:#9CDCFE;">_</span><span style="color:#D4D4D4;">>>(); </span><span style="color:#6A9955;">// 将结果收集到 Vec 中</span></span>
|
||
<span class="line"><span style="color:#6A9955;">// 如果 fp_raw 的长度小于 62, 则向下取偶数减半作为循环终止条件, 否则终止条件为31</span></span>
|
||
<span class="line"><span style="color:#C586C0;">for</span><span style="color:#9CDCFE;"> i</span><span style="color:#569CD6;"> in</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;">..({</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#9CDCFE;"> fp_raw</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">() < </span><span style="color:#B5CEA8;">62</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> fp_raw</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">() - </span><span style="color:#9CDCFE;">fp_raw</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">() % </span><span style="color:#B5CEA8;">2</span><span style="color:#6A9955;"> // 取偶数</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">else</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#B5CEA8;"> 62</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">} / </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">)</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> // 将每组字符串转换为对应的 16 进制整数, 将转换得到的整数加到 veri_code 上. </span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> veri_code</span><span style="color:#D4D4D4;"> += </span><span style="color:#4EC9B0;">i32</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">from_str_radix</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">fp_raw_sub_str</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">], </span><span style="color:#B5CEA8;">16</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">unwrap_or</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||
<span class="line"><span style="color:#6A9955;">// 最后将 veri_code 对 256 取余, 格式化为两位的 16 进制字符串</span></span>
|
||
<span class="line"><span style="color:#569CD6;">let</span><span style="color:#9CDCFE;"> veri_code</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">format!</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"{:0>2x}"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">veri_code</span><span style="color:#D4D4D4;"> % </span><span style="color:#B5CEA8;">256</span><span style="color:#D4D4D4;">);</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="demo-1" tabindex="-1"><a class="header-anchor" href="#demo-1"><span>Demo</span></a></h3><h4 id="rust-1" tabindex="-1"><a class="header-anchor" href="#rust-1"><span>Rust</span></a></h4><p>代码及测试样例见 <a href="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=40b5906cf3838a60efa83fa368b15147" target="_blank" rel="noopener noreferrer">Rust Playground</a>.</p><h2 id="附录" tabindex="-1"><a class="header-anchor" href="#附录"><span>附录</span></a></h2><h3 id="buvid-prefix" tabindex="-1"><a class="header-anchor" href="#buvid-prefix"><span>BUVID Prefix</span></a></h3><table><thead><tr><th style="text-align:center;">设备特征码</th><th style="text-align:center;">BUVID Prefix</th><th style="text-align:center;">备注</th></tr></thead><tbody><tr><td style="text-align:center;"><code>AndroidID</code></td><td style="text-align:center;"><code>XX</code></td><td style="text-align:center;"></td></tr><tr><td style="text-align:center;"><code>DrmId</code></td><td style="text-align:center;"><code>XU</code></td><td style="text-align:center;"></td></tr><tr><td style="text-align:center;"><code>IMEI</code></td><td style="text-align:center;"><code>XZ</code></td><td style="text-align:center;">已弃用</td></tr><tr><td style="text-align:center;"><code>GUID</code></td><td style="text-align:center;"><code>XW</code></td><td style="text-align:center;">已弃用</td></tr><tr><td style="text-align:center;"><code>MAC</code></td><td style="text-align:center;"><code>XY</code></td><td style="text-align:center;"></td></tr><tr><td style="text-align:center;"><code>GoogleId</code></td><td style="text-align:center;"><code>XG</code></td><td style="text-align:center;">东南亚版本</td></tr><tr><td style="text-align:center;"><code>FacebookId</code></td><td style="text-align:center;"><code>XF</code></td><td style="text-align:center;">东南亚版本</td></tr></tbody></table></div><!--[--><!--]--></div><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link label" href="https://github.com/SocialSisterYi/bilibili-API-collect/edit/master/docs/misc/device_identity.md" aria-label="在 GitHub 上编辑此页" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><svg class="edit-icon" viewbox="0 0 1024 1024"><g fill="currentColor"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></g></svg><!--]--><!--]-->在 GitHub 上编辑此页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">最近更新: </span><time class="meta-item-info" datetime="2024-07-25T12:03:52.000Z" data-allow-mismatch>2024/7/25 12:03</time></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: 70561268+cxw620@users.noreply.github.com">cxw620</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 102411014+SessionHu@users.noreply.github.com">SessionHu</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--[--><footer style="text-align:center;"> Copyright © 2020-2025 <a href="https://github.com/SocialSisterYi/">SocialSisterYi</a> | <a href="https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE">CC-BY-NC-4.0 Licensed</a></footer><!--]--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div>
|
||
<script type="module" src="/bilibili-API-collect/assets/app-Dgsdh8A6.js" defer></script>
|
||
</body>
|
||
</html>
|