LoginSignup
4
4

More than 5 years have passed since last update.

Qiitaの記事をオートインクリメントな番号で参照する?

Posted at

はじめに

とある理由で受けとった壊れたQiitaのURLを開いたところ、完全に意図しないページに飛ばされた。これを元に色々と調べた結果、どうやらQiitaの記事は$1$から始まるオートインクリメントな番号でも参照できそうであるということが分った。

記事のリダイレクト機能

QiitaはユーザーIDの変更などで記事URLが変更されても、引き続き古いURLが使えるようになっている。これは次のように確かめることができる。まず、完全にアクセスできるURLhttp://qiita.com/yyu/items/aab20a0d1de7cf786409のユーザーIDであるyyuを適当に置き換えて、例えばhttp://qiita.com/this_is_a_pen/items/aab20a0d1de7cf786409などとしてアクセスしても、次のようにリダイレクトされる。

$ curl --include http://qiita.com/this_is_a_pen/items/aab20a0d1de7cf786409
HTTP/1.1 302 Found
Cache-Control: no-cache
Content-Type: text/html; charset=utf-8
Date: Sat, 03 Sep 2016 07:23:42 GMT
Location: http://qiita.com/yyu/items/aab20a0d1de7cf786409
Server: nginx
Vary: Origin
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Request-Id: bf516f1e-348c-4fdf-9317-6addf17df427
X-Runtime: 0.021502
X-XSS-Protection: 1; mode=block
transfer-encoding: chunked
Connection: keep-alive

<html><body>You are being <a href="http://qiita.com/yyu/items/aab20a0d1de7cf786409">redirected</a>.</body></html>

壊れたURLとオートインクリメントな記事番号

URLhttp://qiita.com/yyu/items/1638を受け取って開いたところ、ユーザーIDがyyuであるのに全く関係のないユーザーの記事が表示された。このことから、これはもしかして$1638$番目の記事が表示されたのではないかと考えて、次のようなURLをためした。

$ curl --include http://qiita.com/yyu/items/1
HTTP/1.1 301 Moved Permanently
Cache-Control: no-cache
Content-Type: text/html; charset=utf-8
Date: Sat, 03 Sep 2016 07:28:08 GMT
Location: http://qiita.com/yaotti/items/68f6ee99a35a15ed8074
Server: nginx
Vary: Origin
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Request-Id: 438466b9-ccd7-486c-ac0e-f55034ffac0a
X-Runtime: 0.012392
X-XSS-Protection: 1; mode=block
Content-Length: 116
Connection: keep-alive

<html><body>You are being <a href="http://qiita.com/yaotti/items/68f6ee99a35a15ed8074">redirected</a>.</body></html>

さっそく、リダイレクト先の記事http://qiita.com/yaotti/items/68f6ee99a35a15ed8074を開くと、この記事は2011年09月16日に投稿されていたことが分った。そして、次のURLに次のように書かれている。

「Qiita」は、2011年9月16日のサービス開始以来、堅調に利用者数を伸ばし、2012年10月31日時点で、月間ユニークユーザー数8万人を達成しました。

このように、あとは$1$から順番に数を大きくしていったところ、古い順に記事を取得することができたので、おそらく間違いはないだろうという結論に至った。

まとめ

今回の調査は手作業によるもので、プログラムを使って完全にそうであることを確かめるのはまだやっていないから、もしかしたらこの規則は成り立たないかもしれない。ただこういう仕様があるとしたら、何かの役に立つかもしれない。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4