网盘链接识别

识别网页中显示的网盘链接,目前包括百度网盘、蓝奏云、天翼云、中国移动云盘(原:和彩云)、阿里云、文叔叔、奶牛快传、123盘、腾讯微云、迅雷网盘、115网盘、夸克网盘、城通网盘(部分)、坚果云、UC网盘、BT磁力,支持蓝奏云、天翼云(需登录)、123盘、奶牛、UC网盘(需登录)、坚果云(需登录)和阿里云盘(需登录,且限制在网盘页面解析)直链获取下载,页面动态监控加载的链接,可自定义规则来识别小众网盘/网赚网盘或其它自定义的链接。

ئاپتورى
WhiteSevs
بۈگۈن قاچىلانغىنى
70
جەمئىي قاچىلانغىنى
216,290
باھا نومۇرى
60 5 5
نەشرى
2024.12.9
قۇرۇلغان ۋاقتى
2022-05-24
يېڭىلانغان ۋاقتى
2024-12-09
ئىجازەتنامىسى
GPL-3.0-only
قوللايدىغىنى
بارلىق بېكەتلەر

网盘链接识别

注:并非所有功能都是默认开启,有些功能需要到油猴菜单中打开【设置】,手动开启功能。 当网页存在CSP策略时,执行本脚本会导致CPU占用率高,请自行添加自定义规则将网站匹配模式修改为Menu或者将网站添加到脚本管理器的黑名单,例如:bilibili、Youtube

一个用于识别网页中的网盘链接的油猴脚本。

📦 特性

  • [x] 内置多种网盘识别规则
  • [x] 自定义弹窗的动画、拖拽、遮罩层点击事件
  • [x] 自定义悬浮按钮的大小、透明度、背景轮播间隔时间、吸附边缘
  • [x] 自定义小窗的宽高
  • [x] 自定义匹配模式是自定执行的观察者模式还是手动执行的菜单模式
  • [x] 自动填入识别到的网盘的访问码
  • [x] 自定义匹配页面文本类型
  • [x] 支持匹配网页url、ShadowRoot、Input、TextArea的内容
  • [x] 支持自定义匹配间隔时间(防止间隔时间过短,导致CPU占用率高)
  • [x] 支持点击网盘图标自动定位到链接所在位置(只有是可见的才能成功定位)
  • [x] 支持保存匹配记录,可在历史匹配记录中查看
  • [x] 等其它功能...

🚩安装

注:建议使用浏览器扩展执行本脚本。

  • 浏览器扩展的功能和Api更完整
  • 非浏览器扩展使用脚本会遇到更多使用上的问题(跨域问题、脚本冲突等)

🌈 使用方式

识别出链接时,页面侧边栏会出现一个悬浮按钮。

功能 设备 操作 备注
显示链接界面 PC 点击
手机 点击
显示设置界面 PC 双击/右击后点击设置
手机 双击
显示历史匹配记录 PC 油猴菜单中打开/悬浮按钮右击菜单中选择打开
手机 油猴菜单中打开
显示访问码规则 PC 油猴菜单中打开/悬浮按钮右击菜单中选择打开
手机 油猴菜单中打开
显示网站规则 PC 油猴菜单中打开/悬浮按钮右击菜单中选择打开
手机 油猴菜单中打开
显示主动识别文本 PC 油猴菜单中打开/悬浮按钮右击菜单中选择打开
手机 油猴菜单中打开
复制链接 PC 链接界面/历史匹配记录界面右击链接
手机 链接界面/历史匹配记录界面长按链接
访问链接 PC 链接界面/历史匹配记录界面右击链接
手机 链接界面/历史匹配记录界面长按链接
修改访问码 PC 链接界面/历史匹配记录界面右击链接 修改后的访问码不会被新匹配到的访问码所替换
手机 链接界面/历史匹配记录界面长按链接

📢 部分功能介绍

Toast

  • 位置:设置Toast显示的位置,如:顶部、底部、中间
  • 同时显示最多数量:设置Toast最多同时显示的数量
  • 逆序弹出:设置Toast显示的顺序

弹窗

  • 动画:设置弹窗显示/隐藏的过渡动画
  • 点击弹窗遮罩层关闭弹窗:开启后可以直接点击遮罩层关闭弹窗
  • 拖拽窗口:可以点击标题来移动弹窗窗口
  • 限制拖拽距离:当开启时,弹窗窗口将会限制它的拖拽上下左右的最大值
  • 亚克力效果:给弹窗颜色添加亚克力效果

