人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perlにて質問です。

とあるURL(固定、拡張子なし)の画像がありダウンロードをしたいのですが、
サーバー側でステータスコード404を吐くものでして、
ブラウザでの表示は<img src>タグを使っているため、
画像として表示されるのですが、Perlにて
LWP::UserAgent、WWW::Mechanize等でGETしても、
ステータスコードの404を判定してしまい、ダウンロードができません。

Perlにて、ステータスコードを無視して、強制的にダウンロードする方法はありませんでしょうか。

例:
画像URL:http://localhost/img
HTMLソース上:<img src="http://localhost/img">
レスポンスコード:404
保存したいファイル名:test.jpg


●質問者: furure
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● y-kawaz
●250ポイント

強制的にダウンロード云々じゃなくて、単にUser-Agentみて404返されてるだけじゃないですか?試しにブラウザのUAと同じものを指定してGETしてみてはいかがでしょう。


furureさんのコメント
どのブラウザ(UA)でアクセスしても404は吐かれてしまいます。

y-kawazさんのコメント
バイナリのレスポンスの場合にうまく動くかまでは試してませんが、レスポンスオブジェクトから $r->error_as_HTML で取れそうな気がします。 http://search.cpan.org/~ether/HTTP-Message-6.10/lib/HTTP/Response.pm#$r->error_as_HTML

y-kawazさんのコメント
あ、嘘です。ソースコード見たら全然そんな実装じゃなかった…。

furureさんのコメント
色々考えて頂き、ありがとうございます。なかなか方法が思いつかず、、そんなうまい具合に動いてくれるモジュールも見つからず。。

2 ● gizmo5
●250ポイント

そのダウンロードできないという画像のURLが分からないと何とも言えませんが、無断転載を防止するためにリファラをチェックしているブログシステムがあります。
どこかのブログの画像を抜いてこようとしているのであればリファラをチェックされているのではないでしょうか。


furureさんのコメント
正規のアクセスでも404はでます。 リファラーの点はもちろん事前把握済みです。

TransFreeBSDさんのコメント
クッキーはどうでしょう? WWW::Mechanizeはデフォルトでクッキー面倒みましたっけ? あとはjavascriptの影響か。 サイトの運営者に聞いてみてはどうでしょう。 意図的に取得できないようにしているなら、強引にやるとトラブルになりかねませんよ。

gizmo5さんのコメント
>> WWW::Mechanizeはデフォルトでクッキー面倒みましたっけ? << 明示的に禁止しなければ連続した処理ではCookieの処理をしてくれたと思います。

furureさんのコメント
はい、、クッキーについては、何度も試してみました。

質問者から

皆さま色々考えて頂きありがとうございました。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