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

使用PHP cURL登录站点后跳转子域名获取内容失败求助

问题根因与修复方案

核心问题点

  • Cookie未配置跨子域名生效,登录后获取的Cookie仅作用于当前登录域名,子域名请求时未携带认证信息
  • 未开启cURL自动跟随跳转,若站点登录接口返回302跳转,登录流程未执行完成,无法拿到有效认证Cookie
  • Cookie文件使用相对路径/简写路径,PHP读写权限不足导致Cookie未正常存储/读取
  • POST参数手动拼接未做编码,参数含特殊字符时会导致请求异常
  • 未携带常规请求头,被站点反爬策略拦截判定为非法请求

修复后代码

<?php
$username = 'user';
$password = 'pass';
$loginUrl = 'https://主站域名/login'; // 替换为实际登录接口地址
$targetUrl = 'https://子域名.主站域名/statistics'; // 替换为实际要抓取的子域名地址
// Cookie文件必须用绝对路径,确保PHP有读写权限
$cookieFile = __DIR__ . '/cookie.txt';

$ch = curl_init();

// 通用基础配置
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 开启自动跟随302/301跳转
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
// 配置跨子域名Cookie生效,替换为你的主域名,前面加.匹配所有子域名
curl_setopt($ch, CURLOPT_COOKIE, 'domain=.你的主域名.com; path=/');
// 模拟浏览器请求头,避免被反爬拦截
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
curl_setopt($ch, CURLOPT_REFERER, $loginUrl);
// 关闭SSL校验,若站点证书正常可删除这两行
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

// 执行登录请求
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
// POST参数用数组传递,cURL自动处理编码
curl_setopt($ch, CURLOPT_POSTFIELDS, [
    'user' => $username,
    'password' => $password
]);
$loginRes = curl_exec($ch);

// 可选:打印登录返回结果,校验是否登录成功
// var_dump($loginRes);

// 请求子域名目标页面
curl_setopt($ch, CURLOPT_URL, $targetUrl);
curl_setopt($ch, CURLOPT_HTTPGET, 1); // 切换为GET请求
$content = curl_exec($ch);

curl_close($ch);

// 写入文件用绝对路径
file_put_contents(__DIR__ . '/file.txt', $content);
?>

额外注意事项

  • 先确认登录接口的参数名是否正确,很多站点登录参数不是user和password,需要按实际表单参数名替换
  • 部分站点登录会要求携带CSRF Token,需要先请求登录页面获取Token后再提交登录请求
  • 若子域名和主域名的站点是独立认证体系,需要单独针对子域名做登录处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:21:00