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
Code As follows | Copy code | tr>
< ?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
password:hahaha 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));//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...
|
|