0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Qiitaの目次に、本文中にない任意の文字列を表示させる裏技(もしかしたら仕様かも)

Last updated at Posted at 2020-03-02

1. 内容

qiitaに投降した記事って、右サイドに自動的に見出しを集めた目次が生成されますよね。

image.png

ここに、任意の文字列を表示させる裏技があります。

image.png

↑こんな感じで。

やり方は簡単です。

qiitaのmd

<!--
#任意のテキスト
-->

ってやるだけ。

2. どうしてこんなことできるの?chromeの解析ツールで調べようとしてみた(ごめんなさい結論は出ませんでした)

結論が出なかったので、あまり読んでも役に立たないと思います。
ただ、chromeのページ解析ツール・javascriptデバガの使い方の参考にはなると思うので、興味があればぜひお読みください

chromeのブラウザで、検証ツールを開いてみた。

image.png

こんな感じで、<li>タグによるリストによって、qiitaの目次は成形されている。・・・①
とりあえず、リストの内容の一部である部分文字列<a href="#0-%E5%88%9D%E3%82%81%E3%81%ABをコピーしておいた。
次に「ソースの表示」をして、コピーした文字列をctrl+fで検索すると、

image.png

あれ?<li>タグになってない!?
他の所にあるのかな?いやでも検索結果は1件だけだしなあ・・・

この事実から、<script>タグで目次の<li>タグが生成されたのではないかと、(消去法により)推測できます。

再び検証ツールに戻って、スクリプトにブレークポイントを設置してリロードし、どのスクリプトが目次を生成しているのか調べてみましょう。

image.png

上の図で、①の通りSourcesタブをクリックし、②のようにソース一覧が表示されるので、その中からスクリプトを探すこともできます。
しかしクラウドマークが大量に出てきて、まさに「雲をつかむような話」です。(でもmicroad.jpとか、analytics.twitter.comなど、広告やアナライズに関するものがほとんどなので、ちょっと考えれば見なくていいソースがほとんどですので、見るべきソースは実はそんなに多くないのかもしれません)

まあ、これだけソースが多いので、どのソースが目次を生成しているのか、見当もつきません。
そのような場合、networkタブを見てみます。

image.png
(実際には、毎回順番が前後したりするので、読む順番というより、各サーバが応答を返してきた順番のようですね)

あとは、二分法で、スクリプトを特定していくのが早いでしょう。

適当に真ん中らへんのスクリプトをマウスオーバします。

image.png

出てきたアドレス情報を元に、Sourcesタブからソースを選び、最初のコードにブレークポイントを設置します。

image.png

そしてリロードします。

image.png

目次が表示されてしまいましたね。
これはつまり、目次はfontdata.jsより前に読まれるソースが成形しているということを示します。

そのため、Networkタブに戻り、もっと前のスクリプトを選んで、同じ操作を繰り返します。
そうすれば、(対数)回目で、ソースを特定できるはずです。

ファイルを特定したら、デバッガのステップアウトやステップオーバーを使って、行を具体的に特定することもできます。
image.png

と、ここまで追いかけてみましたが、これ以上追跡しようとしてもパソコンがフリーズしてしまい、どうにもできなかったのでここであきらめることとします。

ちなみにこのv3-bundle-a4...というのはhttps://frtn.socdm.com/tags/insight.js から呼ばれていて、
しかもhttps://frtn.socdm.com/tags/insight.js はqiitaのコードに直接記述されています。
frtn socdmとかでググってみると、こんなページが見つかりました。
どうやらscaleoutという広告会社みたいです。
この会社のサービスで、見出し抽出とかでもしてるのかな。マーケティングに使えそうなキーワードを拾うとか?
いずれにせよソースが難読化されているため、手動ではこれ以上解析できませんでした。

そのため、無根拠の憶測となってしまうのですが、おそらく見出しを抽出するアルゴリズム(Qiitaのものなのか、scaleoutのものなのかは知りません)が<!-- -->によるコメントアウトを読んでいないんだと思います。

#3. 参考
https://ics.media/entry/190517/

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?