修改BUG

This commit is contained in:
杨志
2026-01-20 16:15:46 +08:00
parent dd0f9e9b49
commit 76cdf86414
3 changed files with 96 additions and 27 deletions

View File

@@ -192,22 +192,47 @@ class CrawlerService
* @param array $cookies Cookie数组
* @return string
*/
private function buildCookieString(array $cookies): string
private function buildCookieString(array|string $cookies): string
{
$cookieArray = [];
// 处理嵌套的Cookie结构
if (isset($cookies['请求 Cookie'])) {
$cookieData = $cookies['请求 Cookie'];
} else {
$cookieData = $cookies;
// 如果直接传入原始Cookie字符串优先使用支持多重同名键
if (is_string($cookies)) {
return trim($cookies);
}
// 只保留用户填写的Cookie支持同名键多值
$cookieData = $cookies['请求 Cookie'] ?? $cookies;
$normalized = [];
foreach ($cookieData as $key => $value) {
$cookieArray[] = $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;
}
}
return implode('; ', $cookieArray);
// 将 JSESSIONID 放在最前(如果存在),其余按键名顺序
$parts = [];
if (isset($normalized['JSESSIONID'])) {
foreach ($normalized['JSESSIONID'] as $v) {
$parts[] = 'JSESSIONID=' . $v;
}
unset($normalized['JSESSIONID']);
}
foreach ($normalized as $k => $vArr) {
foreach ($vArr as $v) {
$parts[] = $k . '=' . $v;
}
}
return implode('; ', $parts);
}
/**