通过代理的一般方法
<?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();
}
<?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();
}
解决方案 »
- 如何获取CURL读取远程html后完成时的状态?
- 能不用循环和分开的数组一次性获得所有a标记的值吗?,如前;怎么用正则只获取一段代码里面<a></a>里面的值?包含<a>标记
- 用正则表达式替换txt文本中标点,各位帮忙看看代码有什么问题
- css显示图片的问题,请帮忙呀
- 新手问题: 假设$_post值中有很多特殊符号. 如果$_post值 当作函数的参数值, 不会出错. 如果$_post值 出现在sql语句中, 就会出错吗?
- jquery aiax php 传递数组的问题,请教
- smarttemplate好难学啊,运行里面的例子都出现错误
- 为什么我的php不能用iconv()函数?
- 大家看看这个效果如何写??
- frameset做的网站本地可以显示,放到服务器上就是空白了,有遇到过的吗
- [求助]关于smartIPB的密码问题
- 如何在网页上实现 eps 格式图片的预览?
$cc.=fgets($fp);
}中发生死循环了我只把最上面的三个配置项改掉了,还需要改别的地方吗?
还有身份验证那部分怎么加进来?