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

PHP Curl请求目标URL返回结果与浏览器不一致的问题求助

问题分析与解决方案

我之前处理过不少类似的反爬场景,这种Curl返回结果和浏览器不一致的情况,大多是因为网站的反爬机制识别出你的请求不是来自真实浏览器,直接返回了假的空结果。咱们一步步来排查和修复:

核心原因

  1. 关键请求头缺失:浏览器发送请求时会带上一堆标识自身的头信息(比如语言偏好、内容类型支持等),你的Curl只设置了User-Agent和Referer,缺少了网站用来验证请求合法性的核心字段。
  2. User-Agent格式异常:你设置的UA把Firefox、Chrome的信息混在一起了,这种拼接出来的UA很容易被反爬系统判定为异常请求。
  3. Cookie初始化问题:虽然你配置了CookieJar,但第一次请求时没有任何初始Cookie,而浏览器访问时会自动接收网站设置的会话Cookie,这也可能导致网站拒绝提供真实结果。

调整后的Curl配置

直接给你修改好的代码,我会标注关键改动:

// 初始化Curl句柄
$ch = curl_init();
$cookies = 'cookies.txt'; // 确保这个文件有读写权限

// 目标URL
curl_setopt($ch, CURLOPT_URL, 'https://www.segundamano.mx/anuncios/ciudad-de-mexico/alvaro-obregon/florida/renta-inmuebles/departamentos?precio=0-10000');

// Cookie处理:自动保存和加载Cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);

// 基础配置
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 建议开启SSL验证(如果网站证书没问题的话),关闭有安全风险
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

// 关键改动1:使用真实单一的Chrome User-Agent
$uagent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36';
curl_setopt($ch, CURLOPT_USERAGENT, $uagent);

// 关键改动2:添加浏览器常用的请求头
$headers = array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language: es-MX,es;q=0.8,en-US;q=0.5,en;q=0.3', // 匹配网站的西班牙语环境
    'Accept-Encoding: gzip, deflate, br',
    'Connection: keep-alive',
    'Upgrade-Insecure-Requests: 1'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// 保留Referer和自动Referer设置
curl_setopt($ch, CURLOPT_REFERER, 'https://www.google.com');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);

// 执行请求并获取结果
$response = curl_exec($ch);
curl_close($ch);

// 可以打印结果看看
echo $response;

额外注意事项

  • 确保cookies.txt文件有读写权限,否则Curl无法保存Cookie,后续请求还是会被拦截。
  • 如果还是不行,可以先模拟请求网站的首页(https://www.segundamano.mx/),获取初始会话Cookie后,再请求目标搜索页,这样更贴近浏览器的访问流程。
  • 不要频繁发送请求,避免触发网站的频率限制,必要时可以添加随机延迟。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:05:46