在php中fsockopen函数可以模仿用户去访问一些网站并且还可以带一些常用的信息,如果浏览器,IP,post,get 等等数据,下面我分别一来给大家介绍介绍。[导读] 在php中fsockopen函数可以模仿用户去访问一些网站并且还可以带一些常用的信息,如果浏览器,IP,post,get 等等数据,下面我分别一来给大家介绍介绍。如果你要使用fsockopen函数我们必须在php ini中把allow_url
如果你要使用fsockopen函数我们必须在php.ini中把allow_url_fopen = On 设置为开启状态。
伪造post提交
POST HTTP请求(URL)并获取返回值
简要说明:代码第二行是你的IP地址或域名,第四行是你要POST的页面的具体地址,本例用的是fsockopen.php
fsockopen.php
<?php
$srv_ip = 'www.jef.com';//你的目标服务地址.
$srv_port = 80;//端口
$url = 'http://www.jef.com/10moth/case10_31.php'; //接收你post的URL具体地址
$fp = '';
$errno = 0;//错误处理
$errstr = '';//错误处理
$timeout = 30;//多久没有连上就中断
$post_str = "user=demo&password=hahaha";//要提交的内容.
//打开网络的 Socket 链接。
$fp = fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);
if (!$fp){
echo('fp fail');
}
//拼接http协议头
$content_length = strlen($post_str);
$post_header = "POST $url HTTP/1.1\r\n";
$post_header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$post_header .= "User-Agent: MSIE\r\n";
$post_header .= "Host: ".$srv_ip."\r\n";
$post_header .= "Content-Length: ".$content_length."\r\n";
$post_header .= "Connection: close\r\n\r\n";
$post_header .= $post_str."\r\n\r\n";
fwrite($fp,$post_header);
$inheader = 1;
while(!feof($fp)){//测试文件指针是否到了文件结束的位置
$line = fgets($fp,1024);
echo $line;
//去掉请求包的头信息
/*if ($inheader && ($line == "n" || $line == "rn")) {
$inheader = 0;
}
if ($inheader == 0) {
echo $line;
} */
}
fclose($fp);
// unset ($line);
?>
接收POST请求
post.php
<?php
echo "username:".$_POST['username']."<br/>";
echo "password:".$_POST['password'];
?>