iOS 17+ এ SOCKS5 এর মাধ্যমে URLSession WebSocket রুট করুন
iOS 17 বা তার পরের সংস্করণে সেশন-স্তরের SOCKSv5 প্রক্সির মাধ্যমে URLSessionWebSocketTask কনফিগার করুন এবং রাউটিংকে WSS ডিক্রিপশন থেকে আলাদা করুন।
একটি iOS অ্যাপের সাধারণ HTTPS অনুরোধ ডিবাগিং প্রক্সিতে দেখা যেতে পারে, অথচ তার WebSocket ট্রাফিক অনুপস্থিত। প্রথমে WebSocket পরিবহনটি চিহ্নিত করুন: URLSessionWebSocketTask সেশন-স্তরের প্রক্সি কনফিগারেশন ব্যবহার করতে পারে, কিন্তু নিজের সকেট খোলে এমন লাইব্রেরির নিজস্ব সমর্থিত ইন্টিগ্রেশন প্রয়োজন। iOS 17+ এ একটি কাঁচা Network.framework সংযোগের জন্য NWConnection-এর নিজস্ব প্রক্সি কনটেক্সট কনফিগার করুন।
iOS 17 বা তার পরের সংস্করণে স্পষ্ট SOCKSv5 প্রক্সি দিয়ে সেশনটি তৈরি করুন:
import Foundation
import Network
@available(iOS 17.0, *)
func makeDebugSession() -> URLSession {
let configuration = URLSessionConfiguration.default
let endpoint = NWEndpoint.hostPort(
host: "192.0.2.10", port: 8889)
configuration.proxyConfigurations = [
ProxyConfiguration(socksv5Proxy: endpoint)
]
return URLSession(configuration: configuration)
}ডকুমেন্টেশনের ঠিকানা ও পোর্টটি বিদ্যমান ডিবাগিং প্রক্সির নাগালের মধ্যে থাকা SOCKS লিসেনার দিয়ে প্রতিস্থাপন করুন। প্রক্সি অ্যাপ্লিকেশনটিতে সেই লিসেনার সক্রিয় করুন। এর HTTP লিসেনার অন্য পোর্টে থাকতে পারে।
ফিরে পাওয়া সেশন থেকে webSocketTask তৈরি করুন। অন্য URLSession দিয়ে তৈরি করা টাস্ক এই সেশনের ওভাররাইড উত্তরাধিকার করে না। খালি proxyConfigurations অ্যারে সিস্টেমের ডিফল্ট ব্যবহার করে; এটি সরাসরি রুটের স্পষ্ট নির্বাচন নয়।
নাগাল ও পাঠযোগ্য বার্তা আলাদা মাইলফলক
একটি ভৌত ফোনের এমন ঠিকানা দরকার যা ডিবাগিং কম্পিউটারে পৌঁছায়। সেই ফোনে 127.0.0.1 বলতে ফোনটিকেই বোঝায়। সংযোগ কখনো সেখানে না পৌঁছালে লিসেনারের ইন্টারফেস ও প্রক্সির অনুমোদিত ক্লায়েন্ট অ্যাক্সেস পরীক্ষা করুন।
SOCKS রুট সংযোগটি বহন করে। wss কনটেন্ট পড়তে অতিরিক্তভাবে ডিবাগিং টুলের TLS পরিদর্শন সেটআপ ও ডিভাইসে যথাযথ বিশ্বাস প্রয়োজন। সার্টিফিকেট পিনিং বা আলাদা TLS বাস্তবায়ন ট্রাফিক লিসেনারে পৌঁছালেও সেই পরিদর্শন আটকাতে পারে।
সংযোগ প্রতিষ্ঠার পর WebSocket বিনিময় ও বার্তাগুলো খুঁজুন। Socket.IO অ্যাপ্লিকেশন থেকে আসা কেবল একটি পোলিং অনুরোধ দেখাই প্রমাণ নয় যে তার পরবর্তী WebSocket পরিবহন একই রুট ব্যবহার করেছে। এই স্পষ্ট ডিবাগিং কনফিগারেশনটি অ্যাপের অভীষ্ট ডেভেলপমেন্ট সেটআপের মধ্যে রাখুন।