Dapatkan proxy gratis loh ya
Note
yh.
qrtz
javascript
66
16
https://api.proxyscrape.com
23 Agu 2026
Code
import fs from 'node:fs';
import path from 'node:path';
const UAS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36",
"Mozilla/5.0 (Linux; Android 14; Pixel 8 Pro) AppleWebKit/537.36 Chrome/120.0.0.0 Mobile Safari/537.36"
];
const pick = arr => arr[Math.floor(Math.random() * arr.length)];
const sleep = ms => new Promise(r => setTimeout(r, ms));
const PROTOCOLS = ["http", "https", "socks4", "socks5"];
function parseProtocols(input) {
if (!input || input === "all") return PROTOCOLS;
const selected = input.toLowerCase().split(",").map(s => s.trim()).filter(s => PROTOCOLS.includes(s));
return selected.length > 0 ? selected : PROTOCOLS;
}
function statusLabel(speed) {
if (!speed || speed === 0) return "unknown";
if (speed < 400) return "fastest";
if (speed < 800) return "fast";
if (speed < 2000) return "medium";
if (speed < 4000) return "slow";
return "very-slow";
}
async function fetchProxyscrape(protocols) {
const all = [];
for (const proto of protocols) {
try {
const r = await fetch(`https://api.proxyscrape.com/v4/free-proxy-list/get?request=display_proxies&proxy_format=protocolipport&format=json&protocol=${proto}`, {
headers: { "User-Agent": pick(UAS) },
signal: AbortSignal.timeout(15000)
});
if (!r.ok) continue;
const data = await r.json();
for (const p of (data.proxies || [])) {
if (p.alive && p.ip && p.port && p.port > 0 && p.port < 65536) {
const speed = p.timeout || p.average_timeout || 0;
const country = p.country || p.ip_data?.country || p.ip_data?.countryCode || "";
all.push({
ip: p.ip, port: p.port, protocol: proto,
country, anonymity: p.anonymity || "unknown",
speed: Math.round(speed), status: p.alive ? "alive" : "dead",
url: `${proto}://${p.ip}:${p.port}`, source: "ProxyScrape"
});
}
}
await sleep(300);
} catch (e) {}
}
return all.slice(0, 400);
}
async function fetchPubproxy(protocols) {
const all = [];
for (const proto of protocols) {
for (let i = 0; i < 2; i++) {
try {
const r = await fetch(`http://pubproxy.com/api/proxy?format=json&type=${proto}&limit=20`, {
headers: { "User-Agent": pick(UAS) },
signal: AbortSignal.timeout(10000)
});
if (!r.ok) continue;
const data = await r.json();
for (const p of (data.data || [])) {
const port = parseInt(p.port) || 0;
if (p.ip && port > 0 && port < 65536) {
const speed = parseInt(p.speed) || 0;
all.push({
ip: p.ip, port, protocol: proto,
country: p.country || "", anonymity: p.proxy_level || "unknown",
speed, status: speed > 0 && speed < 10000 ? "alive" : "unknown",
url: `${proto}://${p.ip}:${port}`, source: "PubProxy"
});
}
}
await sleep(500);
} catch (e) {}
}
}
return all;
}
async function fetchProxyListDownload(protocols) {
const all = [];
for (const proto of protocols) {
try {
const r = await fetch(`https://www.proxy-list.download/api/v1/get?type=${proto}`, {
headers: { "User-Agent": pick(UAS) },
signal: AbortSignal.timeout(10000)
});
if (!r.ok) continue;
const text = await r.text();
for (const line of text.split("\n")) {
const trimmed = line.trim();
if (/^\d+\.\d+\.\d+\.\d+:\d+$/.test(trimmed)) {
const [ip, portStr] = trimmed.split(":");
const port = parseInt(portStr) || 8080;
if (ip && port > 0 && port < 65536) {
all.push({
ip, port, protocol: proto,
country: "", anonymity: "unknown",
speed: 0, status: "unknown",
url: `${proto}://${ip}:${port}`, source: "ProxyListDownload"
});
}
}
}
await sleep(300);
} catch (e) {}
}
return all.slice(0, 200);
}
async function scrapeAll(protocols) {
const [ps, pp, pl] = await Promise.all([
fetchProxyscrape(protocols), fetchPubproxy(protocols), fetchProxyListDownload(protocols)
]);
const seen = new Set();
const all = [];
for (const p of [...ps, ...pp, ...pl]) {
if (!seen.has(p.url)) { seen.add(p.url); all.push(p); }
}
return all;
}
async function testProxy(proxy, testUrl) {
const start = Date.now();
try {
const r = await fetch(testUrl, {
headers: { "User-Agent": pick(UAS) },
signal: AbortSignal.timeout(6000),
proxy: proxy.url
});
if (r.ok) {
const elapsed = Date.now() - start;
return { ...proxy, alive: true, responseTime: elapsed, status: statusLabel(elapsed), tested: true };
}
} catch (e) {}
return { ...proxy, alive: false, status: "dead", tested: true };
}
async function testProxies(proxies, testUrl, concurrency) {
const working = [];
const queue = [...proxies];
async function worker() {
while (queue.length > 0) {
const proxy = queue.shift();
if (!proxy) break;
const result = await testProxy(proxy, testUrl);
if (result && result.alive) working.push(result);
}
}
const workers = Array(Math.min(concurrency, queue.length)).fill(0).map(() => worker());
await Promise.all(workers);
working.sort((a, b) => a.responseTime - b.responseTime);
return working;
}
export { scrapeAll, testProxies, parseProtocols, PROTOCOLS };
if (process.argv[1]?.includes("proxy_scraper")) {
const cmd = process.argv[2] || "scrape";
const filter = process.argv[3] || "all";
const limit = parseInt(process.argv[4]) || 20;
const speedFilter = process.argv.find(a => a.startsWith("--speed="))?.split("=")[1] || process.argv.find(a => a === "--fastest" || a === "--fast" || a === "--medium") || "";
const testUrl = process.argv.find(a => a.startsWith("http")) || "https://httpbin.org/ip";
const protocols = parseProtocols(filter);
const speedLimit = speedFilter === "--fastest" ? 400 : speedFilter === "--fast" ? 800 : speedFilter === "--medium" ? 2000 : parseInt(speedFilter) || 0;
const printProxy = (p) => ({ url: p.url, protocol: p.protocol, country: p.country || "unknown", speed: (p.responseTime || p.speed) + "ms", status: p.status, source: p.source });
if (cmd === "scrape") {
const proxies = await scrapeAll(protocols);
console.log(JSON.stringify({ creator: "rynaqrtz", status: true, protocols, total: proxies.length, proxies: proxies.slice(0, limit).map(printProxy) }, null, 2));
}
else if (cmd === "test" || cmd === "quick") {
const count = limit || 10;
const proxies = await scrapeAll(protocols);
const toTest = proxies.slice(0, Math.min(count * 5, proxies.length));
const alive = await testProxies(toTest, testUrl, 20);
let result = alive;
if (speedLimit > 0) {
result = alive.filter(p => p.responseTime <= speedLimit);
} else if (speedFilter === "--fastest") {
result = alive.filter(p => p.status === "fastest");
} else if (speedFilter === "--fast") {
result = alive.filter(p => p.status === "fastest" || p.status === "fast");
} else if (speedFilter === "--medium") {
result = alive.filter(p => p.status === "fastest" || p.status === "fast" || p.status === "medium");
}
result = result.slice(0, count);
console.log(JSON.stringify({
creator: "rynaqrtz",
status: true,
protocols,
speed_filter: speedFilter || (speedLimit > 0 ? `<${speedLimit}ms` : "none"),
tested: toTest.length,
alive: alive.length,
selected: result.length,
proxies: result.map(printProxy)
}, null, 2));
}
else {
console.log(JSON.stringify({
usage: {
scrape: 'node proxy_scraper.js scrape [protocol] [limit] — Scrape raw list',
test: 'node proxy_scraper.js test [protocol] [limit] [--fast|--fastest|--medium|--speed=N] [testUrl]',
quick: 'node proxy_scraper.js quick [protocol] [limit] [--fast|--fastest|--medium|--speed=N] [testUrl]',
protocols: PROTOCOLS.join(", ") + ", all",
speed_filters: ["--fastest (<400ms)", "--fast (<800ms)", "--medium (<2000ms)", "--speed=N (custom ms limit)"],
examples: [
'node proxy_scraper.js quick socks5 10 --fastest',
'node proxy_scraper.js quick socks5 5 --fast',
'node proxy_scraper.js test http,https 20 --speed=1500',
'node proxy_scraper.js scrape all 100'
]
},
creator: "rynaqrtz"
}, null, 2));
}
}Rating
Gimana snippet ini menurutmu?
Embed ke website / blog
<iframe src="https://qrtzcode.vercel.app/api/embed/tools/proxy-scraper" style="width:100%;height:400px;border:none;border-radius:12px;"></iframe>Related Snippets
Top up e-wallet Dana
scrape top up cocok untuk mau buat sistem top up dana otomatis di bot, dan juga ini output nya ada qris nya
Subdomain Zone id
Scrape Create Domain zone.id / limit 1 akun 10 domain udh ada sistem add dns nya, di scrape juga udh ada penjelasan sistem demi sistem
tempmail
bikin email sementara.