猫抓(cat catch)文档
  • 猫抓(cat catch)
  • 📖说明
    • 安装地址
    • 设置
    • M3U8解析合并下载
    • 使用 m3u8dl:// 协议
    • 调用本地程序
    • Dash MPD解析
    • popup页面
    • 弹出页面 / 筛选页面 / 预览页面
    • 深度搜索 / 缓存捕捉
    • 媒体控制
    • 使用油猴脚本给猫抓发送资源
    • 一些正则匹配示例
    • 在线ffmpeg
  • 常见问题
  • Bug 提交
  • 更新日志
由 GitBook 提供支持
在本页
  • 扩展和类型匹配规则
  • 正则匹配
  • 屏蔽网址
  • 复制选项
  • URL Protocol m3u8dl
  • 替换标签
  • 自定义保存文件名
  • 替换关键词(2.3.1+)
  • 函数支持
  • 其他设置
  • 始终不启用猫抓下载器
  • 使用本地播放器调用协议打开视频预览
  • m3u8dl://协议调用
  • 刷新、跳转到新页面 清空当前标签抓取的数据
  • 发送数据

这有帮助吗?

  1. 说明

设置

上一页安装地址下一页M3U8解析合并下载

最后更新于6天前

这有帮助吗?

扩展和类型匹配规则

浏览器接收到文件时判断