文件弹窗

  • 排序名:一般是多文件直链弹窗的显示的文件夹文件的排序,自动记忆选择的排序规则
  • 排序规则:一般是多文件直链弹窗的显示的文件夹文件的排序,自动记忆选择的排序规则

悬浮按钮

  • 大小:设置悬浮按钮的大小(15px~250px)
  • 透明度:设置悬浮按钮的透明度(0.1~1),数值越低悬浮按钮越透明
  • 背景轮播时间:当匹配到多个网盘链接时,会按本值时间进行切换已匹配到的网盘图标
  • 背景显示时间:当匹配到多个网盘链接时,会按照本值设置网盘图标显示的停留时间
  • 吸附边缘:移动悬浮按钮松开后自动吸附在浏览器的边缘

小窗模式

  • 宽度:设置小窗宽度(px)
  • 高度:设置小窗最大高度(px)

功能

  • 匹配模式:选择MutationObserver是网页加载完毕后自动监听识别链接,选择Menu是会在油猴注册菜单用于手动点击进行识别
  • 行为模式:当匹配到网盘链接会触发UI显示,该选项可选择需要触发的UI
  • 自动输入访问码:开启后可通过右击长按出现的菜单选项访问链接,如果存在访问码,将自动填入访问码,目前存在部分网盘未实现自动填入(没找到这个网盘的存在链接的)

匹配设置

  • 匹配规则类型:自行选择【普通文本】规则还是【超文本】规则
  • 深入ShadowRoot获取匹配文本:对Shadow内的文本/超文本的内容进行获取
  • 匹配剪贴板:启用后浏览器会申请剪贴板权限用来读取剪贴板内容,并进行网盘链接匹配
  • 匹配当前URL:启用后会优先匹配当前URL地址,比如在xxx网盘内时
  • 匹配input标签的内容:启用后会对页面上所有的<input>标签的内容进行获取
  • 匹配textarea标签的内容:启用后会对页面上所有的<textarea>标签的内容进行获取
  • 删除中文字符:在进行文本匹配前,会删除掉所有中文字符
  • 删除任何空白字符:在进行文本匹配前,会删除掉所有空白字符
  • 匹配间隔:匹配文本完毕后的延迟xxx秒允许下一次匹配
  • 添加元素时进行匹配:当监听到页面添加元素时才进行匹配文本
  • 观察器:childList:子节点的变动(新增、删除或者更改)
  • 观察器:characterData:节点内容或节点文本的变动
  • 观察器:subtree:是否将观察器应用于该节点的所有后代节点

历史匹配记录

  • 保存匹配记录:将匹配到的链接信息进行本地存储,可点击【油猴菜单-⚙ 历史匹配记录】进行查看
  • 合并相同链接:将合并匹配到的相同链接,并更新它最后一次匹配到的更新时间、网址信息
  • 排序规则:显示出的弹窗的排序规则
  • 修复存储记录:如果【匹配记录】弹窗打不开,可能是存储的数据缺失某些字段,可尝试点击此处进行修复

网盘图标

  • 点击定位分享码:在识别的链接弹窗内,点击网盘小图标可以定位到页面中的包含该分享码的元素中的位置并且页面会滚动至元素
  • 选中分享码:光标选中包含分享码的元素,如果是#text元素,则选中分享码文字
  • 循环定位:关闭则每个包含分享码的元素只定位一次

分享码

  • 相同系数:例如分享码: aaaaaaaabb,它的相同系数是0.8,设置相同系数≥0.8时会被排除
  • 排除分享码:启用后会根据【相同系数】排除掉匹配到的分享码

访问码

  • 允许查询历史匹配记录:当访问码为空时,访问码将从历史匹配记录中查询,优先级:页面匹配 < 历史匹配记录 < 网站规则 < 黑名单

