From ed9c26b0120ef7b4899c9766f79abd7a60bac29d Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sat, 22 Nov 2025 18:01:49 +0800 Subject: [PATCH] Add user agent support for subscription updates https://github.com/2dust/v2rayNG/issues/5043 --- .../com/v2ray/ang/dto/SubscriptionItem.kt | 1 + .../com/v2ray/ang/handler/AngConfigManager.kt | 5 +++-- .../java/com/v2ray/ang/ui/SubEditActivity.kt | 2 ++ .../main/java/com/v2ray/ang/util/HttpUtil.kt | 9 +++++++-- .../src/main/res/layout/activity_sub_edit.xml | 19 +++++++++++++++++++ .../app/src/main/res/values-ar/strings.xml | 1 + .../app/src/main/res/values-bn/strings.xml | 1 + .../src/main/res/values-bqi-rIR/strings.xml | 1 + .../app/src/main/res/values-fa/strings.xml | 1 + .../app/src/main/res/values-ru/strings.xml | 1 + .../app/src/main/res/values-vi/strings.xml | 1 + .../src/main/res/values-zh-rCN/strings.xml | 1 + .../src/main/res/values-zh-rTW/strings.xml | 1 + V2rayNG/app/src/main/res/values/strings.xml | 1 + 14 files changed, 41 insertions(+), 4 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/SubscriptionItem.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/SubscriptionItem.kt index 8a38e6db..beac5147 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/SubscriptionItem.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/SubscriptionItem.kt @@ -13,5 +13,6 @@ data class SubscriptionItem( var filter: String? = null, var intelligentSelectionFilter: String? = null, var allowInsecureUrl: Boolean = false, + var userAgent: String? = null, ) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt index 320f3693..4e3619e6 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt @@ -425,17 +425,18 @@ object AngConfigManager { } } Log.i(AppConfig.TAG, url) + val userAgent = it.second.userAgent var configText = try { val httpPort = SettingsManager.getHttpPort() - HttpUtil.getUrlContentWithUserAgent(url, 15000, httpPort) + HttpUtil.getUrlContentWithUserAgent(url, userAgent, 15000, httpPort) } catch (e: Exception) { Log.e(AppConfig.ANG_PACKAGE, "Update subscription: proxy not ready or other error", e) "" } if (configText.isEmpty()) { configText = try { - HttpUtil.getUrlContentWithUserAgent(url) + HttpUtil.getUrlContentWithUserAgent(url, userAgent) } catch (e: Exception) { Log.e(AppConfig.TAG, "Update subscription: Failed to get URL content with user agent", e) "" diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubEditActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubEditActivity.kt index 46f2afc0..22fec0a5 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubEditActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubEditActivity.kt @@ -44,6 +44,7 @@ class SubEditActivity : BaseActivity() { private fun bindingServer(subItem: SubscriptionItem): Boolean { binding.etRemarks.text = Utils.getEditable(subItem.remarks) binding.etUrl.text = Utils.getEditable(subItem.url) + binding.etUserAgent.text = Utils.getEditable(subItem.userAgent) binding.etFilter.text = Utils.getEditable(subItem.filter) binding.etIntelligentSelectionFilter.text = Utils.getEditable(subItem.intelligentSelectionFilter) binding.chkEnable.isChecked = subItem.enabled @@ -76,6 +77,7 @@ class SubEditActivity : BaseActivity() { subItem.remarks = binding.etRemarks.text.toString() subItem.url = binding.etUrl.text.toString() + subItem.userAgent = binding.etUserAgent.text.toString() subItem.filter = binding.etFilter.text.toString() subItem.intelligentSelectionFilter = binding.etIntelligentSelectionFilter.text.toString() subItem.enabled = binding.chkEnable.isChecked diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/util/HttpUtil.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/util/HttpUtil.kt index f06c0426..6baf1d76 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/util/HttpUtil.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/util/HttpUtil.kt @@ -128,7 +128,7 @@ object HttpUtil { * @throws IOException If an I/O error occurs. */ @Throws(IOException::class) - fun getUrlContentWithUserAgent(url: String?, timeout: Int = 15000, httpPort: Int = 0): String { + fun getUrlContentWithUserAgent(url: String?, userAgent: String?, timeout: Int = 15000, httpPort: Int = 0): String { var currentUrl = url var redirects = 0 val maxRedirects = 3 @@ -136,7 +136,12 @@ object HttpUtil { while (redirects++ < maxRedirects) { if (currentUrl == null) continue val conn = createProxyConnection(currentUrl, httpPort, timeout, timeout) ?: continue - conn.setRequestProperty("User-agent", "v2rayNG/${BuildConfig.VERSION_NAME}") + val finalUserAgent = if (userAgent.isNullOrBlank()) { + "v2rayNG/${BuildConfig.VERSION_NAME}" + } else { + userAgent + } + conn.setRequestProperty("User-agent", finalUserAgent) conn.connect() val responseCode = conn.responseCode diff --git a/V2rayNG/app/src/main/res/layout/activity_sub_edit.xml b/V2rayNG/app/src/main/res/layout/activity_sub_edit.xml index baf3edb1..c3db6a96 100644 --- a/V2rayNG/app/src/main/res/layout/activity_sub_edit.xml +++ b/V2rayNG/app/src/main/res/layout/activity_sub_edit.xml @@ -74,6 +74,25 @@ + + + + + + + + إعداد مجموعة الاشتراك ملاحظات عنوان URL اختياري + User Agent Remarks regular filter تفعيل التحديث تفعيل التحديث التلقائي diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml index 43aea696..4361dda0 100644 --- a/V2rayNG/app/src/main/res/values-bn/strings.xml +++ b/V2rayNG/app/src/main/res/values-bn/strings.xml @@ -265,6 +265,7 @@ সাবস্ক্রিপশন গ্রুপ সেটিং মন্তব্য ঐচ্ছিক URL + User Agent Remarks regular filter আপডেট সক্রিয় করুন স্বয়ংক্রিয় আপডেট সক্রিয় করুন diff --git a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml index 0537ca66..3f8d1868 100644 --- a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml +++ b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml @@ -265,6 +265,7 @@ سامووا بونکۊ اشتراک نیشتنا نشۊوی اینترنتی اختیاری + User Agent نوم موستعار فیلتر فعال بیڌن ورۊ کردن فعال بیڌن ورۊ کردن خوتکار diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index 7d58e1ae..734784b6 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -262,6 +262,7 @@ تنظیمات گروه‌ اشتراک ملاحظات نشانی اینترنتی اختیاری + User Agent نام مستعار فیلتر فعال کردن به‌روزرسانی فعال سازی به‌روزرسانی خودکار diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index 4022154c..befc2421 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -264,6 +264,7 @@ Группы Название URL (необязательно) + User Agent Название фильтра Использовать обновление Использовать автообновление diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index 117de036..161f078f 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -265,6 +265,7 @@ Các gói đăng ký Tên gói đăng ký URL gói đăng ký + User Agent Remarks regular filter Sử dụng gói đăng ký này Bật tự động cập nhật diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml index 7eabc42c..71609414 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -262,6 +262,7 @@ 订阅分组设置 备注 可选地址 (url) + User Agent 别名正则过滤 启用更新 启用自动更新 diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml index e85dd489..77b85d7c 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -263,6 +263,7 @@ 訂閱分組設定 備註 可選位址(url) + User Agent 別名正規過濾 啟用更新 啟用自動更新 diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 90bbc067..39d00838 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -268,6 +268,7 @@ Subscription group setting remarks Optional URL + User Agent Remarks regular filter Enable update Enable automatic update