Home  >  Article  >  Backend Development  >  Detailed explanation of fsockopen imitating post and get in php_PHP tutorial

Detailed explanation of fsockopen imitating post and get in php_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:12:08752browse

In php, the fsockopen function can imitate users to visit some websites and can also bring some commonly used information, such as browser, IP, post, get and other data. I will introduce them to you one by one below.

If you want to use the fsockopen function, we must set allow_url_fopen = On in php.ini.

Example

fsockopen() Example

The code is as follows Copy code
 代码如下 复制代码

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
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);
}
?>

$fp = fsockopen("www.example.com", 80, $ errno, $errstr, 30);
if (!$fp) {

echo "$errstr ($errno)
n";

} else {

$out = "GET / HTTP/1.1rn";
 代码如下 复制代码

$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";//要提交的内容.

//打开网络的 Socket 链接。

$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);

?> 

$out .= "Host: www.example.comrn"; $out .= "Connection: Closernrn"; fwrite($fp, $out) ; while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp);}?>
Fake postPOST HTTP request (URL) and get the return value tr>
Code As follows Copy code
< ?php <🎜><🎜> $srv_ip = '192.168.1.5';//Your target service address. <🎜><🎜> $srv_port = 80;//Port <🎜><🎜> $url = 'http ://localhost/fsock.php'; //The specific URL to receive your post <🎜><🎜> $fp = ''; <🎜><🎜> $errno = 0;//Error handling <🎜>< 🎜> $errstr = '';//Error handling <🎜><🎜> $timeout = 10;//How long it will take before the connection is interrupted <🎜><🎜> $post_str = "username=demo&password=hahaha";// Content to be submitted. <🎜><🎜> //Open the network Socket link. <🎜><🎜> $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)){//Test whether the file pointer reaches the end of the file <🎜><🎜> $line = fgets($fp,1024); <🎜><🎜> //Remove the header information of the request packet <🎜><🎜> if ($inheader && ($line == "n" || $line == "rn")) { <🎜><🎜> $inheader = 0; <🎜><🎜> } <🎜><🎜> if ($inheader == 0) { <🎜><🎜> echo $line; <🎜><🎜> } <🎜><🎜> } <🎜>< 🎜> fclose($fp); <🎜><🎜> unset ($line); <🎜><🎜>?>

Brief description: The second line of the code is your IP address or domain name, and the fourth line is the specific address of the page you want to POST. This example uses fsock.php. The content of fsock.php is as follows:

The code is as follows
 代码如下 复制代码

echo "username:".$_POST['username']."
"; 

    echo "password:".$_POST['password']; 

?> 


 

Copy Code

echo "username:".$_POST['username']."
";

echo "password:".$_POST ['password'];

?>


 代码如下 复制代码

//fsocket模拟post提交
$purl = "http://localhost/netphp/test2.php?uu=rrrrrrrrrrrr";
print_r(parse_url($url));
sock_post($purl,"uu=55555555555555555");
//fsocket模拟get提交
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;
}
}
?>


The result is:

username: demo

fake get and fake post and get methods at the same time.
The code is as follows Copy code
//fsocket simulates post submission

$purl = "http://localhost/netphp/test2.php?uu=rrrrrrrrrrr";print_r(parse_url ($url));
sock_post($purl,"uu=55555555555555555");
//fsocket simulates get submission<🎜>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=rrrrrrrrrrrrrr");<🎜>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;<🎜> }<🎜>}<🎜>?> http://www.bkjia.com/PHPjc/444597.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/444597.htmlTechArticleThe fsockopen function in php can imitate users to visit some websites and can also bring some commonly used information. If the browser , IP, post, get and other data, I will introduce them to you one by one below...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn