From bb19a1d47c6e30f34965bc1fc18957b5869166d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=BF=97?= Date: Tue, 20 Jan 2026 16:26:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/Crawler.php | 29 ++++++++++++----------------- app/service/CrawlerService.php | 26 ++++++++++---------------- view/crawler/index.html | 11 ----------- 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/app/controller/Crawler.php b/app/controller/Crawler.php index 98c17e5..0d8533a 100644 --- a/app/controller/Crawler.php +++ b/app/controller/Crawler.php @@ -127,42 +127,37 @@ class Crawler extends BaseController */ private function buildCookieString(array|string $cookies): string { - // 如果直接传入原始Cookie字符串,优先使用(支持多重同名键) + // 如果直接传入原始Cookie字符串,优先使用 if (is_string($cookies)) { return trim($cookies); } - // 只保留用户填写的Cookie,去重并优先保留后者(防止重复JSESSIONID) + // 只保留用户填写的Cookie,若同名键多值则取最后一个(单JSESSIONID场景) $cookieData = $cookies['请求 Cookie'] ?? $cookies; - $normalized = []; // 同名键保留多值 + $normalized = []; foreach ($cookieData as $key => $value) { $k = trim((string)$key); if ($k === '') { continue; } - $vals = is_array($value) ? $value : [$value]; - foreach ($vals as $v) { - $v = trim((string)$v); - if ($v === '') { - continue; - } - $normalized[$k][] = $v; // 多值按输入顺序保留 + $v = is_array($value) ? end($value) : $value; + $v = trim((string)$v); + if ($v === '') { + continue; } + // 后面的值覆盖前面的值,确保单值 + $normalized[$k] = $v; } // 将 JSESSIONID 放在最前(如果存在),其余按键名顺序 $parts = []; if (isset($normalized['JSESSIONID'])) { - foreach ($normalized['JSESSIONID'] as $v) { - $parts[] = 'JSESSIONID=' . $v; - } + $parts[] = 'JSESSIONID=' . $normalized['JSESSIONID']; unset($normalized['JSESSIONID']); } - foreach ($normalized as $k => $vArr) { - foreach ($vArr as $v) { - $parts[] = $k . '=' . $v; - } + foreach ($normalized as $k => $v) { + $parts[] = $k . '=' . $v; } return implode('; ', $parts); diff --git a/app/service/CrawlerService.php b/app/service/CrawlerService.php index 35e2ef7..74ddc00 100644 --- a/app/service/CrawlerService.php +++ b/app/service/CrawlerService.php @@ -194,12 +194,12 @@ class CrawlerService */ private function buildCookieString(array|string $cookies): string { - // 如果直接传入原始Cookie字符串,优先使用(支持多重同名键) + // 如果直接传入原始Cookie字符串,优先使用 if (is_string($cookies)) { return trim($cookies); } - // 只保留用户填写的Cookie,支持同名键多值 + // 只保留用户填写的Cookie,若同名键多值则取最后一个(单JSESSIONID场景) $cookieData = $cookies['请求 Cookie'] ?? $cookies; $normalized = []; @@ -208,28 +208,22 @@ class CrawlerService if ($k === '') { continue; } - $vals = is_array($value) ? $value : [$value]; - foreach ($vals as $v) { - $v = trim((string)$v); - if ($v === '') { - continue; - } - $normalized[$k][] = $v; + $v = is_array($value) ? end($value) : $value; + $v = trim((string)$v); + if ($v === '') { + continue; } + $normalized[$k] = $v; } // 将 JSESSIONID 放在最前(如果存在),其余按键名顺序 $parts = []; if (isset($normalized['JSESSIONID'])) { - foreach ($normalized['JSESSIONID'] as $v) { - $parts[] = 'JSESSIONID=' . $v; - } + $parts[] = 'JSESSIONID=' . $normalized['JSESSIONID']; unset($normalized['JSESSIONID']); } - foreach ($normalized as $k => $vArr) { - foreach ($vArr as $v) { - $parts[] = $k . '=' . $v; - } + foreach ($normalized as $k => $v) { + $parts[] = $k . '=' . $v; } return implode('; ', $parts); diff --git a/view/crawler/index.html b/view/crawler/index.html index cc33e17..e7684c6 100644 --- a/view/crawler/index.html +++ b/view/crawler/index.html @@ -255,12 +255,6 @@ 从浏览器开发者工具中复制SERVERID的值 -
- - - 如果填写本项,将优先使用整行 Cookie(支持多个JSESSIONID) -
-
@@ -450,11 +444,6 @@ // 组装Cookie数据 function buildCookiesPayload(messageContainerId) { - const rawLine = document.getElementById('cookie-raw').value.trim(); - if (rawLine) { - return rawLine; - } - const jsessionid = document.getElementById('cookie-jsessionid').value.trim(); const serverid = document.getElementById('cookie-serverid').value.trim();