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

PHP无法从JS/ASPX加载的URL下载CSV文件,求解决方案

解决ASPX页面CSV文件的PHP下载问题

问题描述

目标URL http://www.tsetmc.com/tsev2/data/ClientTypeAll.aspx?h=0&r=0 在浏览器中打开可自动触发CSV文件下载,但使用file_get_contents等常规PHP方法无法成功获取并保存文件。尝试过的无效代码如下:

<?php
$file = fopen('http://www.tsetmc.com/tsev2/data/ClientTypeAll.aspx?h=0&r=0');
$file = file_get_contents('http://www.tsetmc.com/tsev2/data/ClientTypeAll.aspx?h=0&r=0');
file_put_contents('ClientTypeAll.csv', $file);
?>

解决方案

网站可能通过验证请求头、会话Cookie或重定向限制非浏览器请求,使用CURL模拟完整的浏览器请求即可解决:

<?php
// 目标URL
$url = 'http://www.tsetmc.com/tsev2/data/ClientTypeAll.aspx?h=0&r=0';
// 本地保存路径
$savePath = 'ClientTypeAll.csv';

// 初始化CURL会话
$ch = curl_init($url);

// 配置CURL选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 模拟浏览器User-Agent,避免被识别为非浏览器请求
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');
// 自动跟随重定向(部分ASPX页面会先跳转再返回文件)
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// 保存并复用Cookie,适配ASPX的会话验证逻辑
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

// 执行请求获取文件内容
$content = curl_exec($ch);

// 检查请求错误
if (curl_errno($ch)) {
    die('请求失败:' . curl_error($ch));
}

// 关闭CURL会话
curl_close($ch);

// 保存内容到本地文件
if (!empty($content)) {
    file_put_contents($savePath, $content);
    echo '文件已成功保存至:' . $savePath;
} else {
    echo '未获取到有效文件内容';
}
?>

关键说明

  • 模拟浏览器标识:通过CURLOPT_USERAGENT设置浏览器UA,避免被网站拦截非浏览器请求
  • 处理重定向:启用CURLOPT_FOLLOWLOCATION跟随页面跳转,确保获取最终的CSV内容
  • 会话Cookie支持:ASPX应用可能依赖会话Cookie生成文件,通过CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE维持会话
  • 权限检查:确保PHP进程对保存路径有写入权限,且服务器已启用CURL扩展

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:01:09