Electron绕过B站的图片防盗链验证

由于本人并不满足Bilibili抽奖条件,因此决定为我的工具箱增加一个抽奖功能,开发中发现B站得头像的图片链接并不能正常在我的页面中显示,一番调查后发现,发生这种问题主要原因是referer,浏览器在请求时会默认带上这个字段。而B站得后台对此字段应该有一个白名单,而我本地地址(127.0.0.1)不在这个名单中,所以无法加载该图片。这应对方法也很简单,Electron中是可以修改这个值的,我将referer改成百度(https://www.baidu.com),顺利解决问题,代码如下:

import { app, BrowserWindow, shell, session } from 'electron'

const filter = {
    urls: ['*.hdslb.com/*']
  }
  session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, cb) => {
    console.log(details)
    details.requestHeaders['referer'] = 'https://www.baidu.com'
    let data = { requestHeaders: details.requestHeaders }
    cb(data)
  })
Electron绕过B站的图片防盗链验证
分享