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

PHP中file_get_contents设置User-Agent仍报403 Forbidden错误

问题根因

Browns Fashion 配置了多层反爬校验规则,仅添加老旧版本的User-Agent无法绕过拦截,返回403是必然结果:

  • 你当前代码里使用的Chrome/50.0是2016年发布的过时浏览器标识,反爬规则会直接将这类UA标记为爬虫流量
  • 真实浏览器发起请求时会携带完整的协议头,仅带UA的请求特征和正常用户访问差异极大,会被规则直接识别拦截
  • file_get_contents 本身的请求构造灵活度极低,无法模拟真实浏览器的TLS握手、Cookie携带、跳转跟随等行为,很容易触发反爬。
可落地的解决步骤

1. 替换请求方式,补全完整请求头

放弃file_get_contents,使用cURL扩展构造请求,补全真实浏览器的常规请求头,使用近期版本的浏览器UA,参考代码如下:

<?php
include('simple_html_dom.php');

$target = "https://www.brownsfashion.com/uk/shopping/jem-18k-yellow-gold-octogone-double-paved-ring-17648795";

$ch = curl_init($target);
$requestHeaders = [
    'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language: en-GB,en;q=0.9',
    'Accept-Encoding: gzip, deflate, br',
    'Referer: https://www.brownsfashion.com/uk',
    'Connection: keep-alive',
    'Upgrade-Insecure-Requests: 1',
    'Sec-Fetch-Dest: document',
    'Sec-Fetch-Mode: navigate',
    'Sec-Fetch-Site: same-origin',
    'Sec-Fetch-User: ?1'
];

curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => $requestHeaders,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_ENCODING => '',
    CURLOPT_TIMEOUT => 15,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2TLS
]);

$resp = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($status === 200) {
    $html = str_get_html($resp);
    // 提取页面标题
    $pageTitle = $html->find('title', 0)->plaintext;
    echo $pageTitle;
} else {
    echo "请求异常,状态码:" . $status;
}
?>

2. 仍返回403时的调整方案

如果补全请求头后依然被拦截,说明触发了更严格的校验规则,按以下顺序调整:

  • 先请求站点首页,通过cURL的Cookie jar功能存储服务端下发的合法Cookie,再携带该Cookie请求商品详情页
  • 降低请求频率,单IP请求间隔控制在3-5秒以上,短时间高频访问会直接被IP封禁
  • 若站点启用了JS动态校验(如Cloudflare 5秒盾),基础HTTP请求无法直接绕过,需要使用Playwright、Puppeteer这类无头浏览器工具,模拟真实浏览器完成JS渲染、校验流程后再提取页面内容。

注意:爬取站点内容前请先确认目标站点的服务条款与robots规则,合规获取公开数据,避免违规访问带来的相关风险。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:51:31