b站网页端私信相关解决方法|lovely

2023-11-14更新:已失效,现在官方会用错误码400拒绝请求。2023-10-10更新:修改发图方法,原来的方法发的图只能存活1小时。2023-10-7更新:新增通过伪装分享视频的封面形式发送图片。2023-9-27更新:原来按照本教程设定但是失效的,把规则那里的equals改为contains就可以了。如果不明白,请参考下面的截图,已经更新过了。

做法发送文字私信在chrome/firefox/edge浏览器,搜索插件“requestly”下载,这里我教程中用的是chrome,其他浏览器可能有略微区别。

进入插件主界面,左边选择HTTP Rules,第一次安装可能需要点击中间的Create your first rule,选择Modify Request Body,如下图。

点击右上角的Create Rule,填写一条如下图所示的规则,两段需要填充的文本可以从下面复制,注意下面Request Body下面的选项选第二个。

https://api.vc.bilibili.com/web_im/v1/web_im/send_msgfunction modifyRequestBody(args) {

const { method, url, body, bodyAsJson } = args;

// 改字段以突破限制

let formData = new URLSearchParams(body);

formData.set('from_firework', 1);

// 伪装分享

let shareContent = {

id: 0,

title: '发送图片',

source: 5,

thumb: '',

author: '我',

author_id: '1'

};

const content = JSON.parse(formData.get('msg[content]'));

const regex = /!\[\.*]\((https?:\/\/[^)]+?)(?:@[^)]+)?\)/; // 消息为![](url)的形式

const matches = regex.exec(content.content);

const imgUrl = (matches && matches.length > 1) ? matches[1] : null;

if (imgUrl) {

shareContent.thumb = imgUrl;

formData.set('msg[msg_type]', 7);

formData.set('msg[content]', JSON.stringify(shareContent));

}

return formData.toString();

}结束,打开发私信的网页,保证这条规则是启用的,就可以正常发私信了。

发送图片私信需要配合github的xlzy520/bilibili-img-uploader图床工具使用。下载链接如下:

chrome/edge浏览器:

B站图床

B站图床、转短链插件

chrome.google.com

firefox浏览器:

https://addons.mozilla.org/addon/%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9%E5%9B%BE%E5%BA%8A/

以chrome为例,安装完成后打开插件,如果你在浏览器中登陆了b站,插件会自动识别SESSDATA(相当于登录状态)如果没有自动识别,请参考它的文档。通过点击或者拖拽上传图片:

上传完成后,找到已传图片-复制-markdown。

将复制的文本粘贴到私信,发送即可。

效果如下:

注意:

由于是视频封面,发送的图片长宽比会被裁剪为16:9,所以发送之前最好自己先处理一下

这里显示的“发送图片”和“我”是在上面的代码中定义的,可以自己改成你想要的文字

原理网页端发私信调用的是https://api.vc.bilibili.com/web_im/v1/web_im/send_msg这个api,请求体的形式为form data。具体如下:

from_firework字段值默认为0,此时对没回过你私信的用户发私信有只能发一条的限制,把这个值改成1就可以正常发了。发送图片的原理为,先将图片上传到b站图床中,通过正则表达式匹配你文字私信(msg_type为1)中的markdown表示图片的语法,将你在私信中发送的图片链接修改为分享视频的请求(msg_type为7),将你想要发送的图片设为分享视频的封面。bilibili-img-uploader是开源的,它将图片上传到b站图床的过程调用的是https://api.bilibili.com/x/article/creative/article/upcover这个api,通过伪装专栏图片的方式上传不会过期的图片。然而实际上你并没有专栏图片指向它,所以上传的图片是不会在你的b站空间中显示的,也就是说不会被别人看见。

问题与解决填写规则时插件可能会崩溃,把浏览器语言改成英文试试。

Copyright © 2022 九州天命装备站 - 装备获取&角色养成活动 All Rights Reserved.