ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルの post と get を模倣する fsockopen の詳細な説明

php_PHP チュートリアルの post と get を模倣する fsockopen の詳細な説明

WBOY
WBOYオリジナル
2016-07-20 11:12:08752ブラウズ

php では、fsockopen 関数はユーザーを模倣していくつかの Web サイトにアクセスし、ブラウザー、IP、投稿、取得、その他のデータなどの一般的に使用される情報を取得することもできます。以下にそれらを 1 つずつ紹介します。

fsockopen 関数を使用したい場合は、php.ini でallow_url_fopen = On を設定する必要があります。

fsockopen() 例

$srv_ip = '192.168.1.5';//ターゲット サービス アドレス
代码如下 复制代

$fp = fsockopen("www.example.com", $errno, $errstr、 30);
if (!$fp) {
echo "$errstr ($errno)
n";
} else {
$out = "GET / HTTP/1.1rn";
$out . = "ホスト: www.example.comrn";
$out .= "接続: Closernrn";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, ) コード



$srv_port = 80;//ポート

$url = 'http://localhost /fsock.php'; //投稿を受信するための特定の URL

$fp = ''; $errno = 0;//エラー処理 $errstr = '';//エラー処理 = 10; //長時間接続しないと中断されます $post_str = "username=demo&password=hahaha";//送信するコンテンツ //ネットワークソケットのリンクを開きます。

$fp = fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);

if (!$fp){

echo('fp 失敗') }

$content_length = strlen($post_str);

$post_header = "POST $url HTTP/1.1rn";

$post_header .= "Content-Type: application/x-www-form-urlencodedrn";ユーザーエージェント: MSIErn";

$post_header .= "ホスト: ".$srv_ip."rn";

$post_header .= "Content-Length: ".$content_length."rn";

$post_header . = "接続: closenrn";

$post_header .= $post_str."rnrn";

$inheader = 1; ){//ファイルポインタがファイルの末尾に到達したかどうかをテストします

$line = fgets($fp,1024)

//リクエストパケットのヘッダ情報を削除します

if ($inheader && ($line == "n "||

}

fclose( $fp);

unset ($line);

?>

簡単な説明: コードの 2 行目は IP アドレスまたはドメイン名で、4 行目は POST するページの特定のアドレスです。この例では、fsock.php のコンテンツが使用されます。

コードは次のとおりです コードをコピー

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

echo "パスワード:".$_POST[' パスワード']?>

コードは次のとおりです

コードをコピー

//fsocket は送信後のシミュレーションを行います

$purl = "http://localhost/netphp/test2.php?uu=rrrrrrrrrr" ;

print_r (parse_url($url));

sock_post($purl,"uu=55555555555555555");

//fsocket は送信の取得をシミュレートします
関数 sock_get($url, $query)

{

$info = parse_url($ url);
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3);

$head = "GET ".$info['path']."?".$info ["クエリ "]." HTTP/1.0rn"; $head .= "ホスト: ".$info['host']."rn"; $head .= "rn"; while (!feof($fp)) $line = fread($fp,4096); echo $line; } php の fsockopen 関数は、ユーザーがいくつかの Web サイトにアクセスするのを模倣し、ブラウザー、IP、投稿、取得、その他のデータなどの一般的に使用される情報を取得することもできます...
$write = fputs( $fp, $head); {
}

sock_post($purl,"uu=rrrrrrrrrrrrrr ");
関数 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 .= "ホスト: ".$info['host ']. "rn";
$head .= "リファラー: http://".$info['host'].$info['path']."rn";
$head .= "コンテンツタイプ: application/ x-www-form-urlencodedrn";
$head .= "Content-Length: ".strlen(trim($query))."rn";
$head .= "rn";
$head . = トリム( $query);
$write = fputs($fp, $head);
while (!feof($fp))
{
$line = fread($fp,4096);
echo $line;
}
}
?>











http://www.bkjia.com/PHPjc/444597.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/444597.html

技術記事


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。