সরলীকৃত স্থানীয় প্রক্সি পরিচালনার জন্য MobileProxy লাইব্রেরিতে ফোকাস করে, এই নথিটি আপনার মোবাইল অ্যাপ্লিকেশনগুলিতে কিভাবে Outline SDK সংহত করতে হয় তার রূপরেখা দেয়৷
MobileProxy হল একটি Go-ভিত্তিক লাইব্রেরি যা মোবাইল অ্যাপে প্রক্সি কার্যকারিতাগুলির একীকরণকে স্ট্রীমলাইন করার জন্য ডিজাইন করা হয়েছে৷ এটি মোবাইল লাইব্রেরি তৈরি করতে Go Mobile ব্যবহার করে, আপনাকে স্থানীয় প্রক্সির মাধ্যমে ট্র্যাফিক রুট করতে আপনার অ্যাপের নেটওয়ার্কিং লাইব্রেরিগুলিকে কনফিগার করতে সক্ষম করে৷
MobileProxy ছাড়া অ্যাপ

MobileProxy সহ অ্যাপ

ধাপ 1: MobileProxy মোবাইল লাইব্রেরি তৈরি করা
Android এবং iOS এর জন্য লাইব্রেরিতে Go কোড কম্পাইল করতে gomobile ব্যবহার করুন।
আউটলাইন SDK সংগ্রহস্থল ক্লোন করুন:
git clone https://github.com/Jigsaw-Code/outline-sdk.git cd outline-sdk/xgo buildদিয়ে গো মোবাইল বাইনারি তৈরি করুন:go build -o "$(pwd)/out/" golang.org/x/mobile/cmd/gomobile golang.org/x/mobile/cmd/gobindPsiphon সমর্থন যোগ করা হচ্ছে
আপনি এই অতিরিক্ত পদক্ষেপগুলি অনুসরণ করে Psiphon নেটওয়ার্ক ব্যবহার করার জন্য সমর্থন যোগ করতে পারেন:
- একটি কনফিগারেশন পেতে Psiphon টিমের সাথে যোগাযোগ করুন যা আপনাকে তাদের নেটওয়ার্কে অ্যাক্সেস দেয়। এটি একটি চুক্তি প্রয়োজন হতে পারে.
- আপনার
SmartDialerকনফিগারেশনেরfallbackবিভাগে প্রাপ্ত Psiphon কনফিগারেশন যোগ করুন। -tags psiphonপতাকা ব্যবহার করে মোবাইল প্রক্সি তৈরি করুন:go build -tags psiphon -o "$(pwd)/out/" golang.org/x/mobile/cmd/gomobile golang.org/x/mobile/cmd/gobindআপনার নেটিভ কোডে স্মার্ট ডায়লারের সাথে Psiphon নিবন্ধন করুন।
-tags psiphonপতাকা প্রয়োজন কারণ Psiphon কোডবেস GPL-এর অধীনে লাইসেন্সপ্রাপ্ত, যা আপনার নিজের কোডের উপর লাইসেন্স বিধিনিষেধ আরোপ করতে পারে। আপনি তাদের কাছ থেকে একটি বিশেষ লাইসেন্স পাওয়ার কথা বিবেচনা করতে পারেন।মোবাইল লাইব্রেরি তৈরি করুন এবং সেগুলিকে আপনার প্রকল্পে যুক্ত করুন:
অ্যান্ড্রয়েড
PATH="$(pwd)/out:$PATH" gomobile bind -ldflags='-s -w' -target=android -androidapi=21 -o "$(pwd)/out/mobileproxy.aar" github.com/Jigsaw-Code/outline-sdk/x/mobileproxyঅ্যান্ড্রয়েড স্টুডিওতে তৈরি করা
out/mobileproxy.aarবান্ডেল আমদানি করতে ফাইল > ইমপোর্ট প্রজেক্ট… নির্বাচন করুন। আরও সাহায্যের জন্য দেখুন Go Mobile এর বিল্ডিং এবং Android এ স্থাপন করা ।iOS
PATH="$(pwd)/out:$PATH" gomobile bind -ldflags='-s -w' -target=ios -iosversion=11.0 -o "$(pwd)/out/mobileproxy.xcframework" github.com/Jigsaw-Code/outline-sdk/x/mobileproxyXcode প্রকল্পে
out/mobileproxy.xcframeworkবান্ডেল টেনে আনুন। আরও সাহায্যের জন্য Go Mobile এর বিল্ডিং এবং iOS-এ স্থাপন করা দেখুন।
ধাপ 2: MobileProxy চালান
- আপনার অ্যাপের রানটাইমের মধ্যে
MobileProxyস্থানীয় প্রক্সি চালু করুন এবং শুরু করুন। গতিশীল কৌশল নির্বাচনের জন্য আপনি একটি স্ট্যাটিক পরিবহন কনফিগারেশন বা স্মার্ট প্রক্সি ব্যবহার করতে পারেন।
স্ট্যাটিক ট্রান্সপোর্ট কনফিগারেশন : একটি স্থানীয় ঠিকানা এবং পরিবহন কনফিগারেশন সহ
RunProxyফাংশন ব্যবহার করুন।অ্যান্ড্রয়েড
import mobileproxy.* val dialer = StreamDialer("split:3") // Use port zero to let the system pick an open port for you. val proxy = Mobileproxy.runProxy("localhost:0", dialer) // Configure your networking library using proxy.host() and proxy.port() or proxy.address(). // ... // Stop running the proxy. proxy.stop()iOS
import Mobileproxy let dialer = MobileproxyStreamDialer("split:3") // Use port zero to let the system pick an open port for you. let proxy = MobileproxyRunProxy("localhost:0", dialer) // Configure your networking library using proxy.host() and proxy.port() or proxy.address(). // ... // Stop running the proxy. proxy.stop()স্মার্ট প্রক্সি : স্মার্ট প্রক্সি নির্দিষ্ট পরীক্ষার ডোমেনের উপর ভিত্তি করে গতিশীলভাবে DNS এবং TLS কৌশল নির্বাচন করে। আপনাকে YAML ফরম্যাটে কনফিগারেশন কৌশল উল্লেখ করতে হবে ( উদাহরণ )।
অ্যান্ড্রয়েড
val testDomains = Mobileproxy.newListFromLines("www.youtube.com\ni.ytimg.com") val strategiesConfig = "..." // Config YAML. val dialer = Mobileproxy.newSmartStreamDialer(testDomains, strategiesConfig, Mobileproxy.newStderrLogWriter()) // Use port zero to let the system pick an open port for you. val proxy = Mobileproxy.runProxy("localhost:0", dialer) // Configure your networking library using proxy.host() and proxy.port() or proxy.address(). // ... // Stop running the proxy. proxy.stop()iOS
import Mobileproxy var dialerError: NSError? let testDomains = MobileproxyNewListFromLines("www.youtube.com\ni.ytimg.com") let strategiesConfig = "..." // Config YAML. let dialer = MobileproxyNewSmartStreamDialer( testDomains, strategiesConfig, MobileproxyNewStderrLogWriter(), &dialerError ) var proxyError: NSError? // Use port zero to let the system pick an open port for you. MobileproxyRunProxy("localhost:0", dialer, &proxyError) // Configure your networking library using proxy.host() and proxy.port() or proxy.address(). // ... // Stop running the proxy. proxy.stop()
- তারপর, আপনি যদি psiphon ব্যবহার করেন, তাহলে আপনার নেটিভ কোডে আপনার স্মার্ট ডায়ালার বিকল্পগুলির সাথে Psiphon নিবন্ধন করুন৷
অ্যান্ড্রয়েড:
import mobileproxy.Mobileproxy
import psiphon.Psiphon
// ...
val testDomains = Mobileproxy.newListFromLines("www.google.com\ni.ytimg.com")
// You can get a Psiphon config from the Psiphon team at sponsor@psiphon.ca.
val psiphonConfig = "<YOUR_PSIPHON_CONFIG_JSON_HERE>"
val config = """
dns:
- {system: {}}
tls:
- ""
fallback:
- {"psiphon": \(psiphonConfig)}
"""
val options = Mobileproxy.newSmartDialerOptions(testDomains, config)
// Register Psiphon
Psiphon.registerConfig(options, "psiphon")
try {
// Create the dialer
val dialer = options.newStreamDialer()
// ... use the dialer
} catch (e: Exception) {
// Handle error
}
iOS:
import Mobileproxy
import Psiphon
// ...
let testDomains = MobileproxyNewListFromLines("www.google.com\ni.ytimg.com")
// You can get a Psiphon config from the Psiphon team at sponsor@psiphon.ca.
let psiphonConfig = "<YOUR_PSIPHON_CONFIG_JSON_HERE>"
let config = """
dns:
- {system: {}}
tls:
- ""
fallback:
- {"psiphon": \(psiphonConfig)}
"""
let options = MobileproxyNewSmartDialerOptions(testDomains, config)
// Register Psiphon
PsiphonRegisterConfig(options, "psiphon")
do {
// Create the dialer
let dialer = try options.newStreamDialer()
// ... use the dialer
} catch {
// Handle error
}
ধাপ 3: HTTP ক্লায়েন্ট এবং নেটওয়ার্কিং লাইব্রেরি কনফিগার করুন
স্থানীয় প্রক্সি ঠিকানা এবং পোর্ট ব্যবহার করতে আপনার নেটওয়ার্কিং লাইব্রেরি কনফিগার করুন।
ডার্ট/ফ্লাটার HttpClient
HttpClient.findProxy দিয়ে প্রক্সি সেট করুন।
HttpClient client = HttpClient();
client.findProxy = (Uri uri) {
return "PROXY " + proxy.address();
};
OkHttp (Android)
OkHttpClient.Builder.proxy দিয়ে প্রক্সি সেট করুন।
val proxyConfig = Proxy(Proxy.Type.HTTP, InetSocketAddress(proxy.host(), proxy.port()))
val client = OkHttpClient.Builder().proxy(proxyConfig).build()
JVM (জাভা, কোটলিন)
সিস্টেম বৈশিষ্ট্যগুলির সাথে ব্যবহার করার জন্য প্রক্সি কনফিগার করুন:
System.setProperty("http.proxyHost", proxy.host())
System.setProperty("http.proxyPort", String.valueOf(proxy.port()))
System.setProperty("https.proxyHost", proxy.host())
System.setProperty("https.proxyPort", String.valueOf(proxy.port()))
অ্যান্ড্রয়েড ওয়েব ভিউ
androidx.webview লাইব্রেরির মাধ্যমে আপনার অ্যাপ্লিকেশনের সমস্ত ওয়েব ভিউতে একটি প্রক্সি কনফিগারেশন প্রয়োগ করুন:
ProxyController.getInstance()
.setProxyOverride(
ProxyConfig.Builder()
.addProxyRule(this.proxy!!.address())
.build(),
{}, // execution context for the following callback - do anything needed here once the proxy is applied, like refreshing web views
{} // callback to be called once the ProxyConfig is applied
)
iOS ওয়েব ভিউ
iOS 17 অনুযায়ী, আপনি WKWebView এর WKWebsiteDataStore সম্পত্তি ব্যবহার করে একটি প্রক্সি কনফিগারেশন যোগ করতে পারেন:
let configuration = WKWebViewConfiguration()
let endpoint = NWEndpoint.hostPort(host: NWEndpoint.Host(proxyHost), port: NWEndpoint.Port(proxyPort)!)
let proxyConfig = ProxyConfiguration.init(httpCONNECTProxy: endpoint)
let websiteDataStore = WKWebsiteDataStore.default()
websiteDataStore.proxyConfigurations = [proxyConfig]
let webview = WKWebView(configuration: configuration)
উন্নত: একটি কাস্টম মোবাইল লাইব্রেরি তৈরি করুন
উন্নত ব্যবহারের ক্ষেত্রে, আপনি নিজের মোবাইল লাইব্রেরি তৈরি করতে পারেন:
- একটি গো লাইব্রেরি তৈরি করুন : প্রয়োজনীয় SDK কার্যকারিতাগুলি মোড়ানো একটি গো প্যাকেজ তৈরি করুন৷
- মোবাইল লাইব্রেরি তৈরি করুন : Android Archives (AAR) এবং Apple Frameworks তৈরি করতে
gomobile bindব্যবহার করুন। উদাহরণ: - আপনার অ্যাপে একীভূত করুন : আপনার মোবাইল অ্যাপ্লিকেশনে জেনারেট করা লাইব্রেরি যোগ করুন।