Autopage规则编写指南:XIU2/UserScript自定义翻页
【免费下载链接】UserScript 🐵 自用的一些乱七八糟 油猴脚本~ 项目地址: https://gitcode.com/gh_mirrors/us/UserScript
你是否还在为浏览论坛、搜索结果时频繁点击"下一页"而烦恼?是否希望网页内容能像瀑布流一样自动加载,让阅读体验更加流畅?Autopage(自动无缝翻页)脚本正是为解决这些问题而生。本文将带你深入了解如何编写自定义翻页规则,让Autopage脚本适配你常用的任何网站。
什么是Autopage
Autopage是XIU2/UserScript项目中的一款用户脚本,它能自动识别网页的分页结构,将下一页内容无缝加载到当前页面底部,实现类似瀑布流的无限滚动效果。目前已支持论坛、搜索引擎、社交媒体等多种类型的网站,如Discuz!、Flarum、百度、谷歌等。
Autopage的核心优势
- 无缝加载:自动将下一页内容加载到当前页面底部,无需手动点击
- 高度可定制:通过自定义规则适配几乎任何分页网站
- 智能识别:内置多种常见论坛系统的自动识别功能
- 灵活配置:支持自定义翻页按钮、内容区域、加载时机等
规则文件结构解析
Autopage的翻页规则主要定义在两个文件中:
- Autopage.user.js:脚本主文件,包含核心逻辑和默认规则
- other/Autopage/rules.json:外置翻页规则文件,包含各网站的具体配置
rules.json基本结构
rules.json采用JSON格式,每个网站规则是一个对象,包含以下主要属性:
"网站名称": {
"host": ["域名1", "域名2"], // 匹配的域名,可以是字符串或正则表达式
"url": "/^\\/search/", // 匹配的URL路径,可以是字符串、正则表达式或函数
"style": ".pagination{display:none;}", // 自定义CSS样式
"history": true, // 是否添加历史记录
"thread": true, // 是否为帖子内页模式
"pager": { // 分页相关配置
"nextL": "a.next", // 下一页链接选择器
"pageE": ".content", // 内容区域选择器
"replaceE": ".pagination" // 分页控件选择器(加载后替换)
}
}
编写自定义规则的基本步骤
1. 确定网站信息
首先需要确定规则适用的网站域名和URL结构。例如,为百度搜索编写规则:
"百度搜索": {
"host": ["www.baidu.com", "ipv6.baidu.com"],
"url": "fun.isUrlC(); if (fun.isMobile()) {location.hostname = 'm.baidu.com';} else {return (fun.lp() == '/s')}"
}
host:指定适用的域名,可以是字符串数组或正则表达式url:指定适用的URL路径,可以是:- 字符串:精确匹配路径
- 正则表达式:以
/开头和结尾,如/^\\/search/ - 函数:使用JavaScript代码判断是否匹配
2. 定位关键元素
使用浏览器的开发者工具(F12)定位三个关键元素:
- 下一页链接:用户通常点击的"下一页"按钮或链接
- 内容区域:需要保留的主要内容部分
- 分页控件:包含页码的控件(加载新页后会被替换)
例如,为一个典型博客网站定位元素:
"博客网站": {
"host": "www.example.com",
"url": "/^\\/blog/",
"pager": {
"nextL": "a[rel='next']", // 下一页链接,通常有rel="next"属性
"pageE": "article.post", // 文章内容区域
"replaceE": "nav.pagination" // 分页导航控件
}
}
3. 选择器类型
Autopage支持多种类型的选择器:
- CSS选择器:最常用的选择器类型,如
"a.next"、"#pagination" - XPath选择器:以
//开头,如"//a[text()='下一页']" - JavaScript函数:以
js;开头,如"js; return document.querySelector('a.next')?.href"
4. 处理特殊情况
动态加载内容
有些网站使用AJAX动态加载内容,这时候需要使用type属性指定加载方式:
"动态加载网站": {
"host": "www.example.com",
"pager": {
"type": 2, // 类型2表示点击加载更多按钮
"nextL": "button.load-more", // 加载更多按钮
"interval": 1000 // 点击间隔时间(毫秒)
}
}
图片懒加载处理
对于使用懒加载的图片,可以通过function属性定义处理函数:
"图片网站": {
"host": "www.example.com",
"function": {
"bF": "return fun.src_bF(pageE,[0,'img[data-src]','data-src'])"
}
}
上述代码会将data-src属性的值赋给src属性,触发图片加载。
高级规则配置
分页类型(type)详解
Autopage支持多种分页类型,通过pager.type指定:
| 类型值 | 说明 | 适用场景 |
|---|---|---|
| 0 | 默认类型 | 普通链接跳转分页 |
| 2 | 点击加载 | 点击"加载更多"按钮加载内容 |
| 5 | 自定义函数 | 需要复杂逻辑计算下一页URL |
| 6 | AJAX加载 | 通过AJAX加载内容并替换 |
使用JavaScript函数增强规则
对于复杂的匹配逻辑或处理过程,可以使用JavaScript函数:
"复杂网站": {
"host": "www.example.com",
"url": "fun.isUrlC(); return (fun.lp() == '/search' && fun.indexOF('q=','s'))",
"pager": {
"nextL": "js; let page = parseInt(getCSS('.current').textContent) + 1; return '/search?page=' + page"
}
}
自定义样式和函数
- style:自定义CSS样式,用于隐藏不需要的元素或调整布局
- function:自定义JavaScript函数,包含以下几个钩子:
- bF:加载内容前处理
- aF:加载内容后处理
"自定义样式和函数示例": {
"host": "www.example.com",
"style": ".ads{display:none !important;}",
"function": {
"bF": "pageE.forEach(e => e.classList.add('new-page'))",
"aF": "initImages(); bindEvents();"
}
}
调试与测试
规则调试方法
- 查看控制台输出:Autopage会在浏览器控制台输出加载状态和错误信息
- 使用开发者工具:检查元素选择器是否正确匹配
- 修改本地规则:可以先修改本地rules.json进行测试,成功后再考虑提交PR
常见问题排查
- 规则不生效:检查host和url是否匹配当前页面
- 选择器错误:使用
document.querySelector()在控制台测试选择器 - 分页类型错误:根据网站分页方式选择正确的type值
- 冲突问题:检查是否有其他脚本影响页面结构
规则示例:为"示例论坛"编写规则
让我们以一个假设的"示例论坛"为例,完整编写一个翻页规则。
网站特点分析
- 域名为:
forum.example.com - 列表页URL:
/forum-1-1.html(板块1,页码1) - 帖子页URL:
/thread-12345-1-1.html(帖子ID12345,页码1) - 下一页链接:
<a href="/forum-1-2.html" class="nxt">下一页</a> - 内容区域:
<div class="threadlist">...</div> - 分页控件:
<div class="pagenav">...</div>
编写列表页规则
"示例论坛 - 列表页": {
"host": "forum.example.com",
"url": "/^\\/forum-\\d+-\\d+\\.html/",
"pager": {
"nextL": "a.nxt",
"pageE": ".threadlist",
"replaceE": ".pagenav"
}
}
编写帖子页规则
"示例论坛 - 帖子内": {
"host": "forum.example.com",
"url": "/^\\/thread-\\d+-\\d+-\\d+\\.html/",
"thread": true,
"pager": {
"nextL": "js; let href = fun.getCSS('a.nxt').href; return href.replace(/-\\d+-\\d+\\.html$/, '-' + (parseInt(RegExp.$1)+1) + '-1.html')",
"pageE": "#postlist",
"replaceE": ".pagenav"
}
}
规则贡献与分享
如果你编写了新的规则并希望分享给其他用户,可以通过以下方式贡献:
- Fork XIU2/UserScript项目
- 修改
other/Autopage/rules.json添加你的规则 - 提交Pull Request
总结与展望
通过本文的介绍,你应该已经掌握了Autopage规则的基本结构和编写方法。Autopage脚本为我们提供了一个强大的工具,让网页浏览体验更加流畅高效。随着你编写的规则越来越多,几乎所有你常用的网站都能实现自动翻页功能。
未来,Autopage可能会加入更多智能识别功能,进一步降低规则编写的门槛。但在此之前,手动编写自定义规则仍然是最灵活和强大的方式。
现在,是时候动手为你常用的网站编写Autopage规则了。祝你编写愉快,浏览顺畅!
如果你有任何问题或建议,欢迎在项目的Issues区提出,或参与社区讨论。
提示:Autopage规则会定期自动更新,你也可以通过脚本菜单手动更新。规则文件的最后更新时间记录在other/Autopage/ruleUpdateTime.json中。
【免费下载链接】UserScript 🐵 自用的一些乱七八糟 油猴脚本~ 项目地址: https://gitcode.com/gh_mirrors/us/UserScript
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