抓取类型,也称为mime扩展类型,部分网站不提供正确的文件后缀,需使用mime扩展类型判断文件,由于历史原因默认配置有 audio/* 和 video/* 特别的类型,不代表支持通配符。

扩展名 类型 不区分大小写,储存时自动转为小写。

正则匹配

浏览器准备打开这个URL之前就对这个URL进行正则匹配。所以优先级最高。

扩展 猫抓无法知道正则匹配的资源类型,需要指定一个扩展名,留空会尝试截取网址的后缀名,由于许多网址没有后缀所以可能最终无法知晓类型,无法在popup页面显示相应的解析器入口或播放图标。

正则匹配有两种匹配模式:

提取url 使用括号,可以只提取括号内的网址 (如上图第一个示例。)

常规匹配 判断URL是否匹配。(如上图第二个示例。)

屏蔽网址

在部分网址上不需要扩展,可以设置网址,支持通配符,例如 https://x.com/*

开启 设置为白名单 选项,列表更改为白名单,只有该名单内的网址扩展才会正常工作。

复制选项

方便使用第三方工具,点击popup页面复制按钮,直接复制你想要的字符串。

URL Protocol m3u8dl

具体查看使用 m3u8dl:// 协议

替换标签

自定义保存文件名

需打开 其他设置 里 使用自定义文件名保存文件 选项。可以创建目录 例${title}/${fullFileName} 最后储存在 以 title 创建的文件夹内。

替换关键词(2.3.1+)

用于 复制选项 N_m3u8DL-CLI 保存文件名 等 使用的关键词替换。标签区分大小写。

标签
说明
结果 示例

${url}

资源地址

https://bmmmd.com/test.mp4

${referer}

资源请求头 如果资源不存在referer不输出内容, 建议配合exists函数

https://bmmmd.com/

${initiator}

类似于永远有值的 ${referer} 如果资源不存在referer则使用来源网址域名或当前页面网址。

https://bmmmd.com

${webUrl}

资源播放页面地址

https://bmmmd.com/test.html

${title}

资源播放页面的标题

测试视频

${fullFileName}

完整文件名

test.mp4

${fileName}

文件名,不包含扩展

test

${ext}

扩展名,不包含"."

mp4

${userAgent}

User Agent 自定义在设置 - 替换标签 修改

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36

${cookie}

资源所需的cookie 有可能为空 格式为 key=value;key=value; 需要猫抓 2.3.8版本

key=value;key2=value2;

${mobileUserAgent}

同样也是模拟手机时用的User Agent

${year}

${month}

${date} ${hours} ${minutes} ${seconds}

时间相关,年/月/日/时/分/秒

*

${day}

星期几(英文)

Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday

${now}

unix 时间戳

1672329448871

${fullDate}

日期

2020-12-28

${time}

时间

21'30'55

${shareApi}

${range}

函数支持

以上列表标粗的标签可以使用函数

函数
说明
示例

slice

字符截取

${title|slice:0,5} 提取标题前5个字符

${title|slice:-10} 提取标题末尾10个字符 参数设定来自 js语言 slice 函数

replace

字符替换

${fullFileName|replace:".m3u8",".mp4"} 文件名中的".m3u8"字符替换成".mp4" ${title|replace:"网站",""} 删除标题中 网址 一词 参数设定来自 js语言 replace 函数

replaceAll

字符替换

同上 replace 只替换一次。replaceAll 多次替换。 ${fullDate|replaceAll:"-","/"} 2020/12/28 把日期的分隔符换成 "/"

regexp

正则提取

${url|regexp:"(https?://[^?]*)"} 资源地址,提取不包含参数的地址

exists

如果存在则输出

反之输出第二个参数,没有第二参数,不输出任何内容。

${referer|exists:'--headers "Referer:*"'} 如果存在referer 则输出 --headers "Referer:*" *号最终会被替换成referer本身。

建议填写在m3u8DL参数内,如果存在referer向m3u8DL传递--headers参数,如果没有则不传递。

${fullFileName|exists:"*","${title}"} 如果有文件名输出自己,没有文件名输出网页标题。

to

字符串转换 base64 urlEncode

urlDecode lowerCase upperCase filter

${title|to:base64}

5rWL6K+V6KeG6aKR

base64编码 ${url|to:urlEncode} https%3A%2F%2Fbmmmd.com%2Ftest.m3u8 url编码 ${url|to:lowerCase} 英文字母转小写 ${url|to:upperCase} 英文字母转大写 ${url|to:filter} 无法作为文件名的字符替换为HTML 字符实体

filter

过滤/替换 无法作为文件名的字符

${url|filter:"_"} 把不能作为文件名的字符 替换为 下划线 被替换的字符 < > : " | ? * ~

支持链式调用,例如

${url|regexp:"(https?://[^?]*)"|replace:"http://","https://"|to:base64}

将从左到右依次对url进行,提取 替换 转换base64操作。

其他设置

始终不启用猫抓下载器

下载文件时,检测到资源服务器拒绝下载会重新打开猫抓下载器携带referer参数重新下载文件。如果你使用第三方下载软件打开该选项禁止猫抓下载器被调用。

使用本地播放器调用协议打开视频预览

部分本地播放器有调用协议,如PotPlayer 有 potplayer:// 猫抓就能使用该协议直接调用potplayer去播放抓取的资源。

支持替换标签

右侧 调用协议模板 下拉菜单有常用的播放器协议。只有部分安卓浏览器支持intent:协议调用,所以手机用户更建议使用 系统分享 模式。

不使用调用协议 删除清空即可。

系统分享模式对浏览器版本有需求。

m3u8dl://协议调用

具体查看教程使用 m3u8dl:// 协议

刷新、跳转到新页面 清空当前标签抓取的数据

分为 不清空 正常清理 频繁清理。

其中 频繁清理 比较敏感,比如视频网站,点击观看下一个视频时会先清空。

正常清理 严格按照 是否用户主动刷新,主动点击新链接到新页面,以上动作才会触发清空。

频繁清理可能会导致部分网站在嗅探到资源后立刻被清理,遇到嗅探不到资源的网站,请先尝试清理模式改为 正常 或者 不清理。

发送数据

能够自定义发送数据到第三方地址上,请求体 确保为JOSN格式

${action}为特殊标签, 表示不同数据类型, 如果是捕获数据替换为 catch 字符串, 如果是密钥数据 会被替换为 addKey 字符串。

如果${action} 是catch ${data} 则为 文件对象转为JSON格式内容

如果${action} 是addKey ${data} 则为 密钥base64字符串

示例: {"action": "${action}", "data": ${data}, "tabId": "${tabId}"}

// {"action": "${action}", "data": ${data}, "tabId": "${tabId}"}
{
    action: "catch",
    data: {
        name: "文件名",
        url: "资源地址",
        size: "资源大小"
        requestHeaders: {
            referer: "也可能不存在",
            origin: "也可能不存在",
            cookie: "也可能不存在"
        }
        ...: "其他"
    },
    tabId: "数据来源的tab ID"
}

// JSON 接受到疑似密钥
{
    action: "addKey",
    data: "base64数据",
    tabId: "数据来源的tab ID"
}

数据发送功能测试中,不同版本JSON结构会有差异。

系统分享API 只允许在

生成范围标签 只允许在m3u8解析器入口使用 详情查看

具体查看

📖
https://caniuse.com/mdn-api_navigator_share
使用本地播放器调用协议打开视频预览
https://bmmmd.com/${range:1-5}.ts
抓取后缀
抓取类型
正则匹配
复制选项
其他设置