篱笆好文学

https://www.libahao.com/

chuxs (8615)17小时前

25.05.02用电脑ua解决百度搜索下一页问题,验证成功跳转后重新搜索一次,js处理包含的其他搜索关键字。

频繁访问(书籍网站)可能被限制一段时间不能访问。

二维码导入
{
    "bookSourceComment": "\/\/无名25.05.01修\n\/\/25.05.02用电脑ua解决搜索下一页,验证成功跳转后请重新搜索",
    "bookSourceGroup": "源社区",
    "bookSourceName": "篱笆好文学",
    "bookSourceType": 0,
    "bookSourceUrl": "https:\/\/www.libahao.com\/",
    "bookUrlPattern": "",
    "concurrentRate": "",
    "coverDecodeJs": "",
    "customOrder": 3,
    "enabled": true,
    "enabledCookieJar": true,
    "enabledExplore": true,
    "exploreUrl": "",
    "header": "{\"User-Agent\": \"Mozilla\/5.0 (Linux; Android 14; 2312DRAADC) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/132.0.0.0 Mobile Safari\/537.36\"}",
    "lastUpdateTime": "1746180515869",
    "loginCheckJs": "",
    "respondTime": 180000,
    "ruleBookInfo": {
        "author": "[property=\"og:novel:author\"]@content",
        "coverUrl": "img@src",
        "intro": "[property=\"og:description\"]@content",
        "kind": "[property~=category|status|update_time]@content",
        "lastChapter": "[property~=las?test_chapter_name]@content",
        "name": "[property=\"og:novel:book_name\"]@content",
        "tocUrl": ""
    },
    "ruleContent": {
        "content": ".chapter-content@html",
        "nextContentUrl": "text.下一页@href"
    },
    "ruleExplore": {
        "author": "",
        "bookList": "",
        "bookUrl": "",
        "coverUrl": "",
        "intro": "",
        "name": ""
    },
    "ruleSearch": {
        "author": "$.author",
        "bookList": "<js>\nif(result.match(\/百度安全验证\/)){\n\txb=(baseUrl)+\",\"+JSON.stringify({\n\t\t\"headers\":{\n\t\t\t\"User-Agent\": \"Mozilla\/5.0 (X11; Linux x86 64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/127.0.0.0 Safari\/537.36\"\n}})\njava.startBrowserAwait(xb,\"验证\")\nresult=java.ajax(xb)\n\t}\n\nvar bookList = [];\nvar finalJsonOutput = null;\ntry {\n    var doc = result;\n    if (!doc) {\n        throw new Error(\"无法解析 HTML\");\n    }\n    var containers = org.jsoup.Jsoup.parse(doc).select(\"div.c-container.result-op, div.c-container.result\");\n    java.log(\"找到 \" + containers.size() + \" 个\");\n    for (var i = 0; i < containers.size(); i++) {\n        var container = containers.get(i);\n        var book = {};\n        if (container.hasClass(\"result-op\")) {            \n            java.log(\"处理第 \" + (i + 1) + \" 个 (result-op)\");            \n            book.bookUrl = container.attr(\"mu\") || null;             \n            var nameElement = container.selectFirst(\"a\");\n            if (nameElement) {\n                var nameText = nameElement.text().trim();\n                book.name = (nameText) ? nameText : \"未找到\";\n                if (!nameText) {\n                    \/\/java.log(\"未找到书名,a 标签内容: \" + nameElement.outerHtml());\n                }\n            } else {\n                book.name = \"未找到\";\n                \/\/java.log(\"未找到书名对应的 a 标签\");\n            }            \n            var authorElement = container.selectFirst(\"span\");\n            if (authorElement) {\n                var authorText = authorElement.text().trim();\n                var prefix = \"作者: \"; \n                if (authorText.includes(prefix)) {\n                    book.author = authorText.substring(prefix.length).trim();\n                } else {\n                    book.author = \"未找到\";\n                    \/\/java.log(\"作者信息未找到或格式不符: \" + authorElement.outerHtml());\n                }\n            } else {\n                book.author = \"未找到\";\n                \/\/java.log(\"未找到作者对应的 span 标签\");\n            }            \n            var introElement = container.selectFirst(\"div.text_2NOr6\");\n            var introText = null;\n            if (introElement) {\n                introText = introElement.text().trim();\n                book.intro = introText;                 \n                book.kind = null; \n                if (!introText.startsWith(\"简介:\")) {\n                    var kindPrefix = \"类别:\";\n                    var kindIndex = introText.indexOf(kindPrefix);\n                    if (kindIndex !== -1) {\n                        var kindTemp = introText.substring(kindIndex + kindPrefix.length).trim();\n                        var chapterPrefix = \"最新章节\"; \n                        var chapterIndex = kindTemp.indexOf(chapterPrefix);\n                        if (chapterIndex !== -1) {\n                            book.kind = kindTemp.substring(0, chapterIndex).trim(); \n                        } else {\n                            book.kind = kindTemp; \n                        }\n                    } else {\n                        \/\/java.log(\"未在 intro 文本中找到 '类别:' 用于提取 kind: \" + introText);\n                    }\n                } else {\n                    \/\/java.log(\"intro 文本以 '简介:' 开头,kind 设为 null\");\n                }\n            } else {\n                book.intro = null; \n                book.kind = null;\n                \/\/java.log(\"未找到 intro\/kind 对应的 div.text_2NOr6 标签\");\n            }            \n            var allAElements = container.select(\"a\");\n            if (allAElements.size() >= 2) {\n                book.lastChapter = allAElements.get(allAElements.size() - 2).text().trim();\n            } else {\n                book.lastChapter = null; \n                \/\/java.log(\"a 标签数量不足,无法提取倒数第二个作为 lastChapter\");\n            }\n        } else if (container.hasClass(\"result\")) {            \n            java.log(\"处理第 \" + (i + 1) + \" (result)\");            \n            book.bookUrl = container.attr(\"mu\") || null;            \n            var nameElement = container.selectFirst(\"a\");\n            if (nameElement) {\n                var nameText = nameElement.text().trim();\n                book.name = (nameText) ? nameText : \"未找到\";\n                if (!nameText) {\n                   \/\/java.log(\"未找到书名,a 标签内容: \" + nameElement.outerHtml());\n                }\n            } else {\n                book.name = \"未找到\";\n                \/\/java.log(\"未找到书名对应的 a 标签\");\n            }            \n            var contentRightElement = container.selectFirst(\".content-right_1THTn\");\n            if (contentRightElement) {\n                var fullText = contentRightElement.text().trim();\n                book.intro = fullText;                 \n                book.author = null; \n                var authorPrefix = \"作者:\"; \n                var authorIndex = fullText.indexOf(authorPrefix);\n                var kindSeparator = \"类别\"; \n                var kindIndexForAuthor = fullText.indexOf(kindSeparator);\n                if (authorIndex !== -1) { \n                    var startIndex = authorIndex + authorPrefix.length;\n                    var endIndex = (kindIndexForAuthor !== -1 && kindIndexForAuthor > authorIndex) ? kindIndexForAuthor : fullText.length;\n                    book.author = fullText.substring(startIndex, endIndex).trim();\n                } else {\n                    \/\/java.log(\"未在 .content-right_1THTn 中找到 '作者:'\");\n                }                \n                book.kind = null; \n                var kindPrefix = \"类别:\"; \n                var kindIndex = fullText.indexOf(kindPrefix);\n                var chapterSeparator = \"最新章节\"; \n                var chapterIndexForKind = fullText.indexOf(chapterSeparator);\n                if (kindIndex !== -1) { \n                    var startIndex = kindIndex + kindPrefix.length;\n                    var endIndex = (chapterIndexForKind !== -1 && chapterIndexForKind > kindIndex) ? chapterIndexForKind : fullText.length;\n                    book.kind = fullText.substring(startIndex, endIndex).trim();\n                } else {\n                    \/\/java.log(\"未在 .content-right_1THTn 中找到 '类别:'\");\n                }                \n                book.lastChapter = null; \n                var chapterPrefix = \"最新章节:\"; \n                var chapterIndex = fullText.indexOf(chapterPrefix);\n                var updateSeparator = \"最新更新\"; \n                var updateIndex = fullText.indexOf(updateSeparator);\n\n                if (chapterIndex !== -1) { \n                    var startIndex = chapterIndex + chapterPrefix.length;\n                    var endIndex = (updateIndex !== -1 && updateIndex > chapterIndex) ? updateIndex : fullText.length;\n                    book.lastChapter = fullText.substring(startIndex, endIndex).trim();\n                } else {\n                    \/\/java.log(\"未在 .content-right_1THTn 中找到 '最新章节:'\");\n                }\n            } else {                \n                book.author = null;\n                book.kind = null;\n                book.lastChapter = null;\n                book.intro = null;\n                \/\/java.log(\"未找到 .content-right_1THTn 元素\");\n            }\n        } else {\n            \/\/java.log(\"跳过未知类型的容器: \" + container.outerHtml().substring(0, 100));\n            continue; \n        }        \n        bookList.push(book);\n    }\n    var finalResult = {\n        bookList: bookList \n    };\n    finalJsonOutput = JSON.stringify(finalResult);\n} catch (e) {\n    java.log(\"错误: \" + e);\n    finalJsonOutput = JSON.stringify({\n        bookList: []\n    }); \n}\nresult = finalJsonOutput;\n<\/js>\n$.bookList",
        "bookUrl": "$.bookUrl@js:result+',{webView:“true”}'",
        "checkKeyWord": "斗破苍穹",
        "coverUrl": "",
        "intro": "$.intro",
        "kind": "$.kind",
        "lastChapter": "$.liastChapter",
        "name": "$.name",
        "wordCount": ""
    },
    "ruleToc": {
        "chapterList": ".chapter-list.1@li",
        "chapterName": "a@text",
        "chapterUrl": "a@href@js:result = \"https:\/\/m.libahao.com\" + result"
    },
    "searchUrl": "https:\/\/www.baidu.com\/s?wd=site%3Awww.libahao.com + %20{{key}}&pn={{(page - 1) * 10}},{\n    \"headers\": {\"User-Agent\": \"Mozilla\/5.0 (X11; Linux x86 64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/127.0.0.0 Safari\/537.36\"},\n    \"webView\": true\n}",
    "variableComment": "",
    "weight": 0
}
广告