You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改PHP CURL代码实现多域名多Cookie获取并展示多JSON

实现多站点Cookie请求并整合JSON结果展示

要实现从不同站点使用不同Cookie获取多个JSON并在同一页面展示,可以通过配置化管理站点信息+封装通用请求函数的方式实现,既避免重复代码,又提升扩展性。以下是修改后的完整代码:

<?php
// 1. 定义多站点配置:每个站点包含目标URL和对应的Cookie
$sites = [
    [
        'url' => 'https://example.com/list',
        'cookie' => 'session=example'
    ],
    [
        'url' => 'https://another-site.com/data',
        'cookie' => 'auth_token=abc123; user_id=456'
    ],
    // 可继续添加更多站点配置
];

// 2. 封装通用的CURL请求函数
function fetchJsonWithCookie(string $url, string $cookie): mixed {
    $curl = curl_init();
    
    curl_setopt_array($curl, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30, // 设置合理超时,避免无限等待
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_HTTPHEADER => [
            "Cookie: $cookie",
            'Accept: application/json' // 明确请求JSON格式,部分站点需此头
        ],
    ]);

    $response = curl_exec($curl);
    $error = curl_error($curl);
    
    curl_close($curl);

    // 处理CURL请求错误
    if ($error) {
        return [
            'url' => $url,
            'status' => 'error',
            'message' => "CURL Error: $error"
        ];
    }

    // 校验并解析JSON响应
    $jsonData = json_decode($response, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        return [
            'url' => $url,
            'status' => 'invalid_json',
            'raw_response' => $response
        ];
    }

    return [
        'url' => $url,
        'status' => 'success',
        'data' => $jsonData
    ];
}

// 3. 循环处理所有站点,收集结果
$allResults = [];
foreach ($sites as $site) {
    $allResults[] = fetchJsonWithCookie($site['url'], $site['cookie']);
}

// 4. 格式化展示所有结果
echo '<pre>';
echo json_encode($allResults, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo '</pre>';
?>

关键说明

  • 配置化管理:所有站点的URL和Cookie集中在$sites数组,后续添加新站点只需追加元素,无需修改核心逻辑。
  • 函数封装:将重复的CURL请求逻辑封装成函数,统一处理错误和JSON解析,代码更简洁易维护。
  • 错误处理:增加了CURL错误捕获、JSON格式校验,返回结果会明确标记状态,方便排查问题。
  • 格式化输出:用JSON_PRETTY_PRINT让JSON结构更清晰,适合调试查看。

注意事项

  • 确保每个站点的Cookie有效,且目标站点允许你的服务器IP发起请求(部分站点有反爬或IP限制)。
  • 根据实际需求调整CURLOPT_TIMEOUT等参数,避免请求超时影响页面加载。
  • 如果部分站点需要GET请求,可在配置数组中添加method字段,在函数中动态设置CURLOPT_CUSTOMREQUEST的值。

内容的提问来源于stack exchange,提问作者world

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:23:11