获取知乎用户的禁言时长

知乎前端做了SSR渲染,禁言信息放在标签js-initialData里,网页打开以后前端会把这个信息读出来,在顶部插入一个禁言提示的DOM。

createdAt是开始时间,expiredAt是结束时间,两个都是秒数需要乘以1000传进Date就能得到结束日期。 下面提供了一个TamperMonkey脚本来做这件事。问题中的用户被禁言到4月23号。


js
// ==UserScript==
// @name         显示知乎用户禁言时间
// @namespace    http://tampermonkey.net/
// @version      2024-01-10
// @description  try to take over the world!
// @author       tompan-1901
// @match        https://www.zhihu.com/people/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=zhihu.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const data = JSON.parse(document.getElementById("js-initialData").text)
    const result = document.createElement('div')
    const accountStatus = data.initialState.entities.users[document.URL.slice("https://".length).split('/')[2]].accountStatus[0]
    if (!accountStatus) {
        return
    }
    result.innerHTML = `<div style="position:absolute;left:0;top:0;z-index:1000;background-color:white;">
    <div>此用户被禁言到${new Date(accountStatus.createdAt*1000+accountStatus.expiredAt*1000).toLocaleDateString()}</div>
    </div>`
    const card = document.querySelector(".Card")
    card.style = "position: relative;"
    card.appendChild(result)
})();