快捷键

  • 【打开】⚙ 设置:点击右边按钮来设置快捷键打开设置界面,如果已存在设置的快捷键,再次点击可删除设置的快捷键
  • 【打开】⚙ 历史匹配记录:点击右边按钮来设置快捷键打开历史匹配记录界面,如果已存在设置的快捷键,再次点击可删除设置的快捷键
  • 【打开】⚙ 访问码规则:点击右边按钮来设置快捷键打开自定义访问码规则界面,如果已存在设置的快捷键,再次点击可删除设置的快捷键
  • 【打开】⚙ 自定义规则:点击右边按钮来设置快捷键打开自定义规则界面,如果已存在设置的快捷键,再次点击可删除设置的快捷键
  • 【打开】⚙ 网站规则:点击右边按钮来设置快捷键打开网站规则界面,如果已存在设置的快捷键,再次点击可删除设置的快捷键
  • 【打开】⚙ 识别文本:点击右边按钮来设置快捷键打开主动识别文本界面,如果已存在设置的快捷键,再次点击可删除设置的快捷键
  • 执行文本匹配:点击右边按钮来设置快捷键主动进行一次页面内容匹配,如果已存在设置的快捷键,再次点击可删除设置的快捷键
网盘 新标签页打开 单文件解析 多文件解析 Scheme转发直链 提取码间隔前(Text/HTML) 提取码间隔后(Text/HTML) 其它功能
https://favicon.yandex.net/favicon/v2/https://pan.baidu.com/?size=16 百度网盘 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://www.lanzoux.com/?size=16 蓝奏云 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://www.ilanzou.com/?size=16 蓝奏云优享 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://cloud.189.cn/?size=16 天翼云 √(需登录) √(需登录) 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://yun.139.com/?size=16 中国移动云盘(原:和彩云) 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://www.aliyundrive.com/?size=16 阿里云 √(需登录,限制在网盘页面解析) √(需登录,限制在网盘页面解析) 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://www.wenshushu.cn/?size=16 文叔叔 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://cowtransfer.com/?size=16 奶牛快传 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://www.123pan.com/?size=16 123云盘 √(文件>100MB则需登录) √(文件>100MB则需登录) 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://www.weiyun.com/?size=16 腾讯微云 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://pan.xunlei.com/?size=16 迅雷网盘 20/300 10/15
https://favicon.yandex.net/favicon/v2/http://www.115.com/?size=16 115网盘 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://www.ctfile.com/?size=16 城通网盘 20/300 10/15 可自行配置解析站
https://favicon.yandex.net/favicon/v2/https://pan.quark.cn/?size=16 夸克网盘 20/300 10/15
🚖BT磁力 支持Scheme转发
https://favicon.yandex.net/favicon/v2/https://www.jianguoyun.com/?size=16 坚果云(需登录) 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://onedrive.live.com/?size=16 OneDrive 20/300 10/15
https://favicon.yandex.net/favicon/v2/https://drive.uc.cn/?size=16 UC网盘 √(需登录) √(需登录) 20/300 10/15

🔧 帮助

1. Scheme 调用方式

首先开启该设置后,需要在手机上装特定的 app https://baiqi.lanzoul.com/b066di6gb 密码:bzyb

该链接格式为jumpwsv://go?package={#package#}&activity={#activity#}&intentAction={#intentAction#}&intentData=网盘链接&intentExtra={#intentExtra#}

