luadao / check_proxy_alive.js
vipsphi's picture
Upload 11 files
58461df verified
const http = require('http');
const https = require('https');
async function testProxy(protocol, targetHost, targetPath) {
const proxy = 'http://zlet9i3y:oZJQ0o4V@157.10.49.215:44128';
const targetUrl = `${protocol}://${targetHost}${targetPath}`;
console.log(`Testing Proxy: ${proxy}`);
console.log(`Target: ${targetUrl}`);
const url = new URL(proxy);
const auth = 'Basic ' + Buffer.from(url.username + ':' + url.password).toString('base64');
if (protocol === 'http') {
return new Promise((resolve) => {
const options = {
host: url.hostname,
port: url.port,
path: targetUrl,
headers: {
'Proxy-Authorization': auth,
'Host': targetHost
}
};
http.get(options, (res) => {
let data = '';
res.on('data', chunk => data += chunk);
res.on('end', () => {
console.log(`HTTP Status: ${res.statusCode}`);
resolve(true);
});
}).on('error', e => {
console.error(`HTTP Proxy Error: ${e.message}`);
resolve(false);
});
});
} else {
// HTTPS CONNECT
return new Promise((resolve) => {
const req = http.request({
host: url.hostname,
port: url.port,
method: 'CONNECT',
path: `${targetHost}:443`,
headers: {
'Proxy-Authorization': auth
}
});
req.on('connect', (res, socket, head) => {
console.log('HTTPS CONNECT established');
socket.destroy();
resolve(true);
});
req.on('error', e => {
console.error(`HTTPS Proxy Error (CONNECT): ${e.message}`);
resolve(false);
});
req.end();
});
}
}
async function run() {
console.log('--- Step 1: HTTP Test ---');
await testProxy('http', 'httpbin.org', '/ip');
console.log('\n--- Step 2: HTTPS Test ---');
await testProxy('https', 'labs.google', '/');
}
run();