在php中fsockopen函数可以模仿用户去访问一些网站并且还可以带一些常用的信息,如果浏览器,IP,post,get 等等数据,下面我分别一来给大家介绍介绍.
如果你要使用fsockopen函数我们必须在php.ini中把allow_url_fopen = On 设置为开启状态.
例,fsockopen() Example,代码如下:
-
<?php
-
$fp = fsockopen("www.vcphp.com", 80, $errno, $errstr, 30);
-
if (!$fp) {
-
echo "$errstr ($errno)<br />n";
-
} else {
-
$out = "GET / HTTP/1.1rn";
-
$out .= "Host: www.example.comrn";
-
$out .= "Connection: Closernrn";
-
fwrite($fp, $out);
-
while (!feof($fp)) {
-
echo fgets($fp, 128);
-
}
-
fclose($fp);
-
}
-
?>
伪造post,POST HTTP请求(URL)并获取返回值,代码如下:
-
<?php
-
-
$srv_ip = '192.168.1.5';
-
-
$srv_port = 80;
-
-
$url = 'http://localhost/fsock.php'; //接收你post的URL具体地址
-
-
$fp = '';
-
-
$errno = 0;
-
-
$errstr = '';
-
-
$timeout = 10;
-
-
$post_str = "username=demo&password=hahaha";
-
-
-
-
$fp = fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);
-
-
if (!$fp){
-
-
echo('fp fail');
-
-
}
-
-
$content_length = strlen($post_str);
-
-
$post_header = "POST $url HTTP/1.1rn";
-
-
$post_header .= "Content-Type: application/x-www-form-urlencodedrn";
-
-
$post_header .= "User-Agent: MSIErn";
-
-
$post_header .= "Host: ".$srv_ip."rn";
-
-
$post_header .= "Content-Length: ".$content_length."rn";
-
-
$post_header .= "Connection: closernrn";
-
-
$post_header .= $post_str."rnrn";
-
-
fwrite($fp,$post_header);
-
-
$inheader = 1;
-
-
while(!feof($fp)){
-
-
$line = fgets($fp,1024);
-
-
-
-
if ($inheader && ($line == "n" || $line == "rn")) {
-
-
$inheader = 0;
-
-
}
-
-
if ($inheader == 0) {
-
-
echo $line;
-
-
}
-
-
}
-
-
fclose($fp);
-
-
unset ($line);
-
-
?>
简要说明:代码第二行是你的IP地址或域名,第四行是你要POST的页面的具体地址,本例用的是fsock.php,fsock.php内容如下:
-
<?php
-
-
echo "username:".$_POST['username']."<br/>";
-
-
echo "password:".$_POST['password'];
-
-
?>
-
-
-
-
username:demo
-
-
password:hahaha
伪造get,同时伪造post,get方法,代码如下:
-
<?php
-
-
$purl = "http://localhost/netphp/test2.php?uu=rrrrrrrrrrrr";
-
print_r(parse_url($url));
-
sock_post($purl,"uu=55555555555555555");
-
-
function sock_get($url, $query)
-
{
-
$info = parse_url($url);
-
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3);
-
$head = "GET ".$info['path']."?".$info["query"]." HTTP/1.0rn";
-
$head .= "Host: ".$info['host']."rn";
-
$head .= "rn";
-
$write = fputs($fp, $head);
-
while (!feof($fp))
-
{
-
$line = fread($fp,4096);
-
echo $line;
-
}
-
}
-
sock_post($purl,"uu=rrrrrrrrrrrrrrrr");
-
function sock_post($url, $query)
-
{
-
$info = parse_url($url);
-
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3);
-
$head = "POST ".$info['path']."?".$info["query"]." HTTP/1.0rn";
-
$head .= "Host: ".$info['host']."rn";
-
$head .= "Referer: http://".$info['host'].$info['path']."rn";
-
$head .= "Content-type: application/x-www-form-urlencodedrn";
-
$head .= "Content-Length: ".strlen(trim($query))."rn";
-
$head .= "rn";
-
$head .= trim($query);
-
$write = fputs($fp, $head);
-
while (!feof($fp))
-
{
-
$line = fread($fp,4096);
-
echo $line;
-
}
-
}
-
?>
-
(责任编辑:最模板) |