参数
{#package#} App包名
{#activity#} App的Activity入口
{#intentAction#} Activity Action Intent常量,一般是android.intent.action.VIEW
{#intentExtra#} 可以为空,若使用,则为{"参数1":"值1","参数2":"值2"},注意&换成{-and-}#换成{-number-}

下面几个是示例 scheme 链接,可以直接复制粘贴到里面去

  • 使用IDM+下载该链接
jumpwsv://go?package=idm.internet.download.manager.plus&activity=idm.internet.download.manager.UrlHandlerDownloader&intentAction=android.intent.action.VIEW&intentData={#intentAction#}&intentExtra=
  • 使用IDM+内部浏览器访问该链接
jumpwsv://go?package=idm.internet.download.manager.plus&activity=acr.browser.lightning.activity.BrowserLauncher&intentAction=android.intent.action.VIEW&intentData={#intentAction#}&intentExtra=
  • 使用IDM+内部浏览器隐身访问该链接
jumpwsv://go?package=idm.internet.download.manager.plus&activity=acr.browser.lightning.activity.IncognitoActivity&intentAction=android.intent.action.VIEW&intentData={#intentAction#}&intentExtra=
  • 使用ADM下载该链接
jumpwsv://go?package=com.dv.adm&activity=com.dv.get.AEditor&intentAction=android.intent.action.VIEW&intentData={#intentAction#}&intentExtra=
  • 使用ADM内部浏览器访问该链接
jumpwsv://go?package=com.dv.adm&activity=com.dv.get.WebBrow&intentAction=android.intent.action.VIEW&intentData={#intentAction#}&intentExtra=
  • 使用手机版迅雷下载该链接(可以是magnet格式)
jumpwsv://go?package=com.xunlei.downloadprovider
&activity=com.xunlei.downloadprovider.launch.dispatch.mocklink.LinkDLBtFileExplorerActivity&intentAction=android.intent.action.VIEW&intentData={#intentAction#}&intentExtra=

2. 什么是提取码文本匹配Text/HTML-间隔前

网盘链接分为两块,分享码提取码,其中,由于网站的网盘链接的多样性,分享码提取码关键字之间可能存在很长的干扰的字符串,比如:👇

https://pan.baidu.com/s/xxxxxxxxxx
这个是干扰字符串
提取码:
本贴的隐藏内容
abcd

那么这个这个是干扰字符串中文就是干扰的字符串,设置间隔长度即为设置分享码提取码关键字之间的最大的干扰字符串长度。 例如这个就需要设置值>8才能匹配到访问码

Text是对应匹配类型普通文本 HTML是对应匹配类型超文本

3. 什么是提取码文本匹配Text/HTML-间隔后

当匹配提取码关键字时,如密码提取码访问码时,它们后面的字母就是访问码,但是有些时候存在干扰字符串,比如:👇

https://pan.baidu.com/s/xxxxxxxxxx
这个是干扰字符串
提取码:
本贴的隐藏内容
abcd

那么这个:\n本贴隐藏内容中文就是干扰的字符串,设置间隔长度即为设置提取码关键字提取码之间的最大干扰字符串长度。 例如这个就需要设置值>9才能匹配到访问码

Text是对应匹配类型普通文本 HTML是对应匹配类型超文本

4. 为什么在设置中开启读取剪贴板且剪贴板中存在网盘链接,但是并没有成功识别?

浏览器Api兼容性查看: https://caniuse.com/mdn-api_permissions_permission_clipboard-read https://caniuse.com/mdn-api_clipboard_readtext

5. 如何配置自定义规则

  • 规则定义

点击查看如何自定义规则

  • 只有分享码的
{ 
    "key": "test1", // 这是需要识别的网盘的唯一key,如果和脚本里的key重复的话会覆盖,如果用户自定义中存在相同的key,将会合并,即一个key匹配多种网盘链接
    "icon": "", // (可选)用于显示的网盘图标,可以是data:image格式,或者是url图片,如果没有,会是空白图标
    "regexp": { // 匹配规则
        "link_innerText": "www.test.com/file/\\?surl=([0-9a-zA-Z])+", // 当设置中匹配类型为文本/全部,使用该规则
        "link_innerHTML": "www.test.com/file/\\?surl=([0-9a-zA-Z])+", // 当设置中匹配类型为超文本/全部,使用该规则
        "shareCode": "www.test.com/file/\\?surl=([0-9a-zA-Z])+", // 用于提取出shareCode
        "shareCodeNeedRemoveStr": "^www.test.com/file/\\?surl=", // 用于删除提取出的shareCode前面的域名、路径字符串
        "uiLinkShow": "https://www.test.com/file/?surl={#shareCode#}", // 显示出的链接
        "blank": "https://www.test.com/file/?surl={#shareCode#}", // 用于超链接打开
        "copyUrl": "https://www.test.com/file/?surl={#shareCode#}", // 用于复制到剪贴板
    },
    "setting": { // 设置
        "name": "wangpantest1", // 在设置中显示的网盘名
        "enable": true, // 是否启用
        "linkClickMode": {
            "openBlank": {
                enable: true,
                default: true
            }
        } // 是否让识别到的网盘链接改为新标签页打开
    }
}
  • 存在提取码的
{ // 存在提取码的
    "key": "test2", // 这是需要识别的网盘的唯一key,如果和脚本里的key重复的话会覆盖,如果用户自定义中存在相同的key,将会合并,即一个key匹配多种网盘链接
    "icon": "https://www.test2.com/favicon.ico", // 用于显示的网盘图标,可以是data:image格式,或者是url图片,如果没有,会是空白图标
    "regexp": { // 匹配规则
        "link_innerText": "www.test2.com/file/\\?surl=([0-9a-zA-Z])+[\\s\\S]{0,20}(密码|访问码|提取码)[\\s\\S]{0,10}[0-9a-zA-Z]{4}|)", // 当设置中匹配类型为文本/全部,使用该规则
        "link_innerHTML": "www.test2.com/file/\\?surl=([0-9a-zA-Z])+[\\s\\S]{0,100}(密码|访问码|提取码)[\\s\\S]{0,15}[0-9a-zA-Z]{4}|)", // 当设置中匹配类型为超文本/全部,使用该规则
        "shareCode": "www.test2.com/file/\\?surl=([0-9a-zA-Z])+", // 用于提取出shareCode
        "shareCodeNeedRemoveStr": "^www.test2.com/file/\\?surl=", // 用于删除提取出的shareCode前面的域名、路径字符串
        "checkAccessCode": "(密码|访问码|提取码)[\\s\\S]+", // 用于判断提取码是否存在
        "accessCode": "([0-9a-zA-Z]{4})", // 匹配提取码
        "acceesCodeNotMatch": "^(font|div|xxxx)", // 用于排除肯定不是提取码的关键字
        "uiLinkShow": "https://www.test2.com/file/?surl={#shareCode#} 提取码:{#accessCode#}", // 显示出的链接
        "blank": "https://www.test2.com/file/?surl={#shareCode#}", // 用于超链接打开,提取码会自动复制到剪贴板
        "copyUrl": "链接:https://www.test2.com/file/?surl={#shareCode#}\n密码:{#accessCode#}", // 用于复制到剪贴板

    },
    "setting": { // 设置
        "name": "wangpantest2", // 在设置中显示的网盘名
        "enable": true, // 是否启用
        "linkClickMode": {
            "openBlank": {
                enable: true,
                default: true
            }
        } // 是否让识别到的网盘链接改为新标签页打开
    }
}
  • 多条规则(这里拿飞猫云示例)
{
    "key": "feimaoyun",
    "icon": "https://www.feimaoyun.com/favicon.ico",
    "regexp": [
        {
            "link_innerText": "feimaoyun.com/s/([0-9a-zA-Z]+)",
            "link_innerHTML": "feimaoyun.com/s/([0-9a-zA-Z]+)",
            "shareCode": "feimaoyun.com/s/([0-9a-zA-Z]+)",
            "shareCodeNeedRemoveStr": "^feimaoyun.com/s/",
            "uiLinkShow": "https://www.feimaoyun.com/s/{#shareCode#}",
            "blank": "https://www.feimaoyun.com/s/{#shareCode#}",
            "copyUrl": "https://www.feimaoyun.com/s/{#shareCode#}"
        },
        {
            "link_innerText": "feimaoyun.com/#/s/([0-9a-zA-Z]+)",
            "link_innerHTML": "feimaoyun.com/#/s/([0-9a-zA-Z]+)",
            "shareCode": "feimaoyun.com/#/s/([0-9a-zA-Z]+)",
            "shareCodeNeedRemoveStr": "^feimaoyun.com/#/s/",
            "uiLinkShow": "https://www.feimaoyun.com/s/{#shareCode#}",
            "blank": "https://www.feimaoyun.com/s/{#shareCode#}",
            "copyUrl": "https://www.feimaoyun.com/s/{#shareCode#}"
        }
    ],
    "setting": {
        "name": "飞猫盘",
        "enable": true,
        "linkClickMode": {
            "openBlank": {
                enable: true,
                default: true
            }
        } // 是否让识别到的网盘链接改为新标签页打开
        "openBlankWithCopyAccessCode": true,
    },
}

或者单条规则

{
    "key": "feimaoyun",
    "icon": "https://www.feimaoyun.com/favicon.ico",
    "regexp": {
            "link_innerText": "feimaoyun.com(/#|)/s/([0-9a-zA-Z]+)",
            "link_innerHTML": "feimaoyun.com(/#|)/s/([0-9a-zA-Z]+)",
            "shareCode": "feimaoyun.com(/#|)/s/([0-9a-zA-Z]+)",
            "shareCodeNeedRemoveStr": "^feimaoyun.com(/#|)/s/",
            "uiLinkShow": "https://www.feimaoyun.com/s/{#shareCode#}",
            "blank": "https://www.feimaoyun.com/s/{#shareCode#}",
            "copyUrl": "https://www.feimaoyun.com/s/{#shareCode#}"
        },
    "setting": {
        "name": "飞猫盘",
        "enable": true,
        "linkClickMode": {
            "openBlank": {
                enable: true,
                default: true
            }
        } // 是否让识别到的网盘链接改为新标签页打开
        "openBlankWithCopyAccessCode": true,
    },
}

🎉赞赏支持

微信赞赏 支付宝赞赏