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

使用PHP+Guzzle请求Facebook.com时出现502 Bad Gateway错误求助

问题:使用Guzzle请求Facebook视频链接返回502 Bad Gateway,请求YouTube正常

我用PHP和Guzzle发送GET请求时,请求YouTube视频链接能正常返回200状态码,但请求Facebook的视频链接时,服务器返回502 Bad Gateway错误。

我的代码如下:

$client = new GuzzleHttp\Client();
$res = $client->request('GET', $url, [
    'headers' => ['User-Agent' => null]
]);
$code = $res->getStatusCode();

测试的URL:

  • https://www.youtube.com/watch?v=skSPHfkIMow:正常,返回200
  • https://www.facebook.com/watch/?v=492187276105133&ref=sharing:报错,显示502 Bad Gateway

请问Facebook是否会拦截这类请求?


回答

Facebook确实会拦截这类请求,你的代码里设置User-Agent: null是核心问题之一。

主流网站大多有反爬机制,空User-Agent会被直接判定为非浏览器发起的请求,大概率会被拦截或返回错误状态码。YouTube在这方面的验证相对宽松,所以空User-Agent暂时能通过,但这不代表这种写法是合规的。

至于502 Bad Gateway,看起来是网关错误,但实际很多时候是Facebook反爬系统拒绝请求后,通过网关返回的伪装状态,并非真正的服务器网关故障。

给你两个解决方向:

  1. 给请求设置模拟浏览器的User-Agent,比如Chrome的标识:
$client = new GuzzleHttp\Client();
$res = $client->request('GET', $url, [
    'headers' => [
        'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
    ]
]);
$code = $res->getStatusCode();
  1. 即使设置了User-Agent,Facebook还有可能通过Cookie、IP频率限制等方式拦截请求。如果后续仍有问题,建议使用Facebook官方API访问视频内容,这才是合规且稳定的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:20:27