通过代理的一般方法
<?php
//配置代理服务器
$proxy_host="proxyhost"; 
$proxy_port="port";
//配置欲打开的网页
$url="http://bbs.yzvod.com/index.asp";//注意要加"http://"//对路径的处理,如果前面没有/,就加一个 
function slashUrl($url) { 
if(!ereg("^/",$url)) { 
return "/".$url; 
}else { 
return $url; 
}

//对获得内容进行处理,去掉头部信息 
function trimHeader($content){ 
$array=split("\n\r",$content,"2"); 
return trim($array["1"]); 
} function http_fopen($host,$port="80"){ 
global $proxy_host;
global $proxy_port;
if(empty($proxy_host)){ 
$conn_host=$host; 
$conn_port=$port; 
} else{ 
$conn_host=$proxy_host; 
$conn_port=$proxy_port; 

$path=slashurl($path);
$abs_url=$host;
//$abs_url="http://".$host.":".$port.$path; 
$query="GET $abs_url HTTP/1.0\r\n". 
//"HOST:$host:$port\r\n". 
"User-agent:PHP/class http 0.1\r\n".
"\r\n"; 
$fp=fsockopen($conn_host,$conn_port); 
if(!$fp){ 
return false; 
}else{ 
fputs($fp,$query); 
while(!feof($fp)) {
$cc.=fgets($fp);
}
fclose($fp);
$content=trimHeader($cc); 
return $content;
}
} //前面是主机地址,第二个参数是具体的目标 
$http=http_fopen($url);if(!$http){ 
echo"对不起,连接代理服务器出错!"; 
exit; 
}else{
echo $http;
}
?>由于我的代理不需要验证,所以无法告知如何设置用户名和密码
但你可通过查看socket会话来找到何时应发出用户名和密码
下面是一个用socket发邮件的类的片段,他是这样发送验证信息的:
//以下是和服务器会话
$this->in       =  "EHLO HELO\r\n";
$this->docommand(); // 是否需要验证
if($this->auth)
{
$this->in       =  "AUTH LOGIN\r\n";
$this->docommand(); $this->in       =  $this->user."\r\n";
$this->docommand(); $this->in       =  $this->pass."\r\n";
$this->docommand();
}