CURL是比fopen功能更强大,更安全,伪装性更强的远端文件读取库,以下用PHP来实现通过代理服务器,进行远端文件读取。

$ch = curl_init($remote_url);       //$remote_url是远端http地址,如http://www.somesite.com/file.pdf
$tmp_file = tempnam(“./tmp”,”tmp_”); //建立临时文件
$fp = fopen($tmp_file, “w”);
   
curl_setopt($ch, CURLOPT_FILE, $fp); //读取内容直接向文件输出
curl_setopt($ch, CURLOPT_HEADER, 0);

//以下代码设置代理服务器
//curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true); //是否启用代理 是否开启http隧道
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); //代理认证模式
curl_setopt($ch, CURLOPT_PROXY, “127.0.0.1”); //代理服务器地址
curl_setopt($ch, CURLOPT_PROXYPORT, 8978); //代理服务器端口
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, “:”); //http代理认证帐号,username:password的格式,这里既然是socket5模式就打开
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); //代理模式,这里用socket5的方式
   
curl_exec($ch); // Run it!
curl_close($ch); //关闭curl通道
fclose($fp); //关闭文件