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

PHP cURL无法获取目标页面,返回Cookie设置页求助

问题分析与解决方案

核心问题

  1. 错误的请求方式:你用POST请求提交了不必要的表单数据,但目标页面是通过GET访问的,这会导致服务器返回异常的Cookie设置页面。
  2. Cookie授权未处理:该网站有Cookie同意机制,必须先完成Cookie授权请求,获取有效Cookie后才能正常访问目标页面。

修正后的代码

<?php
// Cookie存储文件路径
$cookie_jar = "cookies.txt";
// 网站Cookie同意接口(可通过浏览器开发者工具确认实际地址和参数)
$cookie_consent_url = "https://arbetsformedlingen.se/platsbanken/api/cookie-consent";
// 目标职位页面地址
$target_url = "https://arbetsformedlingen.se/platsbanken/annonser/26981350";

// 第一步:发送Cookie同意请求,获取有效授权Cookie
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $cookie_consent_url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36");
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
// 提交Cookie同意参数(模拟用户选择"同意所有Cookie")
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'consent' => 'all',
    'version' => '2'
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/x-www-form-urlencoded',
    'Accept: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);

// 第二步:使用授权Cookie访问目标页面
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36");
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 添加模拟浏览器的请求头,避免被反爬拦截
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language: sv-SE,sv;q=0.8,en-US;q=0.5,en;q=0.3',
    'Connection: keep-alive',
    'Upgrade-Insecure-Requests: 1'
]);

$content = curl_exec($ch);
// 捕获curl请求错误
if(curl_errno($ch)) {
    echo '请求错误: ' . curl_error($ch);
}
curl_close($ch);

echo $content;
?>

关键说明

  • Cookie同意接口:如果代码中的Cookie同意地址或参数无效,可通过浏览器F12开发者工具,查看用户点击"同意Cookie"时发送的实际请求,替换对应参数和地址。
  • 请求头模拟:补充完整的请求头,让请求更接近真实浏览器行为,降低被反爬机制识别的概率。
  • 请求方式修正:目标页面使用GET请求,去除原代码中不必要的POST和表单数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:45:42