curl で POST/GET ブラウザを使わずコメントを投稿

LINEで送る
Pocket

ISO ファイルやtar.gz(ターボール)をダウンロードする時に、curl(もしくは wget) コマンドを使ってダウンロードした事がある人は多いと思います。

ISO のダウンロード
$ curl -O http://example.com/linux.iso
file1.txt 〜 file100.txt をダウンロード
$ curl -O ftp://example.com/file[1-100].txt

しかしcurlコマンドはISOファイルやコンテンツをダウンロードするだけのコマンドではなく、さまざまなプロトコルに対応したデータを転送するためのコマンドなのです。ファイルのダウンロードはもちろん、アップロードもできますし、
フォーラムへ書き込みも curl コマンド使ってできます。

まず apache とphpをインストールしてテスト用のフォーラム(index.php)を作成します。

$ apt install -y apache2 php libapache2-mod-php
$ sudo nano /var/www/html/index.php
<?php

	if(isset($_GET['name']) === true && isset($_GET['comment']) === true)
		print "GET DATA = " . $_GET['name'] . " " . $_GET['comment'] . "\n";

	if(isset($_POST['name']) === true && isset($_POST['comment']) === true)
		print "POST DATA = " . $_POST['name'] . " " . $_POST['comment'] . "\n";
	/*
		実際にはDBなどへ書き込む処理などを書きます。
	*/

?>
<html>
<head>
</head>
<body>
	<form method="GET" action="./index.php">
		GET FORM<br>
		<input type="text" name="name">
		<input type="text" name="comment">
		<input type="submit" value="投稿">
	</form>
	<form method="POST" action="./index.php">
		POST FORM<br>
		<input type="text" name="name">
		<input type="text" name="comment">
		<input type="submit" value="投稿">
	</form>
</body>
</html>

ウェブサーバへ値を渡す方法として GET と POST という2つのmethod(メッソッド)が存在するので、GET と POST のFORM を作成しました。受け取った値はそのまま print するだけのプログラムです。ブラウザで ttp://localhost/index.php にアクセスして投稿をおこなってみて下さい。どのようにデータが投稿されているのかが分かります。

GET は、URLの後ろに付けてデータを渡す方法なので簡単です。
以下のように nameと commentを入力フォームに入力して投稿を行うコンテンツであれば、URL の後ろに name=XXX &(区切り文字) comment=XXX を付加し実行します。

$ curl "http://localhost/index.php?name=taro&comment=コメント"
GET DATA = taro コメント
<html>
<head>
         :

method が POST の場合は、URLにデータを含める事が出来ないので、-XPOST と -d オプションを追加して実行すればフォームへの投稿が行なえます。

$ curl -XPOST -d 'name=taro&comment=コメント' http://localhost/index.php
POST DATA = taro コメント
<html>
<head>
         :

その他、Cookie や HEADER 情報を変更したりなど、いろいろなオプションが用意されているので curl -h でどのようなことができるのか試してみて下さい。

LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください