Node.js ত SOCKS ছকেট TLS ৰে মেৰিয়াই লোৱা
socks পেকেজে ঘূৰাই দিয়া destination stream টো tls.connect ৰে মেৰিয়াওক আৰু SNI আৰু certificate verification ৰ বাবে ৱেবছাইটৰ hostname ৰাখক।
SocksClient.createConnection এ অনুৰোধ কৰা destination লৈ সংযুক্ত এটা stream ঘূৰাই দিয়ে। HTTPS ৰ বাবে সেই stream এ HTTP অনুৰোধ কঢ়িয়াবলৈ আগতে TLS handshake ৰ প্ৰয়োজন।
import { SocksClient } from 'socks';
import tls from 'node:tls';
const targetHost = 'service.example';
const info = await SocksClient.createConnection({
proxy: { host: 'proxy.example', port: 1080, type: 5 },
command: 'connect',
destination: { host: targetHost, port: 443 },
timeout: 10000,
});
const secure = tls.connect({
socket: info.socket,
servername: targetHost,
});
secure.on('error', onTransportError);
secure.on('data', onResponseBytes);
secure.once('secureConnect', () => {
secure.write(
`GET /data HTTP/1.1\r\nHost: ${targetHost}\r\nConnection: close\r\n\r\n`
);
});
SOCKS5 proxy ৰ তালিকা এ proxy host আৰু port ৰ বাবে প্ৰাৰ্থী যোগান ধৰে। onTransportError আৰু onResponseBytes বৰ্তমানৰ application ৰ অন্তৰ্গত; দ্বিতীয়টোৱে HTTP response stream টো বিশ্লেষণ কৰিব লাগে। TLS data chunks স্বতন্ত্ৰভাৱে সম্পূৰ্ণ HTTP বাৰ্তা নহয়।
servername টো destination ৰ DNS নাম। Node ৰ নিম্ন-স্তৰৰ tls.connect এ ডিফল্টভাৱে SNI সক্ৰিয় নকৰে, আৰু proxy hostname টো ৱেবছাইটৰ certificate identity নহয়।
certificate verification সক্ৰিয় ৰাখক। সংযুক্ত ছকেট যোগান ধৰিলে TLS identity ৰক্ষা কৰি ৱেবছাইটলৈ পৃথক প্ৰত্যক্ষ সংযোগ খোলাৰ পৰা বিৰত থাকে।
SOCKS ৰ সময়সীমাই সেই আলোচনাক সীমাবদ্ধ কৰে। পিছৰ TLS আৰু application বিনিময়ৰ বাবে কলকাৰীৰ উদ্দেশ্য অনুসৰি সময়সীমা, বাতিল আৰু পৰিষ্কাৰ নীতিৰ প্ৰয়োজন।