Pixiv 首页
https://www.pixiv.net/,{"js":"java.longToast('请使用右上角菜单中的【登录】进行登录/退出账号')"}
分享者: DowneyRem (9968)发布时间: 07/04 20:48
Pixiv 订阅源(更新📆:2025-07-02)
可用功能:✅添加小说至书架(配合 Pixiv 书源)✅更新书源
使用方法:打开小说,【刷新】,点击【加入书架】按钮,添加小说到书架
书源发布:兽人阅读频道 https://t.me/FurryReading
项目地址:https://github.com/windyhusky/PixivSource
规则订阅:Import 订阅源
https://cdn.jsdelivr.net/gh/windyhusky/PixivSource@main/import.json
https://raw.githubusercontent.com/windyhusky/PixivSource/main/import.json
❤️ 查看他人收藏:
1️⃣订阅 - 长按订阅源 - 编辑 - 菜单 - 设置源变量
2️⃣源变量:输入作者ID,一行一个,保存
3️⃣导入:打开订阅源 - 菜单 - 登录 - 点击 ❤️ 他人收藏
4️⃣更新:发现 - 长按"Pixiv" - 刷新 - 查看他人收藏
{ "articleStyle": 0, "customOrder": 2, "enableJs": true, "enabled": true, "enabledCookieJar": true, "header": "{\"User-Agent\"=\"Mozilla\/5.0 (Linux; Android 10; K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/119.0.0.0 Mobile Safari\/537.36\"}", "injectJs": "if (!\/^https:\\\/\\\/(so\\.toutiao\\.com\\\/search\\\/?|quark\\.sm\\.cn\\\/s|wap\\.sogou\\.com\\\/web\\\/searchList\\.jsp|m\\.so\\.com\\\/s|cn\\.bing\\.com\\\/search|www\\.baidu\\.com\\\/s)\\?\/.test(window.location.href) && !document.getElementById('open-yuedu-bookshelf')) {\n const btn = document.createElement('div');\n btn.innerHTML = `<button type=\"button\" id='open-yuedu-bookshelf' style=\"z-index: 9999999999;\n position: fixed;bottom: 13%;right: 10%;background-color: rgb(255, 153, 0);border-radius: 2px;border: 1px solid rgb(255, 153, 0);color: #fff;\n font-size:${window.innerWidth\/80}vw;font-weight: 400;padding: ${window.innerWidth\/400}vw ${window.innerWidth\/150}vw;\n \"onclick=\"window.open('legado:\/\/import\/addToBookshelf?src=${encodeURIComponent(window.location.href)}','_blank');location.reload();\">加入书架<\/button>`;\n document.body.appendChild(btn);\n\n const btn2 = document.createElement('div');\n btn2.innerHTML = `<button type=\"button\" id='impotr-booksource' style=\"z-index: 9999999999;\n position: fixed;bottom: 13%;left: 10%;background-color: rgb(255, 153, 0);border-radius: 2px;border: 1px solid rgb(255, 153, 0);color: #fff;\n font-size:${window.innerWidth\/80}vw;font-weight: 400;padding: ${window.innerWidth\/400}vw ${window.innerWidth\/150}vw;\n \"onclick=\"window.open('legado:\/\/import\/bookSource?src=https:\/\/cdn.jsdelivr.net\/gh\/windyhusky\/PixivSource@main\/pixiv.json','_blank');\">导入书源<\/button>`;\n document.body.appendChild(btn2);\n\n}\n\nlet time,num=0;\nconst herfs = new Map();\nfunction onTouchStart(evt) {\n for (const el of evt.path) {\n if (el.tagName === \"A\") {\n if (el.href !== 'javascript:void(0)') {\n const inner = el.href;\n herfs.set(el, inner);\n el.setAttribute('href', 'javascript:void(0)');\n time = setTimeout(() => {\twindow.open(`legado:\/\/import\/addToBookshelf?src=${encodeURIComponent(inner)}`, '_blank')\n }, 600);\n }\n break;\n }\n }\n}\nfunction onTouchEnd(evt) {\n if (time) {\n clearTimeout(time);\n time = undefined;\n }\n for (const el of evt.path) {\n if (el.tagName === \"A\") {\n if (el.href === 'javascript:void(0)') {\n const herf = herfs.get(el);\n if (herf) {\n el.setAttribute('href', herf)\n }\n }\n break;\n }\n }\n}\n\nfunction addListener(els){\n Array.from(els, (item) => {\n if (item.getAttribute('add-yuedu-bookshelf') !== 'add-yuedu-bookshelf' && item.innerText && item.href && !\/^#|^javascript:\/.test(item.href)) {\n item.setAttribute('add-yuedu-bookshelf', 'add-yuedu-bookshelf');\n item.addEventListener('touchstart', onTouchStart);\n item.addEventListener('touchend', onTouchEnd);\n item.addEventListener('touchcancel', onTouchEnd);\n item.addEventListener('mousedown', onTouchStart);\n item.addEventListener('mouseup', onTouchEnd);\n }\n });\n num= els.length;\n}\n\nfunction reAdd(){\n const els = document.getElementsByTagName('a');\n if(els.length>num)addListener(els);\n}\n\nreAdd();\n\nconst observer = new ResizeObserver(reAdd);\nobserver.observe(document.body);", "jsLib": "function putInCache(objectName, object, saveSeconds) {\n const {java, cache} = this\n if (object === undefined) object = null\n if (saveSeconds === undefined) saveSeconds = 0\n cache.put(objectName, JSON.stringify(object), saveSeconds)\n}\nfunction getFromCache(objectName) {\n const {java, cache} = this\n let object = cache.get(objectName)\n if (object === undefined) return null \/\/ 兼容源阅\n return JSON.parse(object)\n}\n\nfunction getWebviewJson(url, parseFunc) {\n const {java, cache} = this\n return cacheGetAndSet(cache, url, () => {\n let html = java.webView(null, url, null)\n return JSON.parse(parseFunc(html))\n })\n}\n\nfunction sleep(time) {\n let endTime = new Date().getTime() + time\n while(true){\n if (new Date().getTime() > endTime){\n return;\n }\n }\n}\n\nfunction sleepToast(text, second) {\n let {java} = this\n java.log(text)\n java.longToast(text)\n if (second === undefined) {second = 0.01}\n sleep(1000*second)\n}\n\nlet bookSourceCommentText = `Pixiv 小说\n\n书源版本:无法获取\n使用说明:📌阅读版本 3.25.0527 及之后版本可用\n可用功能:✅搜索✅发现✅添加网址✅订阅源\n搜索小说:✅单篇✅系列✅标签✅作者\n发现小说:✅关注✅追更✅推荐✅发现\n发现小说:✅收藏✅书签✅首页✅排行\n添加网址:✅Pixiv小说链接✅Pixiv系列链接\n订阅用法:点击订阅源打开小说\/系列小说,【刷新】,点击【加入书架】按钮,添加到书架\n\n书源发布:兽人阅读频道 https:\/\/t.me\/FurryReading\n项目地址:https:\/\/github.com\/windyhusky\/PixivSource\n使用教程:https:\/\/github.com\/windyhusky\/PixivSource\/blob\/main\/doc\/Pixiv.md\n\n规则订阅:import 订阅源\nhttps:\/\/cdn.jsdelivr.net\/gh\/windyhusky\/PixivSource@main\/import.json\nhttps:\/\/raw.githubusercontent.com\/windyhusky\/PixivSource\/main\/import.json\n\n⚙️ 书源设置:\n设置1️⃣:打开小说 - 菜单 - 登录 - 点击下方按钮\n设置2️⃣:编辑书源 - 基本 - 变量说明 - 修改并保存\n\n🚫 屏蔽作者(本地):\n设置方法1️⃣:打开小说 - 菜单 - 登录 - 🚫 屏蔽作者\n设置方法2️⃣:编辑书源 - 菜单 - 设置源变量 - 修改并保存\n设置源变量:输入作者ID,【英文逗号】间隔\n▶️ 搜索任意小说,同步屏蔽作者数据\n\n❤️ 查看他人收藏:\n1️⃣订阅 - 长按订阅源\" - 编辑 - 菜单 - 设置源变量\n2️⃣源变量:输入作者ID,一行一个,保存\n3️⃣导入:打开订阅源 - 菜单 - 登录 - ❤️ 他人收藏\n4️⃣更新:发现 - 长按\"Pixiv\" - 刷新 - 查看他人收藏`\n\nfunction updateSource() {\n const {java, source} = this\n let onlineSource, comment\n java.longToast(\"🆙 更新书源\\n\\nJsdelivr CDN 更新有延迟\\nGithub 更新需代理\")\n try {\n let updateUrl = \"https:\/\/cdn.jsdelivr.net\/gh\/windyhusky\/PixivSource@main\/pixiv.json\"\n onlineSource = JSON.parse(java.get(updateUrl,{'User-Agent': 'Mozilla\/5.0 (Linux; Android 14)','X-Requested-With': 'XMLHttpRequest'}).body())[0] \/\/ 第1个书源\n comment = onlineSource.bookSourceComment.split(\"\\n\")\n } catch (e) {\n try {\n let updateUrl = \"https:\/\/raw.githubusercontent.com\/windyhusky\/PixivSource\/main\/pixiv.json\"\n onlineSource = JSON.parse(java.get(updateUrl,{'User-Agent': 'Mozilla\/5.0 (Linux; Android 14)','X-Requested-With': 'XMLHttpRequest'}).body())[0] \/\/ 第1个书源\n comment = onlineSource.bookSourceComment.split(\"\\n\")\n } catch (e) {\n onlineSource = {lastUpdateTime: new Date().getTime(), bookSourceComment: bookSourceCommentText}\n comment = onlineSource.bookSourceComment.split(\"\\n\")\n }\n }\n\n let htm = `data:text\/html; charset=utf-8,\n<html>\n<head>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>更新 Pixiv 书源<\/title>\n <style> \n table { text-align: center; margin: 0 auto; } .ann { display: flex; justify-content: center; align-items: center; height: 5vh; } \n button { background-color: rgb(76, 175, 80); color: white; border: none; border-radius: 4px; height: 6vh; width: 30vw; overflow: hidden; } \n button span { cursor: pointer; display: inline-block; position: relative; transition: 0.4s; } \n button span:after { content: '>'; position: absolute; opacity: 0; top: 0; right: 30px; transition: 0.2s; } \n button:active span { padding-right: 20px; } \n button:active span:after { opacity: 1; right: -40px; }\n <\/style>\n<\/head>\n\n<body>\n <table border=\"1\" cellspacing=\"0\">\n <th colspan=\"2\"> Pixiv 书源 <a href=\"https:\/\/github.com\/windyhusky\/PixivSource\/blob\/main\/doc\/Pixiv.md\">🔰 使用指南<\/a><\/th>\n <tr>\n <td>☁️ 远程版本:${onlineSource.bookSourceComment.split(\"\\n\")[2].replace(\"书源版本:\", \"\")}<\/td>\n <td>📆 更新:${java.timeFormat(onlineSource.lastUpdateTime)}<\/td>\n <\/tr>\n <tr><td colspan=\"2\" style=\"text-align: left;\">${comment.slice(3, 10).join(\"<br>\")}<\/td><\/tr>\n <tr><td colspan=\"2\" style=\"text-align: left;\">${comment.slice(comment.length-15, comment.length).join(\"<br>\")}<\/td><\/tr>\n <\/table>\n \n <table border=\"0\" cellspacing=\"20\">\n <th colspan=\"2\"> 更新 Pixiv 书源 <\/th>\n <tr><td><div class=\"ann\">\n <a href=\"legado:\/\/import\/importonline?src=https:\/\/cdn.jsdelivr.net\/gh\/windyhusky\/PixivSource@main\/pixiv.json\">\n <button><span>更新书源<br>(Jsdelivr CDN)<\/span><\/button>\n <\/a><\/div><\/td>\n \n <td><div class=\"ann\">\n <a href=\"legado:\/\/import\/importonline?src=https:\/\/cdn.jsdelivr.net\/gh\/windyhusky\/PixivSource@main\/btsrk.json\">\n <button><span>更新订阅<br>(Jsdelivr CDN)<\/span><\/button>\n <\/a><\/div><\/td>\n <\/tr>\n \n <tr><td><div class=\"ann\">\n <a href=\"legado:\/\/import\/importonline?src=https:\/\/raw.githubusercontent.com\/windyhusky\/PixivSource\/main\/pixiv.json\">\n <button><span>书源链接<br>(GitHub)<\/span><\/button>\n <\/a><\/div><\/td>\n \n <td><div class=\"ann\">\n <a href=\"legado:\/\/import\/importonline?src=https:\/\/raw.githubusercontent.com\/windyhusky\/PixivSource\/main\/btsrk.json\">\n <button><span>订阅链接<br>(GitHub)<\/span><\/button>\n <\/a><\/div><\/td>\n <\/tr>\n \n <tr><td><div class=\"ann\">\n <a href=\"legado:\/\/import\/importonline?src=https:\/\/codeberg.org\/DowneyRem\/PixivSource\/raw\/branch\/main\/pixiv.json\">\n <button><span>备用书源链接<br>(Codeberg)<\/span><\/button>\n <\/a><\/div><\/td>\n \n <td><div class=\"ann\">\n <a href=\"legado:\/\/import\/importonline?src=https:\/\/codeberg.org\/DowneyRem\/PixivSource\/raw\/branch\/main\/btsrk.json\">\n <button><span>备用订阅链接<br>(Codeberg)<\/span><\/button>\n <\/a><\/div><\/td>\n <\/tr>\n <\/table>\n<\/body>\n<\/html>`;\n java.startBrowser(htm,'更新书源');\n return []\n}", "lastUpdateTime": 1751428800251, "loadWithBaseUrl": true, "loginUi": "[\n {\n \"name\": \"\\uD83C\\uDD7F️ 登录账号\",\n \"type\": \"button\",\n \"action\": \"login()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"⚙️ 账号设置\",\n \"type\": \"button\",\n \"action\": \"startPixivSettings()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDD19 退出账号\",\n \"type\": \"button\",\n \"action\": \"logout()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"🆙 更新书源\",\n \"type\": \"button\",\n \"action\": \"updateSource()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDCCC 简要教程\",\n \"type\": \"button\",\n \"action\": \"readMe()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"❤️ 他人收藏\",\n \"type\": \"button\",\n \"action\": \"getLikeAuthors()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"⭐️ 收藏项目\",\n \"type\": \"button\",\n \"action\": \"startGithub()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDD30 使用指南\",\n \"type\": \"button\",\n \"action\": \"startGithubReadme()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n },\n {\n \"name\": \"\\uD83D\\uDC1E 反馈问题\",\n \"type\": \"button\",\n \"action\": \"startGithubIssue()\",\n \"style\": {\n \"layout_flexGrow\": 1,\n \"layout_flexBasisPercent\": -1\n }\n }\n]", "loginUrl": "function getWebViewUA() {\n let userAgent = String(java.getWebViewUA())\n if (userAgent.includes(\"Windows NT 10.0; Win64; x64\")) {\n userAgent = \"Mozilla\/5.0 (Linux; Android 10; K) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/119.0.0.0 Mobile Safari\/537.36\"\n }\n return String(userAgent)\n}\n\nfunction login() {\n let resp = java.startBrowserAwait(`https:\/\/accounts.pixiv.net\/login,\n {\"headers\": {\"User-Agent\": ${getWebViewUA()}}}`, '登录账号', false)\n if (resp.code() === 200) {\n getCookie(); getCsrfToken()\n return true\n } else {\n java.log(resp.code()); sleepToast(\"🅿️ 登录账号\\n\\n⚠️ 登录失败\")\n return false\n }\n}\n\nfunction logout() {\n removeCookie()\n java.startBrowser(\"https:\/\/www.pixiv.net\/logout.php\", \"退出账号\")\n removeCookie()\n sleepToast(`✅ 已退出当前账号\\n\\n退出后请点击右上角的 ✔️ 退出\\n\\n登录请点击【登录账号】进行登录`)\n}\n\nfunction removeCookie() {\n cookie.removeCookie('https:\/\/www.pixiv.net')\n cookie.removeCookie('https:\/\/accounts.pixiv.net')\n cookie.removeCookie('https:\/\/accounts.google.com')\n cookie.removeCookie('https:\/\/api.weibo.com')\n cache.delete(\"pixivCookie\")\n cache.delete(\"csfrToken\") \/\/ 与登录设备有关\n cache.delete(\"headers\")\n}\n\n\/\/ 获取 Csrf Token,以便进行收藏等请求\n\/\/ 获取方法来自脚本 Pixiv Previewer\n\/\/ https:\/\/github.com\/Ocrosoft\/PixivPreviewer\n\/\/ https:\/\/greasyfork.org\/zh-CN\/scripts\/30766-pixiv-previewer\/code\nfunction getCsrfToken() {\n let csfrToken\n let html = java.webView(null, \"https:\/\/www.pixiv.net\/\", null)\n try {\n csfrToken = html.match(\/token\\\\\":\\\\\"([a-z0-9]{32})\/)[1]\n } catch (e) {\n csfrToken = null\n }\n \/\/ java.log(csfrToken)\n cache.put(\"csfrToken\", csfrToken) \/\/ 与登录设备有关\n return csfrToken\n}\n\nfunction getCookie() {\n let pixivCookie = String(java.getCookie(\"https:\/\/www.pixiv.net\/\", null))\n if (pixivCookie.includes(\"first_visit_datetime\")) {\n \/\/ java.log(pixivCookie)\n cache.put(\"pixivCookie\", pixivCookie, 60*60)\n return pixivCookie\n } else {\n cache.delete(\"pixivCookie\")\n \/\/ sleepToast(\"未登录账号( pixivCookie)\")\n return null\n }\n}\n\nfunction getLikeAuthors() {\n let authorIds = []\n try {\n let authors = String(source.getVariable()).split(\"\\n\")\n if (authors[0].trim() !== \"\" && authors.length >= 1) {\n for (let i in authors) {\n if (authors[i] !== \"\") {\n let authorId = authors[i].match(RegExp(\/\\d+\/))[0]\n authorIds.push(authorId)\n }\n }\n sleepToast(`❤️ 他人收藏\\n✅ 已导入作者数据\\n\\n${JSON.stringify(authorIds)}\\n\\n更新发现:发现 - 长按\\\"Pixiv\\\" - 刷新 - 查看收藏`, 2)\n } else {\n sleepToast(\"❤️ 他人收藏\\n\\n❎ 已经清空作者数据\")\n }\n putInCache(\"pixivLikeAuthors\", authorIds)\n } catch (e) {\n sleepToast(\"❤️ 他人收藏\\n⚠️ 【订阅源】源变量设置有误\\n输入作者ID,一行一个,可添加作者名,保存\")\n }\n}\n\nfunction readMe() {\n sleepToast(`📌 简要教程\\n\n1️⃣ 导入书源:点击按钮,导入书源\n导入书源后,需要【在书源内登录账号】\n登录后,可在阅读内部搜索小说\n搜索时,需要开启代理\/梯子等\\n\n2️⃣ 加入书架:系列目录\/小说正文页面\n点击按钮,刷新页面后后可添加至书架\n需要【导入书源】并【在书源内登录账号】\\n\n3️⃣ 详细教程:见 🔰 使用指南`)\n}\n\nfunction startBrowser(url, title) {\n let msg = \"\", headers = `{\"headers\": {\"User-Agent\":\"${getWebViewUA()}\"}}`\n if (url.includes(\"https:\/\/www.pixiv.net\")) {\n if (url.includes(\"settings\")) msg += \"⚙️ 账号设置\"\n else msg += \"⤴️ 分享小说\"\n msg += \"\\n\\n即将打开 Pixiv\\n请确认已开启代理\/梯子\/VPN等\"\n } else if (url.includes(\"https:\/\/github.com\")) {\n if (url.includes(\"issues\")) msg += \"🐞 反馈问题\"\n else if (url.includes(\"doc\")) msg += \"🔰 使用指南\"\n else msg += \"⭐️ 收藏项目\"\n msg += \"\\n\\n即将打开 Github\\n请确认已开启代理\/梯子\/VPN等\"\n }\n sleepToast(msg)\n java.startBrowser(`${url}, ${headers}`, title)\n}\nfunction startPixivSettings() {\n startBrowser(\"https:\/\/www.pixiv.net\/settings\/viewing\", \"账号设置\")\n}\nfunction startGithub() {\n startBrowser(\"https:\/\/github.com\/windyhusky\/PixivSource\", \"书源介绍\")\n}\nfunction startGithubIssue() {\n startBrowser(\"https:\/\/github.com\/windyhusky\/PixivSource\/issues\", \"反馈问题\")\n}\nfunction startGithubReadme() {\n startBrowser(\"https:\/\/github.com\/windyhusky\/PixivSource\/blob\/main\/doc\/Pixiv.md\", \"使用指南\")\n}", "singleUrl": true, "sourceComment": "Pixiv 订阅源(更新📆:2025-07-02)\n\n可用功能:✅添加小说至书架(配合 Pixiv 书源)✅更新书源\n使用方法:打开小说,【刷新】,点击【加入书架】按钮,添加小说到书架\n\n书源发布:兽人阅读频道 https:\/\/t.me\/FurryReading\n项目地址:https:\/\/github.com\/windyhusky\/PixivSource\n\n规则订阅:Import 订阅源\nhttps:\/\/cdn.jsdelivr.net\/gh\/windyhusky\/PixivSource@main\/import.json\nhttps:\/\/raw.githubusercontent.com\/windyhusky\/PixivSource\/main\/import.json\n\n❤️ 查看他人收藏:\n1️⃣订阅 - 长按订阅源 - 编辑 - 菜单 - 设置源变量\n2️⃣源变量:输入作者ID,一行一个,保存\n3️⃣导入:打开订阅源 - 菜单 - 登录 - 点击 ❤️ 他人收藏\n4️⃣更新:发现 - 长按\"Pixiv\" - 刷新 - 查看他人收藏", "sourceGroup": "Pixiv,Furry", "sourceIcon": "https:\/\/asset.brandfetch.io\/idIlKj_n7C\/idSsbP7h1m.png", "sourceName": "Pixiv 首页", "sourceUrl": "https:\/\/www.pixiv.net\/,{\"js\":\"java.longToast('请使用右上角菜单中的【登录】进行登录\/退出账号')\"}", "variableComment": "❤️ 查看他人收藏:\n1️⃣订阅 - 长按订阅源 - 编辑 - 菜单 - 设置源变量\n2️⃣源变量:输入作者ID,一行一个,保存\n3️⃣导入:打开订阅源 - 菜单 - 登录 - 点击 ❤️ 他人收藏\n4️⃣更新:发现 - 长按\"Pixiv\" - 刷新 - 查看他人收藏\n\n以下内容为源变量模板:\n12345 #作者名\n67890 \/\/作者名\n\n" }