php - 如何修复:windows 与 android 问题上的 curl 返回
问题描述
我在 windows 和 android 上使用 curl php。在 windows PHP 版本 5.6.39 / curl 7.59.0 在 android PHP 版本 5.6.35 / curl 7.34.0
我使用 php curl 从网站中提取视频链接。我的代码是:
$ua=$_SERVER['HTTP_USER_AGENT'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $l);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$html = curl_exec($ch);
curl_close($ch);
结果我有
$video_link_windows="http://....../video.mp4";
$video_link_android="http://...../video.mp4";
这一直有效到 2 周前。现在在windows上生成的链接在windows和android上都可以,但是在android上生成的链接不再有效。我们已经在 3 个站点上遇到过这个问题。
我试图修改“用户代理”,我添加了“cookie”,但似乎没有任何效果。我试过没有
curl_setopt($ ch, CURLOPT_FOLLOWLOCATION, 1);
或添加 curl_setopt 标头
curl_setopt($ ch, CURLOPT_HTTPHEADER, $head)
生成的链接似乎相同,但不起作用。
但是,如果我使用而不是 curl 我使用 file_get_contents
$html=file_get_contents($l);
一切都恢复正常。
有什么问题,或者我应该在 curl 代码中添加什么?
解决方案
推荐阅读
- r - if 函数中的语句未执行
- flutter - Flutter:如何从 api 获取数据一次并用于不同的屏幕
- ios - Flutter Web 应用程序 - 音频播放器在 ios 移动站点上崩溃,但在桌面站点上运行
- android - 如何将相同的跨度应用于android中的多个字符串?
- flutter - 如何从 objectBox 预填充数据库迁移数据和方案?
- clickhouse - 在 ClickHouse 中训练 catboost 模型
- django - Django - 将模型字段从浮点数迁移到浮点数数组
- flutter - Flutter - DropdownMenuItem 中的文本溢出
- apache - Openwhisk Setuptools Geetting 405 Method not allowed
- python - Matplotlib 图表显示的刻度少于请求的刻度