خام Python ساکٹ صرف http_proxy کی موجودگی کی وجہ سے پروکسی سے بات چیت نہیں کرتا۔ اپنے TCP پروٹوکول میں بات کرنے والی ایپلیکیشن کے لیے ایسا کنیکٹر استعمال کریں جو پروکسی کے سرے پر خدمت کو سمجھتا ہو۔

اگر 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 پروکسی فہرست سے امیدوار صرف اس وقت منتخب کریں جب آپ جانچ لیں کہ وہ ایپلیکیشن کی ہدف پورٹ کی اجازت دیتا ہے۔ نصب شدہ پیکج، معاون طریقوں اور اینڈ پوائنٹ کی ضروریات کو PySocks انٹرفیس کے مطابق جانچیں۔

ایپلیکیشن کا باقی حصہ اپنا پروٹوکول اسی قائم شدہ کنکشن پر منتقل کرتا ہے۔ اگر وہ پروٹوکول TLS استعمال کرتا ہے تو اسے پروکسی گفت و شنید کے بعد شروع کریں اور منزل کے حقیقی میزبان نام کی تصدیق کریں۔ پروکسی کی تصدیق راستہ قائم کرتی ہے؛ یہ منزل کا لاگ ان یا خفیہ کاری فراہم نہیں کرتی۔

SOCKS سننے والے کو SOCKS گفت و شنید درکار ہے۔ HTTP خدمت کو کسی بھی TCP منزل کے لیے CONNECT کے قابل کنیکٹر درکار ہے اور وہ اپنی پورٹ سے انکار کر سکتی ہے۔ غلط ہینڈ شیک چھوڑ کر پتہ بدلنے کے بجائے، حقیقت میں پیش کی جانے والی خدمت کے مطابق کنیکٹر منتخب کریں۔

تبدیلی کو مقامی رکھیں۔ socket.socket کو کوئی کلاس تفویض کرنا غیر متعلقہ امپورٹس اور لائبریریوں کو متاثر کر سکتا ہے۔ اگر ساکٹ بنانا کسی دوسری لائبریری کے پاس ہے تو اس کی دستاویزی کنکشن فیکٹری یا پروکسی آپشن استعمال کریں؛ ایسی ڈکشنری جو اسے کبھی نہیں پڑھتی وہ اس کنکشن کو تبدیل نہیں کر سکتی۔

متعلقہ مضامین