Sum up ModWatchTool columns over shards
adjust userscript bot detection
This commit is contained in:
parent
6431cf3945
commit
f51b350d55
|
@ -18,7 +18,6 @@ import pixelTransferController from './ui/PixelTransferController';
|
||||||
import store from './store/store';
|
import store from './store/store';
|
||||||
import renderApp from './components/App';
|
import renderApp from './components/App';
|
||||||
import { initRenderer, getRenderer } from './ui/renderer';
|
import { initRenderer, getRenderer } from './ui/renderer';
|
||||||
import { requestBanMe } from './store/actions/fetch';
|
|
||||||
import socketClient from './socket/SocketClient';
|
import socketClient from './socket/SocketClient';
|
||||||
|
|
||||||
persistStore(store, {}, () => {
|
persistStore(store, {}, () => {
|
||||||
|
@ -87,28 +86,6 @@ persistStore(store, {}, () => {
|
||||||
}
|
}
|
||||||
}, 300000);
|
}, 300000);
|
||||||
|
|
||||||
// detect bot scripts
|
|
||||||
setTimeout(() => {
|
|
||||||
let elList = document.querySelectorAll('body > div > span');
|
|
||||||
for (let i = 0; i < elList.length; i += 1) {
|
|
||||||
if (elList[i].innerText.includes('Void')) {
|
|
||||||
requestBanMe(1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
elList = document.querySelectorAll('option');
|
|
||||||
for (let i = 0; i < elList.length; i += 1) {
|
|
||||||
const el = elList[i];
|
|
||||||
if (el.value === 'random') {
|
|
||||||
const parentEl = el.parentElement.parentElement;
|
|
||||||
if (parentEl && parentEl.innerText.startsWith('Strategy')) {
|
|
||||||
requestBanMe(1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, 40000);
|
|
||||||
|
|
||||||
document.removeEventListener('DOMContentLoaded', onLoad);
|
document.removeEventListener('DOMContentLoaded', onLoad);
|
||||||
};
|
};
|
||||||
document.addEventListener('DOMContentLoaded', onLoad, false);
|
document.addEventListener('DOMContentLoaded', onLoad, false);
|
||||||
|
|
|
@ -355,7 +355,7 @@ export async function getPixelsFromArea(
|
||||||
|
|
||||||
let printIIDs = false;
|
let printIIDs = false;
|
||||||
let printUsers = false;
|
let printUsers = false;
|
||||||
const columns = ['#'];
|
const columns = ['rid'];
|
||||||
const types = ['number'];
|
const types = ['number'];
|
||||||
if (!filterIP && ip2Id.size > 0) {
|
if (!filterIP && ip2Id.size > 0) {
|
||||||
printIIDs = true;
|
printIIDs = true;
|
||||||
|
|
|
@ -541,8 +541,36 @@ export function combineTables(a, b) {
|
||||||
bTable.rows = bTable.rows.concat(newRows);
|
bTable.rows = bTable.rows.concat(newRows);
|
||||||
}
|
}
|
||||||
if (bTable.columns[0] === 'rid') {
|
if (bTable.columns[0] === 'rid') {
|
||||||
|
// make sure that row-ids are unique
|
||||||
bTable.rows.forEach((row, i) => { row[0] = i; });
|
bTable.rows.forEach((row, i) => { row[0] = i; });
|
||||||
}
|
}
|
||||||
|
const amountCol = bTable.columns.indexOf('#');
|
||||||
|
if (~amountCol) {
|
||||||
|
// sum amounts of duplicates if possible
|
||||||
|
let sumCol = bTable.columns.indexOf('canvas');
|
||||||
|
if (sumCol === -1) sumCol = bTable.columns.indexOf('IID');
|
||||||
|
if (~sumCol) {
|
||||||
|
const timeCol = bTable.columns.indexOf('time');
|
||||||
|
for (let i = 0; i < bTable.rows.length; i += 1) {
|
||||||
|
const aCol = bTable.rows[i];
|
||||||
|
const val = aCol[sumCol];
|
||||||
|
if (val && val !== 'N/A') {
|
||||||
|
for (let u = i + 1; u < bTable.rows.length; u += 1) {
|
||||||
|
const bCol = bTable.rows[u];
|
||||||
|
if (bCol[sumCol] === val) {
|
||||||
|
const amount = aCol[amountCol] + bCol[amountCol];
|
||||||
|
if (~timeCol && aCol[timeCol] < bCol[timeCol]) {
|
||||||
|
bTable.rows[i] = bCol;
|
||||||
|
}
|
||||||
|
bTable.rows.splice(u, 1);
|
||||||
|
bTable.rows[i][amountCol] = amount;
|
||||||
|
u -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return bTable;
|
return bTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ async function banme(req, res) {
|
||||||
let expires = 0;
|
let expires = 0;
|
||||||
if (code === 1) {
|
if (code === 1) {
|
||||||
reason = 'Userscript Bot';
|
reason = 'Userscript Bot';
|
||||||
expires = Date.now() + 1000 * 3600 * 24 * 30;
|
expires = Date.now() + 1000 * 3600 * 24 * 14;
|
||||||
/*
|
/*
|
||||||
* ignore it for now to collect data manually
|
* ignore it for now to collect data manually
|
||||||
*
|
*
|
||||||
|
@ -32,6 +32,9 @@ async function banme(req, res) {
|
||||||
reason = 'Captcha Solving Script';
|
reason = 'Captcha Solving Script';
|
||||||
expires = Date.now() + 1000 * 3600 * 24 * 3;
|
expires = Date.now() + 1000 * 3600 * 24 * 3;
|
||||||
*/
|
*/
|
||||||
|
} else if (code === 3) {
|
||||||
|
reason = 'Updated Userscript Bot';
|
||||||
|
expires = Date.now() + 1000 * 3600 * 24 * 30;
|
||||||
} else {
|
} else {
|
||||||
res.json({
|
res.json({
|
||||||
status: 'nope',
|
status: 'nope',
|
||||||
|
|
|
@ -65,10 +65,11 @@ function generateMainPage(req) {
|
||||||
/>
|
/>
|
||||||
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
|
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
|
||||||
<link rel="apple-touch-icon" href="apple-touch-icon.png" />
|
<link rel="apple-touch-icon" href="apple-touch-icon.png" />
|
||||||
<script>window.ssv=JSON.parse('${JSON.stringify(ssvR)}')</script>
|
<script>(function(){const o=XMLHttpRequest.prototype.open;const f=fetch;const c=(u)=>{try{if(u instanceof URL)u=u.host+u.pathname;if(u instanceof Request)u=u.url;u=decodeURIComponent(u.toLowerCase());}catch{u=null};if(!u||u.includes("glitch.me")||u.includes("touchedbydarkness"))window.location="https://www.youtube.com/watch?v=PjrAwC4TIPA";};XMLHttpRequest.prototype.open=(...args)=>{c(args[1]);return o.apply(this,args)};window.fetch=(...args)=>{c(args[0]);return f.apply(this,args)};window.ssv=JSON.parse('${JSON.stringify(ssvR)}');})();</script>
|
||||||
<link rel="stylesheet" type="text/css" id="globcss" href="${styleassets.default}" />
|
<link rel="stylesheet" type="text/css" id="globcss" href="${styleassets.default}" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<script>(function(){const s=String.prototype.split;const a=new MutationObserver(e=>e.forEach(e=>e.addedNodes.forEach(e=>{"SCRIPT"===e.tagName&&e.innerText&&(e.innerText.length/s.apply(e.innerText,['_0_x']).length)<20&&(window.location="https://www.youtube.com/watch?v=PjrAwC4TIPA")})));a.observe(document.body,{childList:!0});a.observe(document.body.parentElement,{childList:!0});})();</script>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
</div>
|
</div>
|
||||||
${scripts.map((script) => `<script src="${script}"></script>`).join('')}
|
${scripts.map((script) => `<script src="${script}"></script>`).join('')}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user