一応SEの端くれのつもりですし!たまにはこういう話も。
■やりたいこと
会社に内線番号のデータベースがあって、そこに各人の顔写真が掲載されてるんですけど。
これを全社員分DLしたい!!!!11
と言う人がいた場合、どうしたらよかろうか。
■普通に思い付く事
普通はまぁ、右クリックしてぽちぽち保存していくとか
URL探ってダウンロード支援ツール使ってまとめて落とすとか、思い付きますな。
画像のIDはシーケンシャルだし。(でした)
あれ、余裕じゃね?そう思っていた時期が僕にもありました・・・
■ポイント1 右クリックで保存出来ない
顔写真をdivタグの背景画像として流してあって
フロントにはカバーの透明画像を上乗せして表示してるみたいなのね。だから右クリは無理。
簡単な悪戯防止ですね。
■ポイント2 画像ファイルに直接アクセス出来ない
これを解くのに時間がかかった・・・
直接URLを叩いてもエラーになるのです。401の認証エラーかな。
で、
firebugでリクエストヘッダ見てたらわかったんだけど
keepaliveで維持されたセッションからのアクセスじゃないと、どうやら受け付けないらしい。
システムにログインする時にbasic認証してから入るんですが、
そのセッションでアクセスする必要があるようです。
■結果
ご想像通りでしょうが、正規のアクセスのセッション上で、
greasemonkeyでURLを大量に生成したページを作って
(=ループでidを回して10000人分くらいの画像を画面に表示するページを作る)
firefoxのキャッシュから画像のみ抽出したら全員分取れそうでした。
ほんとは
こういうの使ってDLまで自動でやりたかったんだけど、うまくインストール出来ず。。
firefox3系だと入んないのかな。残念。
■課題点
ネックは画像の同時DL数と画面の描画っていう・・・
10000個も普通のブラウザでDLして描画したらそりゃ遅いだろ。
社内システムで画像サーバが分散してるわけは無いので
完全にブラウザの同時接続制限にかかって、10000個を線形にDLするわけですな。
で、片っ端から画面に描くと。。あほか!
firebugで見ると接続情報のブロッキングの時間だけ増えているのが分かります。
ただ、javascriptの実行待ち時間を無限にして
描画サイズも5pt×5ptとかにしたら、一応動くようにはなった。
でも1000個くらい表示してDLした時点で結局飽きてやめました。。
多分ID的には20000くらいまでありそうな予感。
どうでもいいけどIDの採番ルールとか見えてきてしまった。
■問題点
これ、バレたら怒られそう。。
と言うか社内の人間からすれば、DLして何すんの?まじキモくね?
と言う感じだと思います。
すみません、明日はちゃんと仕事します><
■結論
ぐりもんおもしろい。
みんなも入れてみましょう!!!