ページがアップデートされていて、仕様が変更されている。
従来存在した、隠されたページ、といっても隠されているというより、googleによってサイト内検索があるだけで、ランダムにそのドメインの下にあるページを読み込むランダマイザーが無くなっている。
これまで、このランダマイザーを使って、存在するページを全て記録するという手法でコンテンツの数を数えていた。
代わりの手段として、wget を使ってみる。
wget -nv -r -l10 -e robots=off https://mangaplay.org/
これは、ドメイン内の html ファイルをクローリングしてダウンロードする。
コマンドのスイッチ l
が階層の深さの指定のようなので、適当に10として様子をみよう。
html ファイルはダウンロードするが、そのドメイン外の画像ファイルはダウンロードしない。ドメイン外というのは、CDNのクラウドフレアによって隠されている画像の置いてあるサーバーについてのことで、そのサーバにマンガの画像がある。ここでは、その画像をダウンロードしない。
ダウンロードしたら、いけないぞ。
しばらく待つと、クローリングが終わるので、そのディレクトリに注目する。
ディレクトリの数字が、コンテンツのあるURLパスになっているので、そのディレクトリの数ぶんだけ、ディレクトリの中に index.html が存在して、その index.html のソースの中に、ページに読み込む画像ファイルの URL が書かれている。その URL が CDN のプロクシーサーバーにキャッシュされた画像ファイルを指し示しているというのが、はなしの前提になっている。
さてここで、デレクトリの名前を列挙して見たいところ。
こんなふうにしてみてはどうかな。
ls -l | awk '$1 ~ /d/ {print $9 }' > directory.txt
awk 参考:
https://atmarkit.itmedia.co.jp/ait/articles/1706/15/news021.html
64300 ほどあることが予想されるが、どうだろうか。なぜ予想されるかというと、その数を数えるプログラムを過去から現在までずっと いくつかの言語で書いてきたからで、ようやく Ruby でスレッドを使って速く数えれるプログラムが出来た(たくさんの http request する処理の待ちが時間かかるので、スレッドで分けれればかかる時間は go 言語での場合とたいさはなくなった)後に、前述の通りページの仕様が変わったので、数えてはあったが、新たな方法として、かなり先祖返りしたような wget でポンとやる方法をみつけたというわけだ。
64300 には程遠いということであれば、コマンドのスイッチ l
の数字を大きくしてみるといいかもしれない。
l10
では 12798 こほどのディレクトリになった。
確認するには、directory.txt をエディターで開いて、行番号を付けてみればいい。
vim 系のエディターだと、: set number
で行ナンバーの表示になる。
awk で行番号、ディレクトリ名というように表示させたければ、NR
をつければよさそう。
ls -l | awk 'BEGIN { OFS=" => " } $1 ~ /d/ {print NR, $9 }'
ただし、ターミナルコマンドで見ると、あまりに多くの行数になると消えてしまうので、ちゃんと意味のあるディレクトリなのかを目視で確認できない。>
を末尾につけて、ファイルに出力する方が確認にはよさそうである。
i hope for peace.
プーチンに死を