Commit 5d0a9d8f authored by wang's avatar wang

环境兼容

parent 2fab541a
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4,7 +4,7 @@ import time ...@@ -4,7 +4,7 @@ import time
import requests import requests
import json import json
import tls_client import tls_client
from bson import ObjectId
from pymongo import MongoClient from pymongo import MongoClient
...@@ -53,7 +53,10 @@ for i in range(100): ...@@ -53,7 +53,10 @@ for i in range(100):
else: else:
raise Exception("执行js失败") raise Exception("执行js失败")
r = json.loads(tmp) r = json.loads(tmp)
res = db.env_shape.update_one(
{'_id': ObjectId(selectId)},
{"$inc": {"used": 1}}
)
# r = { # r = {
# 'X-1ItxWO9i-f': 'A7AKCbCJAQAAV93ahgnafaQIeEbvT-Ss7YkuAnwrNQi_E70IpAViSqhv3hLLAXL3RNiucirJwH9eCOfvosJeCA==', # 'X-1ItxWO9i-f': 'A7AKCbCJAQAAV93ahgnafaQIeEbvT-Ss7YkuAnwrNQi_E70IpAViSqhv3hLLAXL3RNiucirJwH9eCOfvosJeCA==',
# 'X-1ItxWO9i-b': 'ewccp4', # 'X-1ItxWO9i-b': 'ewccp4',
...@@ -105,6 +108,10 @@ for i in range(100): ...@@ -105,6 +108,10 @@ for i in range(100):
# print(response.text) # print(response.text)
if response.status_code == 200: if response.status_code == 200:
res = db.env_shape.update_one(
{'_id': ObjectId(selectId)},
{"$inc": {"success": 1}}
)
# proxy = requests.post('http://ymx-lcc.unififi.com/proxy/get-proxy', json={ # proxy = requests.post('http://ymx-lcc.unififi.com/proxy/get-proxy', json={
# 'type':'headerB6' # 'type':'headerB6'
# }) # })
......
...@@ -11,8 +11,9 @@ const fss = require("fs"); ...@@ -11,8 +11,9 @@ const fss = require("fs");
var drives = fss.readFileSync('graphicsdrivers.txt').toString().split('\n') var drives = fss.readFileSync('graphicsdrivers.txt').toString().split('\n')
var ENVS = JSON.parse(fss.readFileSync('env.json').toString()) var ENVS = JSON.parse(fss.readFileSync('env.json').toString())
// dc6a639f12738c9276d68c74
let ENV = ENVS[process.argv[2] || '414c818f3d46654a0f800254'] let keys = Object.keys(ENVS);
let ENV = ENVS[process.argv[2] || keys[parseInt(Math.random() * keys.length)]]
// let ENV = ENVS[ '1'] // let ENV = ENVS[ '1']
let randomEvent = false; let randomEvent = false;
let timeout = false; let timeout = false;
...@@ -108,25 +109,25 @@ Date.prototype.toString = v_saf(function () { ...@@ -108,25 +109,25 @@ Date.prototype.toString = v_saf(function () {
} }
}, 'toString') }, 'toString')
Date.now = function now() { // Date.now = function now() {
return 1685096207545 // return 1685096207545
}; // };
Date.parse = function () { // Date.parse = function () {
return 1685096207545 // return 1685096207545
}; // };
Date.prototype.valueOf = function () { // Date.prototype.valueOf = function () {
return 1685096207545 // return 1685096207545
}; // };
Date.prototype.getTime = function () { // Date.prototype.getTime = function () {
return 1685096207545 // return 1685096207545
}; // };
Date.prototype.toString = function () { // Date.prototype.toString = function () {
return 1685096207545 // return 1685096207545
}; // };
Performance.prototype.now = function now() { // Performance.prototype.now = function now() {
return Number('1685096207545'.slice(8)) // return Number('1685096207545'.slice(8))
} // }
//
Math.random = function random() { Math.random = function random() {
return 0.08636862211354912 return 0.08636862211354912
}; };
...@@ -523,6 +524,8 @@ const dom = new JSDOM(` ...@@ -523,6 +524,8 @@ const dom = new JSDOM(`
}); });
window = dom.window; window = dom.window;
window._random = _random
window.URL.createObjectURL = function () { window.URL.createObjectURL = function () {
console.log('createObjectURL', arguments) console.log('createObjectURL', arguments)
...@@ -545,7 +548,24 @@ class TextMetrics { ...@@ -545,7 +548,24 @@ class TextMetrics {
this._context = context this._context = context
// this._TextMetrics = context.measureText(text) // this._TextMetrics = context.measureText(text)
try { try {
metrics = window.ENV.fontsres
if (metrics[this._font][this._text]) {
this._TextMetrics = metrics[this._font][this._text] this._TextMetrics = metrics[this._font][this._text]
} else {
if (metrics[this._font.replace(' serif', ' sans-serif')][this._text]) {
this._TextMetrics = metrics[this._font.replace('serif', 'sans-serif')][this._text]
}else {
this._TextMetrics = {
"width": 132.39996337890625 * _random(),
"actualboundingboxascent": -4.299999237060547* _random(),
"actualboundingboxleft": -1.600000023841858* _random(),
"actualboundingboxright": 129.59996032714844* _random(),
"fontboundingboxascent": parseInt(10* _random()),
"actualboundingboxdescent": 49.95000076293945 * _random()
}
}
}
} catch (e) { } catch (e) {
console.log('_TextMetrics', this._text, this._font) console.log('_TextMetrics', this._text, this._font)
this._TextMetrics = { this._TextMetrics = {
...@@ -561,6 +581,9 @@ class TextMetrics { ...@@ -561,6 +581,9 @@ class TextMetrics {
} else { } else {
res = parseInt(res * textRandom); res = parseInt(res * textRandom);
} }
if (this._text === '0-_{w.') {
// debugger
}
return res; return res;
} }
...@@ -644,7 +667,7 @@ class OffscreenCanvasRenderingContext2D { ...@@ -644,7 +667,7 @@ class OffscreenCanvasRenderingContext2D {
} }
measureText(text) { measureText(text) {
console.log('OffscreenCanvasRenderingContext2D.measureText', text) console.log('OffscreenCanvasRenderingContext2D.measureText1', text)
this._text = text; this._text = text;
window.fonts.push({ window.fonts.push({
font: this._font, font: this._font,
...@@ -2792,6 +2815,11 @@ Object.defineProperties(MediaQueryList.prototype, { ...@@ -2792,6 +2815,11 @@ Object.defineProperties(MediaQueryList.prototype, {
if (t === undefined) { if (t === undefined) {
t = false; t = false;
} }
if (_random() > 0.5){
t = true
}else {
t = false;
}
v_console_log(" [*] MediaQueryList -> matches[get]", this.type[0], t); v_console_log(" [*] MediaQueryList -> matches[get]", this.type[0], t);
return t; return t;
...@@ -3752,7 +3780,6 @@ con4 = function () { ...@@ -3752,7 +3780,6 @@ con4 = function () {
}; };
(function Z(k) { (function Z(k) {
var h = new Error("HALT"); var h = new Error("HALT");
var B = {}, A = {}; var B = {}, A = {};
...@@ -4700,9 +4727,9 @@ con4 = function () { ...@@ -4700,9 +4727,9 @@ con4 = function () {
var kQ = [function (kP) { var kQ = [function (kP) {
"use strict"; "use strict";
con3(kP.a[kP.a.length - 3], 'set', kP.a[kP.a.length - 2], '==>', kP.a[kP.a.length - 1]) con3(kP.a[kP.a.length - 3], 'set', kP.a[kP.a.length - 2] ,'==>', kP.a[kP.a.length - 1])
if (kP.a[kP.a.length - 2] === '4' && kP.a[kP.a.length - 1] === 28) { if (kP.a[kP.a.length - 2] === '4' && kP.a[kP.a.length - 1] === 28 ){
debugger; debugger;
} }
kP.a[kP.a.length - 3][kP.a[kP.a.length - 2]] = kP.a[kP.a.length - 1]; kP.a[kP.a.length - 3][kP.a[kP.a.length - 2]] = kP.a[kP.a.length - 1];
...@@ -6864,7 +6891,7 @@ setTimeout(() => { ...@@ -6864,7 +6891,7 @@ setTimeout(() => {
// print(JSON.stringify(window.imageDatas)) // print(JSON.stringify(window.imageDatas))
// print(JSON.stringify(medias)) // print(JSON.stringify(medias))
// print(candidateGetTimes) // print(candidateGetTimes)
// process.exit(0) process.exit(0)
}, 2000) }, 2000)
// debug = true; // debug = true;
......
...@@ -265,7 +265,7 @@ function Window(options) { ...@@ -265,7 +265,7 @@ function Window(options) {
// debugger; // debugger;
// } // }
let res = Reflect.get(target, p, receiver); let res = Reflect.get(target, p, receiver);
if (!['Object','Window' , 'debug','Math', 'Array'].includes(p)){ if (!['Object','Window' , 'debug','Math', 'Array', '_random'].includes(p)){
console.log('window get', p, typeof res) console.log('window get', p, typeof res)
} }
......
...@@ -139,7 +139,10 @@ exports.install = (globalObject, globalNames) => { ...@@ -139,7 +139,10 @@ exports.install = (globalObject, globalNames) => {
let res = utils.tryWrapperForImpl(esValue[implSymbol].canPlayType(...args)); let res = utils.tryWrapperForImpl(esValue[implSymbol].canPlayType(...args));
window.videos.push(type) window.videos.push(type)
if (window.ENV.canplay[type]){ if (window.ENV.canplay[type]){
res = videos[type] res = window.ENV.canplay[type]
if (!res){
res = 'probably'
}
} }
console.log('canPlayType', type, res) console.log('canPlayType', type, res)
......
...@@ -903,7 +903,7 @@ class DocumentImpl extends NodeImpl { ...@@ -903,7 +903,7 @@ class DocumentImpl extends NodeImpl {
return "visible"; return "visible";
} }
return "prerender"; return "visible";
} }
// https://w3c.github.io/selection-api/#extensions-to-document-interface // https://w3c.github.io/selection-api/#extensions-to-document-interface
......
...@@ -2723,7 +2723,7 @@ class CanvasRenderingContext2D { ...@@ -2723,7 +2723,7 @@ class CanvasRenderingContext2D {
res.data[3] = tdata[3] res.data[3] = tdata[3]
} else { } else {
for (let i = 0; i < res.data.length; i++) { for (let i = 0; i < res.data.length; i++) {
res.data[i] = parseInt(Math.random() * 100 + 100) res.data[i] = parseInt(window._random() * 100 + 100)
} }
} }
if (arguments[0] === 0 && arguments[1] === 0 && arguments[2] === 5) { if (arguments[0] === 0 && arguments[1] === 0 && arguments[2] === 5) {
...@@ -3879,11 +3879,11 @@ class HTMLCanvasElementImpl extends HTMLElementImpl { ...@@ -3879,11 +3879,11 @@ class HTMLCanvasElementImpl extends HTMLElementImpl {
if (canvas) { if (canvas) {
let res = canvas.toDataURL(...args); let res = canvas.toDataURL(...args);
if (this.width === 300 && this.height === 150) { if (this.width === 300 && this.height === 150) {
res = window.ENV.jpg || "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAVSklEQVR4Xu2dBbA2S3GGX1yDFk6Cu7skwYIV7m6BQIBgQRMIbsFdE9xJcPeCYMGCB0nQ4J6EkASth5qumpra3d7v/P93bn+Hd6so7v3O7G7vMzPvdPf07j2SfJiACZjAjhA40o7YaTNNwARMQBYsDwITMIGdIWDB2pmusqEmYAIWLI8BEzCBnSFgwdqZrrKhJmACuyxYx5B0Pkn/Jun77koTMIGDT6CiYB1XEmL0f5L+e6ELTizpRZIeLOl9B7+r/IQmYAJTgrVWMKB3VEm/1zD+l6RfHAak95X0IEn3a2I0d8lTSnq+pEdL+oCk/5T06xX3P7Kk35d0utb2x5I+K+n/V5zbN+HZTy3ptHu4ztElnV3SCdq5P2028P/j0du71C7Oiz75+SD48fuvNmAVfcwCMmXbhshmmzMOj9fG0ybXZMxt2m+bXD+Y/a+kn7UT6TvG/Kb3ph9ZZM8s6WjtWt+R9JXu2pvY9jvZdkqw1goGwM4i6WWN3PUlff4wUMzuj0AgZtfpxJLb/lDSIyQ9fmEQn0bSIyVdb7Dzw5L+StK7Vogeg5h731vSuYbr8Px/LenVM9dh4t9E0j0au/70t0i6saQfdD9i7+MkXbP77auS7irpVRP3oD/vJOkvJd1c0ru787CbZ/yzib9NdduJJN1N0m0bUzzZbR3Has/55xvc4FuSrirpoxucs2nTC0h6XWPw2nby1SQ9fYN7/0HjfStJ9OfU8XpJT2njj8jCxwyBXROsS0h6Zpvs/yrpZJLeLukkks4j6R/aZI3VsH9s2jyjTf6XtHCSlfOSku7SBA8h+kgyWiIUPaskrvPe5mkhKleQhKAgPGOYehxJD5V053YvbEWkOC4m6QySbtMJFh7Hk9qzIkDYdQpJD5EEhylbLyjpHyX9vaS/nfB4T97+dmxJN5X0jZlnRVixFcHCxqdKigm7jcm0F8FCfB9zmLz6uWdiEUaoYf3J1ogF6fKtj7+5AAOGN2oRAM1e0MbnFyTh5XLQx3/UFtCrtEWIvmYM+ZggsEuCdVJJfyfp0pJu3yYSgyByWAgCE/afJSFE48HK+JoWRt6xhUW0Cc+D6+A1PXyFYOElPbuFBdGc++O9YRteERMqwpWjNK+Iv7+heUFfGu5DyEBIG2Htn7QBfLsmrtGcjQa82ucMtobAEe4uiRGTDVHjObHnlxPPG57zfzSP7NsFZg9jFe+QBYt+xBsjpNrWwf3uL+kPm/B8TxJC/4R2Qxae/5m5OQJ8T0kPaGLP/3P+3EHf09+PamOX5/z0th5sl6+7S4KFV0GIg0j9hSRyCZsk3VkZH9bcc3Jf/YEIvrN5NIRruOV9XqXPV/A7/4tVsr/O5SS9tXlyrJTh6YXnQ77shpLwDrOD8/+0rb6f6xqHh0fuI+6BPXh1eEKIFRN67ghhwyOdC+OZpHiOD2z/W5MbzJ7nUP9+bkkvbaIxhruHeu2p88lTEabR93iaLILkTRlz9PHcwsYCSHs8XBbAx7bxtMbGs7WFCCFcWnTWXOtAttlPwYpkPhN9KUE/l8NiQr6wEwNWu00E62aSnieJ6xPuxCSEAXkaJju5IbwjDgSRQYco4Lav2YkML45rxSDHu2Kl5r78xvXXCADtrz0hKlOCFQMdkbnPiglyLUmvGJ63H+AhWNnGR5wTiei5vsXjoL84Nk1Wc06ILH2I54IITHmG4yRlzOEN/6Q9b5ag7+08VfPmyC89rV2YnOWLJd1L0hvbb4hLn4KAHeMSTxpbY7OCcUbCHU8KMWTRIp3Bbxyfas+0xgM+kGK05qG2LVhcnxDmbyYSx0xc3Psx3zQnWCEGJJtJYOJGbyJY52g5BHYT8VwYMNh38baSsoKyqn2xAxe2MOi519JBSMgz3boJzStb41iVmQB9LiTrH0IehG5MLMf12BnFPsSC0O5CE/bP3YPkLxOPHAzhBxN6rWD1CwceBN4O/UuSnoMNDHKC2IdI8c8sBPF38jM8FzzX7CrHRgKbKfQ9XJbCq/45psR9jkmEgNi2yXH1Lr/HGHhyG/O990o+ixASThx4x4gfoT07zZ/oFri4BosQ3viXNzHmoLfdpmBxbRLRrIYM1ne0wXxCSddtOyZ4Iv0qBO85waIMgST3RZqrjbdEHmltHRb2MADY4SHEIqF94Tbh+Hd21z7YdXg/gDMPqw8DxmeKnaaPNUEhLGSz4EwtrOTe7HCOXhe2sdtIropJxOTuQz/YwpQJQ5hM7gwRWOO9RZL7MjMiuuRhhWA9tyXtWUhIyDMpo19ZDBBuks43aAsFxb2Xbf2Hl5WFrtEVEU7z71ObGUtzdBPBwhNGRKLU5FLNfsLi2JzAZhY+PHSegYNcUxQuR1+z6cF5eIHRZ/QRHjtpCc5lE4iF5hYTJTzBuBfDg65Fq55vSbAAi9gsHaeX9Kw28cZ8SJ9zIHH85m4yUZqAcODdjAN3TrB6wcGlRlzYNdtkEHMeA4kwLw52mkiKjkWq2aSO83uxYlAS9vUeAFzIvbBDCVPE55YDVISXUK5PbvfXZUeR7XtEG1EgB4d3w0LAPan255k2qZWiPf07NSnWCBaPMCa/8SLJ+3BNNhW+24QrEsj9xgSCd4fE5n5nF0/tiSsFOfBuIlh9lywl3AkrI9wf5wbeH+Oanef3tD/GQvu15h3+qDspcp7jZk/w71MUqyb0QW+0JFibPDsubS9Ya/I2kUcZd9SW6rD63RSSxhx4XdRfse08513wnJQOEFYQOrFVTzgUtVx4RdwXTycOJgthEweewlQY0osKO5jsDPbX4NzInTGQ4XLR5pGwyrLzyQqL8EyFO3gtcGIiMAnYdED4CDdZvRFfPC28mNh2j2JHxGspZxMh9tSkiL9N7ZrG6k8d1DUkfWgYKPF3fp4KpZmMb2o5G7jObeH3O6sINgz6yb5mfO5VsJYS7niTkefsbcBevH1yUPQHiwhH8CAfGWmCOC+EaeQUu7TkGbdZ/7aGYak2S4JFEWRWD4IXct62mvaCtSZvgwfG9jorcV8wmRWOApCVmjzU3VtoyeRHdHCxR8GgPZOdEJI8FddHHAix8PSY9IgKSVJ2H+OZY2KRk+CcqSRvhCsfX9hmj+fB2yDEY7eyt/GcrTaKUJd8Eh7rmoNwjk0IxBrPgwQzO5w8AwIIEzw7EudTZQlzXhSTFc+L/oyws7cnJiB9t5T/GhexuMbaYuPoM5LavSDPsYl3S4/ZNeBZ8FwRVxLnvYATmkeie7xm5Ph4xhCnCPfI2b1twojwyBlTMZ5DxKixoli53+3lEtEHPF8UYPO7BWuml7eVw4rOZRAxcHlNZDxC7Cik61ekNYLFtWL1JH9AjolBxkpMjVVfn8MAYmITvrKSUb7QH9iIl0G4FiEO1eYIGdeamrRxfoRVDOKxVCLaxPOQ15maePQB1yE0jZKNyI/MTc4Ilfg7ngeTGrHm+tTyEC6z2UGiFw9oyjuJydLvaNJv5MGY9GzbI55jYnzcrR03TeK6U5X7/WTkn+fKKsjx4UkSWlJMS04oy83FeKB4d83B9fvSk/CE15wbbXrvdEqw4jdyY1PeZKQLxhxpMFwaV5vYeWDabkuwAvgaUONKvKlg4TKzy8WgxksZcx3ZBMPGPreCcOAJIXKEYH2R6fg8a3YR4/5LYpRN8v6+ESrhSUX+LopM+8R7n+xdylNNCRaCSGIZz22/BWsMs9fm5g7Vw7qyJLxdDsSe0J2UAGOLd/+u2LxYwrp4fYa8LOOXI8QJ74h+IeUQv+GJ94sy7cP7wuMeBWtuh3jNfDrQbbYlWHQ2xXW43KyQS5XSY+3OXgSLGqnIiY2hytrrxapOqIXXQAg45ZH1AyJWyLG2q28T+SAEda46ehPBmnr9hkFPjmScFLw+9PKW5xsLHedCwijP4FpLIeHoocQzZ8+ShYQR6hJCry2ynZuke8lhhZCwixsh7/Hbgvj14Q2G/r6RqMeTivKV+I05MOb74MDGA3OlFyx20cOz3UvezoK1QGBu8J2x5U8o+Nuk9ohbrRWY8fMycxNl7fW4dxT9EV5y3tT7eJsOiMjVsTUeK+94jajiJ4/Grulccnnq9RvCN7xC3kUcX55GhAnx8BTH5O3cDhW2rUm6b0Ow4l1HeFDMy4ZKFgou9cdeBCvEiXq8yF3GeGZjheeeO4Jbn0QP7xePnYLTKGlgZ5p7UNaDl8tYw5Pj38nP7kc1/6Zj+Qhvvy0PK4rf2AHbdDt6TmAYfLjnEaKMghUe1jiRYqs5Ck7nxKAv7iNZO1UjtpcOCxZ4QFO1R/2OKqIS9TvjvfoaLBYBPNg+tCBJPeZJYkEhoTt6WMFlTPiGcFM1P1XpnoXYe/WwCAV5dnYmDxf7vQhWeKV8tijykrGg9OUKU2MhShjYsIpUQh/istlCzjZquShnoQyEUhXegUWwGXuE+/TZoYj1XsZq+XO2JVg8eBQ00kl0AFvZ/ft3CAR5AXIAVP7GsfRqDnkGBjM1SfFqDhORa5F0JrE+ikJMWsog+sK9uB8MGKSUJJB4fX/7AzViTCCS2HP1TeR68ATwnvBk5j4NEiz47lb/Yiv3hkG8+rH0tQgqn/E4eJ1jfP0GEeEavZDxGIg4YccY2sVrR4jV1Cda1tRhHW4PK15JgVG8iXCoE2gvgoXnSTkB9kQhMeJOIewYco/2RX6RMdx7iJTjkF+FK2247j+1+cAYop8oWMX74lUgarZ8TBDYpmCRcORVBFZMDqqyCU3YWibkupIktpbHnaI5wYp80VxH0tnci3qnPlHcV9xzX8oWWM0QSgodqc8iycoRBZzkEagwZ5BFeQerHTmo/ptfsUvIvfsBPtoIC3Yh4zM27GYyKKkJI2TgWAqBOH/p9ZsIpXjNA34IOl4BYQfcx7cJouwkXkcaPzG934IVO7ncd+0xVzbRnx+JeJ5zroRhvB9jhC9ecP3YrWWxIFT8lxXvaUYulHIfh3Vre3Nlu20KFiYwYAiFCC3wdPoD0eBTHf2uC3+fE6xYpVjl/rgTGVYrvA4EhveuptxonpNcEtvQeBvxlVTux6BkUrMjhqCGF3j+9ltMoqkJ0ntO43uIU6JF8hWR6z/kxkqLsCx9PJD78N4l587ldUgSUz9FzU88F94V1x5r0yJ8nnsZe78Fqy82XTl0fysoh+ujkWvvubYdY53EOQsIizYLVPZhvvHzQmvv9TvVbkqwtgGAOB6Xl4lKjRQisfaTxnP27PWb7v0b+Vx7fNu+v19UjTOYpr4xDz8S4XiNUx8NnLKdcIwKd4o72XUiLzf1qZo4N+6BDdlnqGmDJzBnL9eMnBreI7mTz0wYWfHzMtsYl9u8Jl4vpSG8hoV3R9Kd13X+ffiAH54YYShRAUn5teNom7aXvfZ+CdY2AOxVsLZhyy5dc83nSyLvx1sIfBlj01didonHNm2NqIBwf/Tsx2iDHCSituazOdu0ufS1d1mw4ltHhHP9J2FKAz+CjYv8Cl7h2k8kkwRmO3+bn0g+grHsy+3xrMmNUiJB+QLCRAqDPO7Sfx1qX4zblZvssmDtCuMqdsb2Ol/OWJMM3s//CEUVRrajOAELVvEOOozm7fU/88UYYfNk6jv5h9E8X8oEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ2DByhm5hQmYQBECFqwiHWEzTMAEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ2DByhm5hQmYQBECFqwiHWEzTMAEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ2DByhm5hQmYQBECFqwiHWEzTMAEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ2DByhm5hQmYQBECFqwiHWEzTMAEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ2DByhm5hQmYQBECFqwiHWEzTMAEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ2DByhm5hQmYQBECFqwiHWEzTMAEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ2DByhm5hQmYQBECFqwiHWEzTMAEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ2DByhm5hQmYQBECFqwiHWEzTMAEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ2DByhm5hQmYQBECFqwiHWEzTMAEcgIWrJyRW5iACRQhYMEq0hE2wwRMICdgwcoZuYUJmEARAhasIh1hM0zABHICFqyckVuYgAkUIWDBKtIRNsMETCAnYMHKGbmFCZhAEQIWrCIdYTNMwARyAhasnJFbmIAJFCFgwSrSETbDBEwgJ/AbuKbm03pX4yEAAAAASUVORK5CYII=" res = window.ENV.jpg || res;
}else{ }else{
// ctx.fillStyle = '#dddddd'; // 设置颜色 // ctx.fillStyle = '#dddddd'; // 设置颜色
let ctx = canvas.getContext('2d'); let ctx = canvas.getContext('2d');
for (let i = 0; i < randInt(1, 3); i++) { for (let i = 0; i < randInt(1, 5); i++) {
let color = Math.floor(Math.random() * 150); let color = Math.floor(Math.random() * 150);
ctx.fillStyle = "rgba(" + color + "," + color + "," + color + ",1)"; ctx.fillStyle = "rgba(" + color + "," + color + "," + color + ",1)";
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment