请确保已安装 Tampermonkey 正式版
扩展(脚本管理器)后,再去点击上面的 [安装脚本] !
注意:使用 Safari 浏览器时,可能会遇到部分网站无法运行任何油猴脚本,具体原因请见:#110202

- CloudflareSpeedTest - 测试 Cloudflare CDN 延迟和速度,获取最快 IP (IPv4+IPv6)!
- Trackerslist.com - 每天更新!全网热门 BT Tracker 列表!有效提高 BT 下载速度!10k+⭐
- 护眼模式 - 简单有效的全网通用护眼、夜间、暗黑模式
- 知乎增强 - 移除登录弹窗、屏蔽首页视频、快捷收起回答/评论、快捷回到顶部、屏蔽用户/关键词/盐选、默认高清原图、默认站外直链...
- Github 增强 - 高速下载 Clone、Release、Raw、Code(ZIP) 等文件、项目列表单文件快捷下载 (☁)
- 蓝奏云网盘增强 - 刷新不回根目录、后退返回上一级、右键文件显示菜单、点击直接下载文件、自动显示更多文件、自定义分享链接域名...
如果觉得还不错,就去 Github 点个 [⭐ Star] 鼓励一下下吧(或者多多分享)! https://github.com/XIU2/UserScript
该脚本有什么用?
浏览网页向下滚动时,脚本会自动将下一页内容无缝追加到当前网页底部(瀑布流),翻吖翻吖一直翻不到头~
因为各个网站的差异及复杂性,单纯依靠 寻找下一页链接 及 网页主体元素 来实现通用型规则是不现实的,这样做也只能适配一些简单的网站,并且会面临大量需要针对性解决的兼容性问题,考虑到我的技术水平只是入门,因此我选择了部分通用型规则 + 针对型规则的搭配,支持网站数量并不多,但所有规则都是自己一点点写出来的,每个我都会尽量保证翻页的体验~ (特别是那些漫画站,老费头发了。。。另外,也支持自定义翻页规则
(但仅适用于简单的网站~
本脚本并不是为了替代其他同类,开发初衷仅仅是为了更自由的实现自身需求,因此不在乎是不是最好用的,简简单单的追求⭐ 小而美 ⭐
就挺好。悲观的讲这类脚本迟早要被时代的进步所抛弃,从这几年的发展来看,未来会越来越多网站改为动态加载内容,这也就意味着越来越多网站将会无法添加支持。。。
如果要对当前网站禁用自动无缝翻页,请点击浏览器右上角的 Tampermonkey 扩展图标 ✅ 已启用 (点击对当前网站禁用)
。
如果不习惯论坛帖子内自动无缝翻页,请点击浏览器右上角的 Tampermonkey 扩展图标 ✅ 帖子内自动翻页
来关闭。
不过,一般论坛帖子内都有左上角的 [回复]、右侧悬浮 [快速回复] 等快捷回帖按钮,或点击左下角页码临时暂停翻页也行。
# 左下角显示当前页码(💡⭐💡 > 点击左下角页码 = 临时暂停翻页 < 💡⭐💡)
网页左下角会显示当前页码(也就是翻页次数)。
鼠标左键点击这个页码就可以 临时暂停本页自动无缝翻页(再次点击可恢复)。
默认开启,如果想要关闭,请点击浏览器右上角的 Tampermonkey 扩展图标 ✅ 显示当前页码及点击暂停翻页
。
# 左键双击网页空白处暂停翻页
在网页上任意空白处双击鼠标左键来暂停当前网页的自动无缝翻页功能,不过因为容易误触等缺陷而被点击页码暂停所替代。
默认关闭,如果想要开启,请点击浏览器右上角的 Tampermonkey 扩展图标 ❌ 左键双击网页空白处暂停翻页
。
支持哪些网站?
因为网站类型的不同,所以下面的表头列大家自行对应(比如文章 = 帖子、分类 = 版块/贴吧的帖子列表)。
因为已支持的网站越来越多,无法全列出来,所以下面只展示了一部分,不少网站被省略了,提交申请前记得确认是否已支持。
# 想要某个网站支持 [自动无缝翻页] ?欢迎告诉我(本站反馈 / Github 💡⭐💡 不按要求
⤵ 提交申请直接忽略
💡⭐💡
1、虽然 Greasyfork 允许,但本脚本不会对「Porn」类网站添加支持(暂时判断标准为:只发布成人内容 / 大量露点
)。
2、申请添加支持的网站,如需要登录才能看到内容,请私信我账号,否则我无法凭空制作翻页规则(网课类不会添加支持)。
3、申请添加支持网站前,请先确认不是动态加载内容的网站(鼠标指向页码,左下角显示链接即代表不是),这类网站无法制作规则。
如果 Github、GreasyFork 你都没有账号,可以随便找个在线临时邮箱注册下(反馈完扔~
如何安装/使用该脚本?
要使用该脚本,需要浏览器安装一个 Tampermonkey 脚本管理器扩展(Chrome / Firefox / Edge)。
其他基于 Chromium 内核的浏览器(如国内套皮浏览器)都可以使用 Chrome 的扩展。
请确保使用 Tampermonkey 正式版 扩展,其他的用户脚本管理器可能导致无法正常使用脚本。
不会离线安装 .crx 扩展? 请重新开启 Chrome、Edge 隐藏 [拖入安装 .crx 扩展] 功能!
自定义翻页规则示例/说明:
自动无缝翻页 脚本从 v4.8.8
版本开始,支持了自定义翻页规则。
不过因为当初仅为自用,所以压根没有考虑过这需求,导致我只能勉强实现自定义翻页规则,因此只适用于简单的网站,凑活着用吧。
# 自写规则 前提条件
- 了解 JSON 基本格式
- 了解 CSS 或 Xpath 选择器用法
- 部分情况下可能需要会一点 JavaScript 语言
简单的来说,这就是提供给 有一定技术 且 喜欢自给自足制作一些简单规则 的用户使用的。
大家也可以在下面 提出改进建议 或 分享规则~
# 规则总览(只列出了目前 自定义翻页规则 能用的)
functionS: 匹配该网站域名时要执行的函数(一般用于根据 URL 分配相应翻页规则)
locationC: 对于使用 pjax 技术的网站,需要监听 URL 变化来重新判断翻页规则(需要放在 functionS 中)
hiddenPN: 不显示脚本左下角的页码
history: 添加历史记录 并 修改当前 URL(默认开启,对于不支持的网站要设置为 false)
style: 要插入网页的 CSS Style 样式
retry: 允许获取失败后重试
pager: {
type: 翻页模式
1 = 由脚本实现自动无缝翻页,可省略(适用于:静态加载内容网站,常规模式)
2 = 只需要点击下一页按钮(适用于:网站自带了 自动无缝翻页 功能)
nextText: 按钮文本,当按钮文本 = 该文本时,才会点击按钮加载下一页(避免一瞬间加载太多次下一页,下同)
nextTextOf: 按钮文本的一部分,当按钮文本包含该文本时,才会点击按钮加载下一页
nextHTML: 按钮内元素,当按钮内元素 = 该元素内容时,才会点击按钮加载下一页
interval: 点击间隔时间,对于没有按钮文字变化的按钮,可以手动指定间隔时间(单位 ms,默认 300,当指定上面三个时,会忽略 interval)
isHidden: 只有下一页按钮可见时(没有被隐藏),才会点击
3 = 依靠 [基准元素] 与 [浏览器可视区域底部] 之间的距离缩小来触发翻页(适用于:主体元素下方内容太多 且 高度不固定时)
scrollE: 作为基准线的元素(一般为底部页码元素)
scrollD: 基准元素 - 可视区域底部
4 = 动态加载类网站(适用于:简单的动态加载内容网站)
insertE: 用来插入元素的函数
nextL: 下一页链接所在元素
pageE: 要从下一页获取的元素
insertP: 下一页元素插入本页的位置(数组第一个是基准元素,第二个是基准元素的前后具体位置)
1 = 插入基准元素自身的前面
2 = 插入基准元素内,第一个子元素前面
3 = 插入基准元素内,最后一个子元素后面
4 = 插入基准元素自身的后面
5 = 插入 pageE 列表最后一个元素的后面(该 insertP 可以直接省略不写,等同于 ['pageE', 5] )
6 = 插入该元素自身内部末尾(针对小说网站等文本类的),附带参数 insertP6Br: true, 用来中间插入换行
// 小技巧:当基准元素是下一页主体元素的父元素时(或者说要将下一页元素插入到本页同元素最后一个后面时)是可以省略不写 insertP
例如:当 pageE: 'css;ul>li' 且 insertP: ['css;ul', 3] 时,实际等同于 ['css;ul>li', 5]
当 pageE: 'css;.item' 且 insertP: ['css;.item', 4] 时,实际等同于 ['css;.item', 5]
当 pageE: 'css;.item' 且 insertP: ['css;.page', 1] 时,实际等同于 ['css;.item', 5]
注意:如 pageE 中选择了多类元素,则不能省略 insertP(比如包含 `,` 与 `|` 符号)
replaceE: 要替换为下一页内容的元素(比如页码)
scrollD: 翻页动作触发点([滚动条] 与 [网页底部] 之间的距离),数值越大,越早开始翻页,一般是访问网页速度越慢,该值就需要越大
scriptT: 单独插入 <script> 标签
0 = 下一页的所有 <script> 标签
1 = 下一页的所有 <script> 标签(不包括 src 链接)
2 = 下一页主体元素 (pageE) 的同级 <script> 标签
3 = 下一页主体元素 (pageE) 的子元素 <script> 标签
interval: 翻页后间隔时间(单位 ms)
forceHTTPS: 下一页链接强制 HTTPS
},
function: {
bF = 插入前执行函数
bFp = 参数
aF = 插入后执行函数
}
# 规则示例
注意:因为自定义翻页规则的局限性以及格式的差别,因此不能完全照搬脚本内置规则!
以下是我从内置翻页规则中找的几个规则,并改成了自定义翻页规则的格式,大家可以自行对比理解差别。
注意:以下为了方便对每一条规则进行解释,我直接在规则旁边写了注释,但 JSON 是不存在注释的,因此添加到脚本中时记得移除所有注释内容,否则会报错!
当只有一个规则时,是这样的:
{
"aaa": {
"host": "xxxx",
"xxxx": "xxxx"
}
}
当有多个规则时,要这样连接到一起的(最后一段不加逗号):
{
"aaa": {
"host": "xxxx",
"xxxx": "xxxx"
},
"bbb": {
"host": "xxxx",
"xxxx": "xxxx"
}
}
因此在写入自定义翻页规则的时候,别忘了注意包裹着所有规则的 { }
大括号,以及最容易新手犯错的逗号问题
## 模式 1
这个模式是最常见的,即网站是纯静态加载内容的。
// 规则名(唯一,不能重复,不能数字开头)
"baidu": {
// 单个域名
// 支持正则,格式示例如:"host": "/\\.baidu\\.com/", 也支持多个正则组成的数组
"host": "www.baidu.com",
// 当 URL 路径 = /s 时才应用该规则
// 而 locationC = true; 针对的是百度首页搜索后,网页没有跳转而只是改了 URL 及网页内容,就需要这样做来重新匹配翻页规则
// 这个 functionS 的设计最终只是为了避免被正则折磨,所以选了这种更灵活的做法,结果在自定义规则上就发现是个坑。。。
"functionS": "locationC = true; if (location.pathname == '/s') {return true;}",
// 应用规则时,要插入的自定义 CSS 样式(比如用来隐藏广告什么的)
"style": ".new-pmd .c-img-border {position: initial !important;} .op-bk-polysemy-video__wrap.c-gap-bottom {display: none !important;}",
// 这里面的就是翻页相关的规则了
"pager": {
// 模式 1 的话,可以省略 "type": 1, 这条规则
// 这个是 Xpath 选择器,即在 id="page" 的元素下寻找一个内容包含 下一页的 a 元素
"nextL": "id(\"page\")//a[contains(text(),\"下一页\")]",
// 这个是主体内容元素,即 id="content_left " 的元素下所有子元素
// 因为要向主体内容元素末尾插入,所以 insertP 可以省略
"pageE": "css;#content_left > *",
// 这个是将当前网页中的某些元素替换为下一页的同类元素(如页码)
"replaceE": "css;#page",
// 这个是翻页动作触发点,即滚动条 与 网页底部之间小于 2000 时就会翻页,越大就意味着翻页越频繁
"scrollD": 2000
}
}
"zxzj": {
// 多个域名的话,就要写成数组了
"host": ["www.zxzj.me", "www.zxzj.fun"],
// 这个的意思是如果不等于首页,URL 路径中也不存在 /detail/ 和 /video/ 那么就应用该规则
"functionS": "if (location.pathname != '/' && location.pathname.indexOf('/detail/') == -1 && location.pathname.indexOf('/video/') == -1) {return true;}",
"style": "div.stui-page__all {display: none !important;}",
"pager": {
"nextL": "//ul[contains(@class, \"stui-page__item\")]//a[text()=\"下一页\"]",
"pageE": "css;ul.stui-vodlist > li",
"replaceE": "css;ul.stui-page__item",
"scrollD": 1000
},
// 这下面的就是翻页前后需要做的事情了
"function": {
// 插入前执行的代码,在将主体元素插入网页之前,先处理一下(相比于插入后处理,会更快更好)
// 这个是脚本内置的函数,用来加载图片(一些网站是默认图片,只有浏览到时才会加载图片,而脚本翻页后就只能由脚本去加载图片了)
// 因为设计局限性,bF 只能指定 src_bF 和 xs_bF 这两个内置函数
"bF": "src_bF",
// 这个里面的 0 代表图片是 src 属性(1 代表是 background-image: url() 背景样式类的图片)
// 这个 "img[data-original]" 代表要寻找的图片 CSS 选择器
// 这个 "data-original" 代表要把图片的 data-original 属性内容设置为 src 属性
"bFp": [0, "img[data-original]", "data-original"]
}
}
"dmhy": {
"host": ["share.dmhy.org", "dmhy.anoneko.com"],
"pager": {
"nextL": "//div[@class=\"nav_title\"]/a[contains(text(), \"下一\")]",
"pageE": "css;#topic_list > tbody > tr",
"replaceE": "css;.nav_title",
"scrollD": 1500
},
"function": {
// 插入后执行的代码
// 因为设计局限性,很多适合插入前执行的代码只能放到 aF 中执行了,比如下面这个就是插入网页主体内容后执行一段 JS 代码
// 直接插入 script 标签是不会执行其内部代码的,只有这样插入后才行
"aF": "document.body.appendChild(document.createElement('script')).textContent = `$('#topic_list > tbody > tr:even:not(.even):not(.odd)').addClass('even'); $('#topic_list > tbody > tr:odd:not(.even):not(.odd)').addClass('odd');"
}
}
## 模式 2
这个算是第二常见的,即网站自带了自动无缝翻页功能,只需要点一下网页中相应按钮即可。
"discuz_forum": {
"host": "www.52pojie.cn",
// 没有 functionS 则代表该规则适用于全站,在规则不影响其他页面的情况下,可以偷懒不写
"pager": {
// 模式 2
"type": 2,
// 网页自带的无缝加载下一页/更多内容的元素
"nextL": "css;#autopbn",
// 上面元素包含 "下一页" 文字时,脚本才会点击,用来避免多次重复点击,不写的话则会有默认 300ms 的间隔,可以用 interval 规则指定间隔(例如 "interval": 1000, 就是点击下一页元素后最少间隔 1000 毫秒才会继续点击)
"nextTextOf": "下一页",
"scrollD": 1500
}
}
## 模式 3
模式 1 的变种,对于部分网页主体内容与网页底部之间距离不固定的网站,需要把基准从网页底部改为页码等指定元素处。
"_3dmgame": {
"host": "www.3dmgame.com",
"pager": {
// 模式 3
"type": 3,
"nextL": "css;li.next > a",
// 有些网站需要插入主体内容后,执行一些网页自身的 JS 文件,所以这里同时选择了 script 和网页主体元素
"pageE": "css;script[src*=\"common.js\"], .news_warp_center > *",
// 为了避免把主体元素插入到了 script 的里面(包括选择多个主体内容时),所以 insertP 就不能省略了
"insertP": ["css;.news_warp_center", 3],
"replaceE": "css;.pagewrap",
"scrollE": "css;.pagewrap",
// 如果要运行 pageE 里选择的 script 代码,那么就需要指定 2
"scriptT": 2,
// 为了避免翻页过快,而设置的翻页最小间隔(单位 ms)
"interval": 500,
"scrollD": 500
}
}
更新日志: