<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                下面代碼區文本復制到空白文檔,起名為sited_test_manual.js。 ```javascript /* * Author:wistn * since:2019-04-12 * LastEditors:Do not edit * LastEditTime:2019-10-25 * Description: Inspired by MrChen(magicdmer),SiteD Engine/APP is Created by noear. * v2.5.2。本腳本方便多多貓SiteD插件者用電腦測試插件,目前支持schema=1/0多層節點的【手動流程化測試】。 * 1.需要環境:nodejs環境運行本js文件(先在下文配置好)。我是vscode打開本腳本后直接運行測試(需要vscode安裝Code Runner擴展) * 2.手動范圍有: 2.1 節點名要手動填寫,特別是 <tags> <item xxx/>或下一條的 <tags xxx/>或上一條的 </tags>兩層多節點 和只有一層的<tags xxx/> 2.2 parse、buildUrl/parseUrl都要手動填寫函數名 2.3 沒自動加載插件的header/ua/referer/cookie配置; 2.4 沒自動加載插件者自定義的require庫 * 3.更新日志 v2.5.2require多多貓版cheerio庫 v2.5同步請求庫sync-request訪問網頁(可能會比異步請求庫慢很多,以后再恢復增加異步版,也可能只是我網絡問題) v2.4原生cheerio解析sited插件 v2.3采用es6箭頭函數 */ console.log(new Date().toLocaleTimeString()); //打印本地時間 var fs = require('fs'); var path = require('path'); // var http = require('http'); // var https = require('https'); var querystring = require('querystring'); function print(string) { console.log(string); } //定義插件里print命令 var cheerio = require('./lib/main_res_raw_cheerio.js'); //因為多多貓版cheerio庫對于原生cheerio庫有缺失,不能影響原插件運行find()效果所以保留多多貓版,并且使用cheerio名稱因為插件里也是cheerio。在http://sited.noear.org/addin/js/cheerio.js 下載到本地,然后尾行加上exports = module.exports = cheerio; 才能require()。 var native_cheerio = require('cheerio'); //引入原生cheerio庫,詳見后面 var urlencode = require('urlencode'); //可實現GBK編碼的urlencode var request = require('sync-request'); //引入同步請求庫sync-request訪問網頁,同步版慢還是被網站拒絕? var iconv = require('iconv-lite'); //處理gbk等編碼,UTF-8時默認去BOM頭 //沒sync-request等模塊的話就命令行里面進入本文件所在目錄本地安裝npm install -save cheerio urlencode sync-request iconv-lite 等等 var sited_file = fs.readFileSync(path.join(__filename, '../../../../../apachedocument/3.sited.xml'), 'utf-8'); //讀取sited或sited.xml插件文本。如果不懂fs模塊相對路徑的坑也不知道path.join的建議替換為readFileSync('文件絕對路徑')。 var $_ = native_cheerio.load(sited_file, { normalizeWhitespace: false, recognizeSelfClosing: true, xmlMode: true, recognizeCDATA: true, decodeEntities: false }) //定義$_通過原生cheerio庫讀取sited插件,以區別多多貓版cheerio庫解析html的$。因為多多貓版cheerio庫xml模式recognizeCDATA失敗(會把code節點里面有連起來的<和其他字符當作開標簽) eval($_('code').text()); //運行插件script/code(兼容舊格式jscript/code)節點即js代碼部分 /*以上是腳本前期準備,以下是執行部分(手動填寫節點函數名測試流程)*/ var method = 'GET'; //或者 // var method = 'POST';根據原插件實際情況通過注釋來配置 var encoding = 'GB18030'; //或者'GBK' // var encoding = 'utf8'; var postbody = querystring.stringify({ // keyword: '需要post時,關鍵詞填入這里再注釋掉' }); var headers = { //'Accept':'*/*', //'accept-encoding':'gzip, deflate, br',//gzip是接收網頁壓縮的請求頭參數,我們插件者要注釋掉 //'Accept-Language':'zh-CN,zh;q=0.8', //"content-type":"application/x-www-form-urlencoded", // 'Connection': 'keep-alive', //'Cookie':'xx', // 'Host': url.match(/\/\/([^\/]+)/i)[1], // 'Referer': url.match(/.+?\/\/[^\/]+/i)[0] + '/', // 'User-Agent': 'iPhone', }; //源網站、原插件需要特殊headers才配置這里。瀏覽器控制臺headers粘貼過來([^:\s]+):\s*(.+)$正則表達式替換為'$1':'$2', var ddlog //把ddlog定義為某節點parse return出來的字符串,即多多貓調試模式log日志內容。 var u1 = $_('tags').children().eq(0).attr('url').replace(/amp;/ig, ''); //自己選擇從hots/updates/tags哪個節點url屬性開始測試。 var u2 = 'https://wap.fushutuan.net/'; //或者手動填寫url var url = u1; ddlog = tags_parse(url, iconv.decode(request(method, url, { headers: headers, body: postbody, }).getBody(), encoding)); print('tags::' + JSON.stringify(JSON.parse(ddlog).slice(0, 3)) + '……\r\n'); //把上一條命令的log日志轉換為js數組后slice提取前3個條目再轉換為JSON字符串打印省空間。接下來根據第一個條目url進入下一層節點parse解析。 url = JSON.parse(ddlog)[0].url.replace(/@page/i, "1"); ddlog = tag_parse(url, iconv.decode(request(method, url, { headers: headers, body: postbody, }).getBody(), encoding)); print('tag[1]::' + JSON.stringify(JSON.parse(ddlog).slice(0, 3)) + '……\r\n'); url = book_buildUrl(JSON.parse(ddlog)[0].url); //xx_buildUrl是原插件里面book節點函數,自己插件沒有的就直接寫等于JSON.parse(ddlog)[0].url ddlog = book_parse(url, iconv.decode(request(method, url, { headers: headers, body: postbody, }).getBody(), encoding)); print('book[1]::' + ddlog.slice(0, 500) + '……\r\n'); var search_url = $_('search').attr('url').replace(/amp;/ig, '').replace('@key', '') + urlencode('我的', encoding); //測試搜索節點時搜索詞語替換urlencode里面字符串 var searchlog = search_parse(search_url, iconv.decode(request(method, search_url, { headers: headers, body: postbody, }).getBody(), encoding)); print('search::' + JSON.stringify(JSON.parse(searchlog).slice(0, 3)) + '……\r\n'); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看