匿名質問者

curl 等を使って、あるURLにあるファイルをコマンドラインから取得したいです。

その際の条件は以下のようになっています。
(1)ファイルのURLは常に固定: (例)http://xxx.xxx.xxx/data.txt
(2)しかし、同ディレクトリ下のindex.html(http://xxx.xxx.xxx/index.html)をブラウザで開いた時に表示される form ボタンをクリックしないと、(1)のファイルが最新のものになっていない。form ボタンは、<input type=button onclick="submit()"> と記述されている。

さて、コマンドラインから <input type=button onclick="submit()"> ボタンを押したのと同等のことを行うことは可能でしょうか?ちなみに、submit()の実装とかは、外から全然わかりません。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/12/31 17:35:04

回答0件)

回答はまだありません

  • 匿名回答1号
    匿名回答1号 2015/12/24 17:40:02
    >submit()
    JavScriptなので分かると思います。
  • 匿名回答2号
    匿名回答2号 2015/12/24 18:30:45
    index.html の form を submit したときの URL は分かるので、それを curl で GET もしくは POST してから、data.txt を curl で GET すれば良いんじゃないかと思う。
  • 匿名質問者
    匿名質問者 2015/12/24 18:49:03
    回答ありがとうございます。
    1号さま、
    ソースには<script>なるタグがどこにもないです。
    ですので、このページが JavaScript を使用しているのかどうかも私には分からないのですが、<input onclick="submit()"> というタグがあるという情報のみから JavaScript を使用しているとわかるものなのでしょうか? 何か CGI 的なものではなく?

    2号さま、
    index.html のform をsubmit したときの URLがわからないです。
    まず、"form を submit したとき" というのは、ボタンをクリックした後のことを指されていると思いますが、ボタンをクリックしてもページそのものは何も変わらず、ブラウザの URL を記入・表示するツールバー内に表示されている URL の文字列自体も何も変化しません。
    ボタンをクリックすると何かサーバ上でプログラムが実行されてデータファイルが更新されるという処理が行われているらしいのですが、URLそのものは変化しないのです。
  • 匿名回答2号
    匿名回答2号 2015/12/24 22:31:14
    >index.html のform をsubmit したときの URLがわからないです。
    分かります。
    モダンなブラウザだと開発者向けのツールが内蔵されていて、どのようなURLにリクエストを出したかをたどることができます。
    アドレスバーに表示されているURLが変わらなくてもサーバにリクエストを出す方法は色々とありますので。
  • 匿名質問者
    匿名質問者 2015/12/25 09:16:58
    2号さま、
    回答、どうもありがとうございます。
    具体的に"どのブラウザ"の"どのバージョン"で"どのような設定"にすれば、当該情報がたどれるのか私には見当がつかないのですが調べてみます。ありがとうございます。
    もし、お手数でなければご教授をお願いしますが、並行してこちらでも調べてみます。
  • 匿名質問者
    匿名質問者 2015/12/25 09:29:47
    ただし懸念しているのが、
    たとえば、
    (1)ボタンのクリックは同じURLへのGET
    (2)ただし、クリック経由の場合だけファイル更新の処理がされる
    (3)単にそのURLをGETした場合にはファイル更新の処理は行われない
    という実装になっている場合です。
    そのような実装が実際に可能なのかどうか知識の無い私には見当がつきませんが、例えば index.html がCGIのスクリプトになっていて、単なる GET なのか クリック経由の GET なのかを判別してファイル更新の処理を行うかどうかを決定する、みたいなことはありうるでしょうか?
    そういった場合、普通はクリック経由の場合は、POST にしてURLの?の後に何かクエリをつけると思うのですが、そのようなクエリは特にツールバーには表示されないです(これは私の使用しているブラウザの問題かもですが、とにかくまずは適切なブラウザをさがします)。
  • 匿名質問者
    匿名質問者 2015/12/25 09:32:14
    > そういった場合、普通はクリック経由の場合は、POST にしてURLの?の後に何かクエリをつけ> ると思うのですが、

    すいません。クエリによってパラメータを渡すのは GET でした。訂正致します。
  • 匿名質問者
    匿名質問者 2015/12/25 10:11:52
    2号さま、

    たとえば Firefox の場合は、アドオンのHttpFox というのが使えるみたいでした。
    このアドオンをインストールすると、URLにリクエストを出すたびに、
    "送受信バイト数"、"メソッド"、"ステータス"、"タイプ"、"URL"
    が逐一表示されるようになったので調べてみると、
    (1)単に当該URLをリクエストした場合 -> 当該URLに GET する
    (2)クリックする -> URL は全く同じだがメソッドが POST (しかし中身はない?)
    だということが判明しました。
    どうやら、URLは同じだけど、"GET" なのか "POST" なのかで、処理をわけているようです。
    だいぶ前進しました。どうもありがとうございます。
  • 匿名質問者
    匿名質問者 2015/12/25 10:33:39
    2号さま、

    解決しました!!
    クリックした場合は、同じURLだけどメソッドが POST で、中身は "BuildDataFile=TRUE" というものでした(先のコメントでは中身はないと言ってましたが私の見方が悪いせいでした...)。そこで、
    wget --post-data='BuildDataFile=TRUE' http://xxx.xxx.xxx/
    をしてから、
    wget http://xxx.xxx.xxx/data.txt -O data.txt
    などとすると、最新のデータをコマンドラインから取得することに成功しました!!
    どうも、ありがとうございました。
    これで、定期的に自動で最新ファイルを取得することができるようになりました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません