您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
9/20/2022, 11:31:23 AM
// ==UserScript== // @name PixelPlanet AI captcha-solver // @namespace Violentmonkey Scripts // @match *://*.pixelplanet.fun/* // @match *://pixelplanet.fun/* // @grant none // @version 1.0 // @author - // @license GPL // @description 9/20/2022, 11:31:23 AM // @require http://code.jquery.com/jquery-latest.js // ==/UserScript== function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } function makeid(length) { var result = ''; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var charactersLength = characters.length; for ( var i = 0; i < length; i++ ) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } function return_captcha(whatever) { return new Promise(resolve => setTimeout(resolve, ms)); } function getElementByXpath(path) { return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; } function sneed(a) { console.log(a) fetch('https://hf.space/embed/sneedium/userscript_pixelplanet/api/predict/', { method: 'POST', headers: { 'Accept': '*/*', 'Accept-Language': 'en-US,en;q=0.9', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Origin': 'http://127.0.0.1:7860', 'Referer': 'http://127.0.0.1:7860/', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'Sec-GPC': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.61 Safari/537.36' }, body: JSON.stringify({ 'fn_index': 0, 'data': [ a ], 'session_hash': makeid(12) }) }).then( function(response) { if (response.status !== 200) { console.log('Looks like there was a problem. Status Code: ' + response.status); return; } // Examine the text in the response captcha_result = response.json().then( function(response) { captcha_result = response.data[0] //+ "BAD" console.log("The captcha is: ", captcha_result) // alert("The captcha is: "+captcha_result) $("#app > div.Alert.show > form > input[type=text]:nth-child(4)").val(captcha_result); const myPromise0 = new Promise((resolve, reject) => { setTimeout(() => { resolve(getElementByXpath('//*[@type="submit"]')); }, 300); }); myPromise0.then(r => r.click()) const myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve(getElementByXpath('//*[@class="errormessage"]')); }, 1111); }); myPromise .then(function(r){ console.log("myPromise.then():",r.textContent); //Tryng the function again in a loop clearInterval(pollingFunc); pollingFunc = setInterval(function() {do_loop_till_working();}, 1000); // wait_for_Interval.then(); }) .catch( function(err){ //Tryng the function again in a loop clearInterval(pollingFunc); pollingFunc = setInterval(function() {do_loop_till_working();}, 1000); console.log("error (should be a captcha worked): myPromise.catch():","captcha worked!"); }) // }); // sleep(2) // var pollingFunc = setInterval(function() {do_loop_till_working();}, 2000); } ) ; } ).catch(function(err) { console.log('Fetch Error :-S', err); }); } function do_url_to_svg(url){ fetch( url ) .then( function(response) { if (response.status !== 200) { console.log('Looks like there was a problem. Status Code: ' + response.status); return; } // Examine the text in the response response.text().then(function(data) { sneed(data) }); } ) .catch(function(err) { console.log('Fetch Error :-S', err); }); } function do_loop_till_working(){ try { // url = document.querySelector("#app > div.Alert.show > form > div > img")['src'] url = document.querySelector("#app > div.Alert.show > form > div > img")['src']; console.log(url); // sleep(1100); // setInterval(function() { clearInterval(pollingFunc); //TODO: RECALL pollingFunc when captcha is solved! //TODO: Disable the reload button (or remove it) .. //TODO: disable the ablity for the user to solve the captcha by his own url = document.querySelector("#app > div.Alert.show > form > div > img")['src'] console.log(url); do_url_to_svg( url ); } catch(err) { console.log("sneed", err) // clearInterval(pollingFunc); } } let pollingFunc = setInterval(function() { do_loop_till_working(); // }; }, 1000);