PHP如何用B站UID获取头像

首页 / 技术积累 / 正文

利用API获取数据

首先当然是找接口,有一说一,关于B站的头像接口真的挺麻烦的,网上有的资料还非常少,费尽千辛万苦才找到接口的使用方法,自己也研究了半天,一直F12调试,这里就不细说了,接口奉上直接用就完事了 https://api.bilibili.com/x/space/acc/info?mid=

后面填上用户的uid即可,这里我就拿我自己的账号测试,毕竟涉及到个人隐私,还是决定拿自己做实验。

1.png

如上图,我们获取到了一串JSON格式的数据,仔细观察就会发现不仅仅是头像的链接,还有挂件什么的都有,那接下来就好办了。

PHP如何实现

先用html准备一个用来获取用户输入uid的表单,然后就用PHP返回一个地址打开就好了。

<!DOCTYPE html>
<html lang="zh">

<head>
  <meta charset="UTF-8">
  <meta name="referrer" content="no-referrer" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
  </style>
</head>

<body>
  <form action="index.php" method="POST">
    <p>请输入bilibili的UID: <input type="text" name="bilibiliuid" autocomplete="off"></p>
    <input type="submit" value="提交">
  </form>
  <?php
  $uid = $_POST['bilibiliuid'];
  if (empty($uid)) {
    echo "<scrip>alert('登录失败-未填写B站UID');history.go(-1);</scrip>";
  } else {
    $Api = file_get_contents('https://api.bilibili.com/x/space/acc/info?mid=' . $uid);
    echo "<script>window.open(($Api.data.face));</script>";
  } ?>
</body>

</html>

这里有一个需要注意的地方,<meta name="referrer" content="no-referrer" />这段代码不能少,这一段代码非常重要,如果没有,那么你获取到的页面将是403。这是因为B站有外链的保护措施, 即页面中引入外网的链接资源,会产生一个新的http请求。为了安全(URL里可能包含用户信息),浏览器一般都会给这写请求头加上表示来源的referrer 字段,这段代码意思是隐藏外部链接中的referrer参数。

PHP
评论区
头像