|
|
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 {
|
|
|
|
|
|
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();
|
|
|
|