This article contains 676 words.
Copyright: 署名-非商业性使用-相同方式共享 4.0 国际
|
CC BY-NC-SA 4.0 International从某天开始,Bilibili 网页端的搜索功能开始在返回的结果中推送视频。这往往导致准确度下降,尤其是当我想搜索没有接触过的关键词的时候。这个功能目前还找不到关闭的方法,只好自己手动修改。
搜索功能是通过 Cookie 中包含的用户信息来推荐的。要阻止推荐行为,一个办法是直接修改发送的 Cookie。直接删除 Cookie 是行不通的,服务器会直接返回 412错误。因此较好的办法是根据没有登录时的 Cookie 来过滤掉会导致推荐行为的 Cookie。
这里要借助的浏览器插件是 Header Editor。这个插件能让用户以很高的自由度修改浏览器发送和接受的内容,包括请求头(Cookie 就在请求头内),响应头和响应体。
使用十个随机生成的中文词语,无推荐(左侧)和有推荐(右侧)的搜索结果对比
手动添加规则
安装 Header Editor 后,新建一条规则。选择“修改请求头”(Modify request header),“匹配类型”(Match Type)中选择“正则表达式”(Regular expression),“匹配规则”输入以下表达式(这个表达式同时包含了新版和旧版的搜索 URL)
1
   | ^(?:https\:\/\/api\.bilibili\.com\/x\/web\-interface\/search|https\:\/\/api\.bilibili\.com\/x\/web\-interface\/wbi\/search)
   | 
 
然后选择“自定义函数”(Custom function),并输入以下的代码来过滤对请求头中的 Cookie。这些 Cookie 内容在没有登录的时候也会出现,可以保留:
1 2 3 4 5 6 7 8 9
   | for (const i in val) {     if (val[i].name.toLowerCase() === 'cookie') {         let oldCookie = val[i].value;         val[i].value =  oldCookie             .split(/;\s*/)             .filter(val => val.match(/^(?:buvid3|buvid4|CURRENT_FNVAL|b_nut|sid|bili_ticket|bili_ticket_expires)/))             .join('; ');     } }
  | 
 
设置内容
设置完成后点击“保存"(SAVE)
导入规则
将以下的代码保存到文件,并在“导入和导出”(EXPORT AND IMPORT)中导入,保存。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
   | { 	"request": [], 	"sendHeader": [ 		{ 			"enable": false, 			"name": "No recommendation in search", 			"ruleType": "modifySendHeader", 			"matchType": "regexp", 			"pattern": "^(?:https\\:\\/\\/api\\.bilibili\\.com\\/x\\/web\\-interface\\/search|https\\:\\/\\/api\\.bilibili\\.com\\/x\\/web\\-interface\\/wbi\\/search)", 			"exclude": "", 			"group": "Bilibili", 			"isFunction": true, 			"action": { 				"name": "cookie", 				"value": " val.split(/;\\s*/).filter(val => val.match(/^(?:buvid3|buvid4|CURRENT_FNVAL|b_nut|sid|bili_ticket|bili_ticket_expires)/) != undefined).join('; ')" 			}, 			"code": "for (const i in val) {\n    if (val[i].name.toLowerCase() === 'cookie') {\n        let oldCookie = val[i].value;\n        val[i].value =  oldCookie\n            .split(/;\\s*/)\n            .filter(val => val.match(/^(?:buvid3|buvid4|CURRENT_FNVAL|b_nut|sid|bili_ticket|bili_ticket_expires)/))\n            .join('; ');\n    }\n}" 		} 	], 	"receiveHeader": [], 	"receiveBody": [] }
  | 
 
也可以用这个链接导入:https://pastebin.com/raw/qaqVAEi2