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 ପରିବହନ ସେହି ମାର୍ଗ ବ୍ୟବହାର କରିଥିବାର ପ୍ରମାଣ ନୁହେଁ। ଏହି ସ୍ପଷ୍ଟ ଡିବଗିଂ ବିନ୍ୟାସକୁ ଆପ୍ର ଉଦ୍ଦିଷ୍ଟ ବିକାଶ ପରିବେଶ ମଧ୍ୟରେ ରଖନ୍ତୁ।