KUNISAN.JPブログコメント書き込み



PHPでPOST送信

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年8月2日
某大手掲示板でイタズラ書き込みがあると、その書き込みをしたユーザーと同じプロバイダーを使っているユーザー全員が書き込みできなくなってしまう、ということがあります。書き込み後に「アクセス規制中です!!」というメッセージが出て、結局書き込みできなかったという経験をした方が少なからずいるのではないでしょうか。しかも、規制は数日続くことが多く、書きたい事があるのに、せっかくのタイミングを逃してしまうことがあります。

これを回避するには「プロキシ」を使う手があります。しかし誰でも使える「公開プロキシ」は、犯罪行為助長の危険性があることなどから、ここを経由しての書き込みはできない掲示板が多いです。もちろん某大手掲示板も例外ではありません。

そこで考えたのが「WEBサーバーをプロキシ代わりにして、メッセージを送信できないか?」ということでした。ホームページのメッセージ送信には、「GET」と「POST」という2種類の方式がありますが、掲示板で使用されているのは主に「POST」の方です。「WEBサーバーからPOST送信できれば、規制から外れて書き込めるようになる」ということで、早速PHPでPOST送信のプログラムを作ってみました。

■■■■■POST送信プログラムサンプル■■■■■
<?php

//ソケット接続
$sock = fsockopen('XXXXXXXX.com', 80, $errno, $errmsg, 30);

//接続可否の判定
if (is_resource($sock)){
print '接続しました。<br>';

//リクエストのデータ部
$v0 = '名前なまお';
$v1 = 'コメントこめんといかんな。';

//リクエストのデータ部(エンコード)
$data = 'name='.urlencode($v0).'comment='.urlencode($v1);

//リクエストを送信
$request = "POST http://XXXXXXXX.com/bbs.cgi HTTP/1.1\r\n"
.'Host: XXXXXXXX.com'."\r\n"
.'Content-Type: application/x-www-form-urlencoded'."\r\n"
.'Referer: http://XXXXXXXX.com/bbs_view.cgi'."\r\n"
."Content-Length: ".strlen($data)."\r\n\r\n"
.$data."\r\n";
fwrite ($sock, $request);

//レスポンスを受信
$res = '';
while (!feof($sock)) {
$d = fgets($sock);
$res .= $d;
}

//レスポンスを表示
print $res;

//ソケット切断
fclose($sock);

} else {

//ソケット接続エラー
print 'エラー'.$errmsg;

}

?>
■■■■■■■■■■■■■■■■■■■■■■■

以上が最低限のPOST送信機能を有したサンプルプログラムです。一応これだけでも動くことは動くのですが、このままでは某大手掲示板へのメッセージ送信はできません。某大手掲示板へのメッセージ送信は、ヘッダーに別途Cookie情報を付け加える必要があります。

まずは、POST送信のヘッダー情報を得るのに、パケットキャプチャ(Wireshark)を利用します。続いて、ヘッダー中のCookie情報にあるホスト名(通常はプロバイダー名になっています)を、WEBサーバーのホスト名に変更します。そして、修正されたヘッダー情報を、丸ごとPHPプログラムに反映させることで、某大手掲示板への書き込みが可能になります。これで「アクセス規制中」でも、WEBサーバー経由で問題がなくメッセージ送信ができるようになります。

ちなみにソケット接続関連のプログラムは、悪用される可能性もあるので、完全な形で公開できないことをお許しください。また完成したプログラムもあることはあるのですが、こちらも個人用として利用するだけで、一般公開はできませんので悪しからず…。





PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

入門PHPセキュリティ
入門PHPセキュリティ をAmazon.co.jpでチェック


1)商品の宣伝、宗教や政治活動の勧誘など、本サイトの趣旨に合わない書き込みはご遠慮ください。
2)個人、団体への誹謗中傷や、差別的な発言、公序良俗に反する表現は禁止します。
3)本ブログへの書き込みによって何らかの問題が発生した場合、KUNISAN.JP管理者までご連絡いただければ、内容の修正、削除を行います(その他の責任については負いかねます)。
4)製作者サイドの都合により、予告無く書き込みの一部または全てが削除されることがあります。あらかじめご了承ください。
5)迷惑メールやコンピュータウィルス被害を防止するため、必要な場合以外にはメールアドレスを書き込まないことをお勧めします。

タイトル
お名前 (※必須)
Eメール
ホームページ

コメント (※必須)


画像ファイル(サイズ:10MB以下 形式:gif,jpeg,jpg,png)