NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name premproxy proxy parser
// @namespace dimaslanjaka:premproxy-parser-proxy
// @version 1.3
// @description parse proxy from site page
// @author dimaslanjaka
// @supportURL https://github.com/dimaslanjaka/php-proxy-hunter/issues
// @homepageURL https://dimaslanjaka.github.io/
// @contributionURL https://github.com/dimaslanjaka/php-proxy-hunter
// @license MIT
// @match *://premproxy.com/*
// @noframes
// @run-at document-end
// @downloadURL https://raw.githack.com/dimaslanjaka/php-proxy-hunter/master/userscripts/premproxy.user.js
// @updateURL https://raw.githack.com/dimaslanjaka/php-proxy-hunter/master/userscripts/premproxy.user.js
// ==/UserScript==
(function () {
"use strict";
const addProxyFun = (dataToSend) => {
const url = "https://sh.webmanajemen.com/proxyAdd.php";
fetch(url, {
signal: AbortSignal.timeout(5000),
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: `proxies=${encodeURIComponent(dataToSend)}`
})
.then((response) => {
if (!response.ok) {
throw new Error("Network response was not ok");
}
return response.text();
})
.then((data) => {
console.log(data);
})
.catch((error) => {
console.log("There was a problem with your fetch operation: (" + error.message + ")");
});
};
/**
* @returns {Promise<any[]>}
*/
const parse = () => {
return new Promise((resolve) => {
// Select all table elements on the page
const tables = Array.from(document.querySelectorAll("table"));
const ipOnly = /(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/gm;
const objectWrapper = [];
// Loop through each table element using a for loop
for (let i = 0; i < tables.length; i++) {
const table = tables[i];
const rows = Array.from(table.querySelectorAll("tr"));
for (let j = 0; j < rows.length; j++) {
const row = rows[j];
const td = Array.from(row.querySelectorAll("td"));
const texts = td.map((el) => el.innerText).filter((str) => typeof str == "string" && str.trim().length > 0);
if (ipOnly.test(texts.join(" "))) {
// console.log(texts);
objectWrapper.push({
raw: texts[0],
ip: texts[0].split(":")[0],
port: texts[0].split(":")[1],
type: texts[2],
country: texts[3],
anonymity: texts[4],
https: texts[5]
});
}
}
}
addProxyFun(JSON.stringify(objectWrapper));
resolve(objectWrapper);
});
};
const btn = document.createElement("button");
btn.id = "php-proxy-hunter-grab-proxy";
btn.setAttribute("style", "position: fixed; bottom: 50%; right: 2em; transform: translateY(50%);");
btn.innerText = "PARSE PROXIES";
btn.classList.add("btn", "button", "btn-primary");
btn.onclick = () => {
parse().then((result) => {
const html = result.map((obj) => JSON.stringify(obj)) + "<br/>";
window.open(URL.createObjectURL(new Blob([html], { type: "text/html" })), "width=800,height=600");
});
};
document.body.appendChild(btn);
})();