From 667bd9bbe8e5408edf2e9b26bb39db5075ac4682 Mon Sep 17 00:00:00 2001 From: xiaji Date: Tue, 9 Jun 2026 20:04:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Jsoup=E8=AF=B7=E6=B1=82=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0User-Agent=E5=A4=B4=EF=BC=8C=E9=98=B2=E6=AD=A2tvcat?= =?UTF-8?q?=E5=8F=8D=E7=88=AC=E6=8B=A6=E6=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/videoapp/tv/engine/BaseSourceHandler.kt | 13 +++++++++++-- .../com/videoapp/tv/engine/tvcat/TvcatHandler.kt | 5 ++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/videoapp/tv/engine/BaseSourceHandler.kt b/app/src/main/java/com/videoapp/tv/engine/BaseSourceHandler.kt index 55273f1..f3f2c5d 100644 --- a/app/src/main/java/com/videoapp/tv/engine/BaseSourceHandler.kt +++ b/app/src/main/java/com/videoapp/tv/engine/BaseSourceHandler.kt @@ -24,6 +24,9 @@ abstract class BaseSourceHandler( val url = "${baseUrl.trimEnd('/')}/${config.searchPath.trimStart('/')}" val connection: Connection = Jsoup.connect(url) .data(config.keywordParam, keyword) + .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") + .header("Accept", "text/html,application/xhtml+xml") + .header("Accept-Language", "zh-CN,zh;q=0.9") .timeout(15000) config.extraParams.forEach { (key, value) -> @@ -83,7 +86,10 @@ abstract class BaseSourceHandler( override suspend fun extractVideos(detailUrl: String): List = withContext(Dispatchers.IO) { - val doc = Jsoup.connect(detailUrl).timeout(15000).get() + val doc = Jsoup.connect(detailUrl) + .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") + .header("Accept-Language", "zh-CN,zh;q=0.9") + .timeout(15000).get() val sourceTabs = doc.select(config.sourceSelector) val sourceNames = sourceTabs.map { it.text().trim() }.filter { it.isNotEmpty() } @@ -115,7 +121,10 @@ abstract class BaseSourceHandler( override suspend fun resolvePlayUrl(playUrl: String): Pair = withContext(Dispatchers.IO) { try { - val doc = Jsoup.connect(playUrl).timeout(15000).get() + val doc = Jsoup.connect(playUrl) + .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") + .header("Accept-Language", "zh-CN,zh;q=0.9") + .timeout(15000).get() val iframeEl = doc.selectFirst(config.iframeSelector) var iframeUrl = iframeEl?.attr("src") diff --git a/app/src/main/java/com/videoapp/tv/engine/tvcat/TvcatHandler.kt b/app/src/main/java/com/videoapp/tv/engine/tvcat/TvcatHandler.kt index 1165640..3ad6a55 100644 --- a/app/src/main/java/com/videoapp/tv/engine/tvcat/TvcatHandler.kt +++ b/app/src/main/java/com/videoapp/tv/engine/tvcat/TvcatHandler.kt @@ -35,7 +35,10 @@ class TvcatHandler : BaseSourceHandler( ) { override suspend fun extractVideos(detailUrl: String): List = withContext(Dispatchers.IO) { - val doc = Jsoup.connect(detailUrl).timeout(15000).get() + val doc = Jsoup.connect(detailUrl) + .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") + .header("Accept-Language", "zh-CN,zh;q=0.9") + .timeout(15000).get() val episodes = doc.select("li.list-inline-item a").mapNotNull { ep -> val title = ep.text().trim() val href = ep.attr("href").trim()