升级
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -255,12 +255,6 @@
|
||||
<small>从浏览器开发者工具中复制SERVERID的值</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="cookie-raw">整行 Cookie(可选,直接粘贴浏览器抓到的整行 Cookie,会优先使用):</label>
|
||||
<textarea id="cookie-raw" placeholder="JSESSIONID=...; JSESSIONID=...; SERVERID=..."></textarea>
|
||||
<small>如果填写本项,将优先使用整行 Cookie(支持多个JSESSIONID)</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="examid">examid:</label>
|
||||
<input type="text" id="examid" placeholder="796a0fa25f7c9ffb">
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user