UNPKG

youzanyun-devtool-worker

Version:

- web - ws - proxy

61 lines (60 loc) 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const axios_1 = tslib_1.__importDefault(require("axios")); const https_1 = tslib_1.__importDefault(require("https")); let dpDeveloperDecorate; class DpDeveloperDecorate { static getInstance() { if (!dpDeveloperDecorate) { dpDeveloperDecorate = new DpDeveloperDecorate(); } return dpDeveloperDecorate; } async run(ctx) { let requestHeader = JSON.parse(JSON.stringify(ctx.headers)); requestHeader['accept-encoding'] = 'gzip, deflate'; let axiosRes = await axios_1.default({ method: ctx.method, url: ctx.href, headers: requestHeader, data: ctx.isJsonHeader ? ctx.request.body : ctx.req, responseType: "text", validateStatus: function (status) { return true; }, maxRedirects: 0, httpsAgent: new https_1.default.Agent({ rejectUnauthorized: false }), }); if (axiosRes.status < 200 || axiosRes.status >= 300) { ctx.status = axiosRes.status; let header = JSON.parse(JSON.stringify(axiosRes.headers)); delete header["content-length"]; ctx.set(header); ctx.body = axiosRes.data; } const interceptA = ` <script src="https://b.yzcdn.cn/yzy/zepto.min.js"></script> <script> window.onload = function() { Zepto(function($) { $('body').on('click', 'a', e => { e.preventDefault() }); }) } </script> `; const content = axiosRes.data; const jsReg = /<\/body>/g; let index = -1; let matches; while ((matches = jsReg.exec(content)) !== null) { index = matches.index; } const finalContent = content.substring(0, index) + interceptA + content.substring(index); let header = JSON.parse(JSON.stringify(axiosRes.headers)); delete header["content-length"]; ctx.set(header); ctx.body = finalContent; } } exports.default = DpDeveloperDecorate;