Python TCP সকেটের জন্য SOCKS-সচেতন সংযোগকারী
proxy-সচেতন সকেট সংযোগকারী বেছে নিন এবং এর পরিধি Python-এর প্রক্রিয়া-ব্যাপী সকেট বাস্তবায়ন থেকে আলাদা রাখুন।
একটি কাঁচা Python সকেট শুধু http_proxy থাকার কারণে proxy নিয়ে দর-কষাকষি করে না। নিজস্ব TCP প্রোটোকল ব্যবহার করা অ্যাপ্লিকেশনের জন্য proxy-এর শেষপ্রান্তে থাকা সেবাটি বোঝে এমন সংযোগকারী ব্যবহার করুন।
PySocks ইতিমধ্যে থাকলে সংযোগটি স্পষ্টভাবে তৈরি করুন:
import socks
with socks.socksocket() as connection:
connection.set_proxy(socks.SOCKS5, '203.0.113.10', 1080)
connection.settimeout(10)
connection.connect(('example.com', 12345))
# Exchange the destination protocol here.
নথির ঠিকানা ও গন্তব্য পোর্ট বদলান। অনুমোদিত পাবলিক গন্তব্যের জন্য SOCKS5 proxy তালিকা থেকে প্রার্থী বেছে নিন কেবল অ্যাপ্লিকেশনের লক্ষ্য পোর্টটি এটি অনুমোদন করে তা যাচাই করার পরে। ইনস্টল করা প্যাকেজ, সমর্থিত পদ্ধতি ও শেষপ্রান্তের প্রয়োজনীয়তা PySocks ইন্টারফেস-এর সঙ্গে মিলিয়ে দেখুন।
অ্যাপ্লিকেশনের বাকি অংশ এই প্রতিষ্ঠিত সংযোগের উপর দিয়ে নিজের প্রোটোকল বিনিময় করে। সেই প্রোটোকল TLS ব্যবহার করলে proxy দর-কষাকষির পরে তা শুরু করুন এবং প্রকৃত গন্তব্য হোস্টনেম যাচাই করুন। proxy প্রমাণীকরণ পথটি প্রতিষ্ঠা করে; এটি গন্তব্যের লগইন বা এনক্রিপশন দেয় না।
SOCKS শ্রোতার SOCKS দর-কষাকষি দরকার। HTTP সেবার যেকোনো TCP গন্তব্যের জন্য CONNECT-সক্ষম সংযোগকারী দরকার এবং এটি তার পোর্ট অস্বীকার করতে পারে। ভুল হ্যান্ডশেক রেখে ঠিকানা বদলানোর বদলে প্রকৃতপক্ষে যে সেবা দেওয়া হচ্ছে তা থেকে সংযোগকারী বেছে নিন।
প্রতিস্থাপন স্থানীয় রাখুন। socket.socket-এ একটি ক্লাস বরাদ্দ করলে অসংশ্লিষ্ট ইমপোর্ট ও লাইব্রেরি প্রভাবিত হতে পারে। অন্য লাইব্রেরি যদি সকেট তৈরি করে, তার নথিভুক্ত সংযোগ-কারখানা বা proxy অপশন ব্যবহার করুন; যে অভিধান এটি কখনো পড়ে না তা সেই সংযোগ বদলাতে পারে না।