您的位置:

微博视频去水印下载

一、解析微博视频地址

在进行微博视频去水印下载前,我们首先需要解析微博视频地址。

微博视频地址的格式大致如下:

https://f.video.weibocdn.com/(数字)/(视频码)...

我们可以通过以下的步骤进行解析:

1. 打开微博客户端,复制视频分享链接。

2. 对该链接进行解码,我们可以获得类似于如下的地址:

https://weibo.com/tv/v/xxxxxxxxx

3. 对该地址进行访问,我们可以在页面源代码中找到视频地址。

代码示例:

// 解析微博视频地址
function parseWBVideo(url) {
  // 解码分享链接
  url = decodeURIComponent(url);
  // 解析视频ID
  var match = url.match(/\/([^\/]+)$/);
  var vid = match ? match[1] : '';
  if (!vid) {
    return '';
  }
  // 访问视频页面
  var xhr = new XMLHttpRequest();
  var videoUrl = '';
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
      // 在页面源代码中找到视频地址
      var match = xhr.responseText.match(/"videoSources":\[(.+?)\]/);
      var sources = match ? JSON.parse(match[1]) : [];
      for (var i in sources) {
        var source = sources[i];
        if (source.type === 'mp4_hd720') {
          videoUrl = source.url;
          break;
        } else if (source.type === 'mp4') {
          videoUrl = source.url;
        }
      }
    }
  };
  xhr.open('GET', 'https://weibo.com/tv/v/' + vid, false);
  xhr.send();
  return videoUrl;
}

二、下载微博视频

我们可以通过以下的步骤进行微博视频下载:

1. 解析微博视频地址。

2. 下载视频。

代码示例:

// 下载微博视频
function downloadWBVideo(url, filename) {
  // 解析视频地址
  var videoUrl = parseWBVideo(url);
  if (!videoUrl) {
    return false;
  }
  // 创建下载链接
  var link = document.createElement('a');
  link.href = videoUrl;
  link.download = filename || '';
  // 触发下载
  var event = document.createEvent('MouseEvents');
  event.initEvent('click', true, true);
  link.dispatchEvent(event);
  return true;
}

三、去除微博视频水印

微博视频中包含有水印,我们可以借助一些第三方工具将其去除。

一个比较好用的工具是“微博去水印”(https://www.cccom.com/tools/weibo_video_download.html)。

代码示例:

// 借助“微博去水印”去除视频水印
function removeWBVideoWatermark(url) {
  // 构造跨域请求
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
      // 在结果页面中找到去水印后的视频地址
      var doc = new DOMParser().parseFromString(xhr.responseText, 'text/html');
      var videoUrl = doc.querySelector('.pageurl') ? doc.querySelector('.pageurl').textContent : '';
      if (videoUrl) {
        // 下载去水印后的视频
        downloadWBVideo(videoUrl);
      }
    }
  };
  xhr.open('GET', 'https://www.cccom.com/tools/weibo_video_download.html?url=' + encodeURIComponent(url), true);
  xhr.send();
}