• ベストアンサー
  • すぐに回答を!

PerlでURLにアクセスして、その内容をファイルに落とせますか?

  • 質問No.4688423
  • 閲覧数61
  • ありがとう数4
  • 回答数4

お礼率 100% (4/4)

知人から以下のような相談があったのですが、少し急ぎで困っています。

その知人が働くNGO団体で取引のある1万近い個人・法人のデータベースに関することなのです。

以前はその団体にUNIXマシンの管理者が一人いて、その人がUNIXマシンでデータベースを管理していたのだそうです。が、その管理人が亡くなって、誰もそのマシンにログインできないとのこと。でも、マシン自体は普通に動いています。

で、そのマシンはネットでつながっていて、外部から

https://www.なんちゃら.ne.jp/なんちゃら/なんちゃら.cgi?1
https://www.なんちゃら.ne.jp/なんちゃら/なんちゃら.cgi?2
https://www.なんちゃら.ne.jp/なんちゃら/なんちゃら.cgi?3


という感じでアクセスすると、データベースの会員番号1番、2番、3番の人のデータがHTMLで個人情報が表示されるような仕組みになっています。
(IDとパスワードの入力は必要ですが、1回入力すれば聞かれないみたいです)

そこで、外部のマシンから、Perl(もしくは別のスクリプト言語でもいい)のスクリプトを実行することで、この1万人近いデータベースを吸いだせないか、ということなのですが、簡単なことなのでしょうか?
ざっくりどんな感じのソースになるのかお教えいただければ助かります。

そのNGO団体のパソコンでPerlが動く環境ですので、Perlを勉強してソースを書けるように頑張って勉強しようと思ったのですが、ちょっと急ぎなのでヒントだけでも頂けたらと思った次第です。
よろしくお願いします。

質問者が選んだベストアンサー

  • 回答No.4
  • ベストアンサー

ベストアンサー率 100% (1/1)

一番良い方法はCGIのスクリプトの中身を調べて、
プログラムの中身を把握することだと思います。
10000件のデータを保管しているとのことなので、ファイルなのか、DBなのか
わかりませんが、通常きちんとしたフォーマットに従って処理されていると思います。
事情があって、サーバーにログインできずにCGIソースを閲覧する事ができないということであれば、対応は以下のとおりだと思います。
■シェル等を使い、データをHTML形式でダウンロード
以下の一行で1万件のデータ自体はファイルに取り出せると思います。
for x in `seq 1 1000`;do wget --output-document=$x http://example.com/exmaple.cgi?$x;done;

■ダウンロードしたファイルの解析
ダウンロードしたファイルの解析については、出力される内容に依存しますので、どうすればというのはなんとも言えないですが、
HTML::Parser などを使うと比較的簡単に処理できると思います。

仕事半分、趣味半分でそうしたことをやってますので、
自分で行う時間がないのであれば、下記のフォームからでも
ご相談いただければと思います。
http://e-uematsu.net/php/form.php
お礼コメント
kagichan

お礼率 100% (4/4)

ありがとうございました。
実はいろいろ事情がありまして、そのunixマシンの隣に設置されているWindowsマシンからしかアクセスができない状況だったのですが、どうにかPerlでデータを吸いだせました。
ファイルの解析はこちらでどうにかできそうです。
投稿日時:2009/02/10 08:41

その他の回答 (全3件)

  • 回答No.3
普通LWP
でもシェルスクリプトでwget回す方が簡単

自分が頼まれたら電源落としてHDD取り出すのが一番速いけども
お礼コメント
kagichan

お礼率 100% (4/4)

短いながら、参考になりました。ありがとうございました。
HDDの取り出し、は考えてもいなかったのですが、そんな手段もあるのだなと勉強になりました。
投稿日時:2009/02/10 08:42
  • 回答No.2

ベストアンサー率 45% (44/96)

なんちゃら.cgiを解析するのが一番早いと思います。

もしくは、
sh なんちゃら/なんちゃら.cgi?n >> ファイル
みたいな感じのを繰り返すループを組めば取り出せるのではないでしょうか。
お礼コメント
kagichan

お礼率 100% (4/4)

ありがとうございます。
.cgiを外部マシンから解析するのは、ちょっと僕の手には負えませんでした。
unixマシンが使える環境ならいいのですが…。
投稿日時:2009/02/10 08:44
  • 回答No.1

ベストアンサー率 56% (111/196)

Perl から Web サーバーへのHTTPアクセス、確かに出来ますが、私が知ってるのは Socket.pm を使う方法で、急造プログラマにできるかと言われるとかなり心配です。

Socket あるいはもっと簡単な方法での HTTPアクセスに成功したとしても、データを漏れなく取得する工夫やそれを別マシンのデータベースに流し込むのはより高スキルが要求されそうに思います。

失礼ながら、引き受けてもらえる技術者を探される方が良くないでしょうか。 そっち方面に明るい技術者が味方につけば、HTTPアクセス以外にどんなアプローチがあるかも相談できると思います。

あ、kagichan さんがたまたま Perl を知らないだけで他の言語(C とか)でのシステムプログラミングには熟練されてる方なら、私の書き込みは忘れてください。
お礼コメント
kagichan

お礼率 100% (4/4)

ありがとうございます。
Socket.pmは結局使えませんでした。すみません。
当方、20年~15年ほど前にとある企業にて、Cで組み込み機器の開発の
仕事をしていましたが、どうもネットワークとかそういう話には弱いのです
(そういう意味ではほとんど初心者です)。
投稿日時:2009/02/10 08:46
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