情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

LINEのURLサムネイル画像表示機能がユーザーエージェントに「facebookexternalhit/1.1」を使用

LINE (1625) LINE株式会社 (1) アクセスログ (1)

iPhone版LINE 5.8.0が公開され、新しい機能が多数追加されました。その中の一つが、URLをトークで送信したときに、そのリンク先ページのタイトルと、サムネイル画像*を表示する機能です。この機能が、どのようなユーザーエージェントで、情報を取りに来ているのか、ちゃんと拒絶できる形式なのか、などが気になったので、調査してみました。

※タイトルなどでは「サムネイル」としましたが、ちょっと違う感がありつつも、イメージしやすいのでそうしました。

URL送信時のページ情報表示機能

iPhone版LINE 5.8.0より、URLを送信した際に、ページタイトルとページに含まれる画像を表示する機能が追加されました

naver-line-thumb-nail-user-agent-sample

調査内容

この記事概要を表示する為に、何らかのアクセスが、サーバーに到達しているはずです。

そこで、それを発見するために、わざと http://did2memo.net/abcdefghijklmn という、他に誰もアクセスし得ない架空のURLをLINE上で送信することにしました。

アクセスログ

当然、記事概要の表示には失敗するのですが、失敗する前に、ページの内容を取りに来たアクセスがありました

その際のサーバーログがこちらです。

203.104.145.40 - - [08/Dec/2015:00:01:25 +0900] "GET /abcdefghijklmn HTTP/1.1" 404 30896 "-" "facebookexternalhit/1.1"

LINE社からのアクセス

まず最初に確認しておきたいのが、アクセス元です。

IPアドレスについて調べると、次の情報が見つかりました。

  • ISP: Techorus Inc.
  • Organization: LINE Corporation
  • Country: Japan (JP)

引用元

このように、LINE社からのアクセスである、ということがわかります。

※「Techorus Inc.」は、LINEの関連会社、NHN comico の子会社で、現在「NHN テコラス株式会社」という名前です。

つまり、トーク本文でのやりとりのうち、貼り付けたURLの情報は、LINE社に一度提供された上で、LINE社が代理でページ情報を取得していることがわかります。

ユーザーエージェント

さて、本当のところ、アクセスログを見て、最初に目を引いたのは、ユーザーエージェントの「facebookexternalhit/1.1」でした。

LINE社からのアクセスのはずが、「facebook」という名前で、アクセスしてきています

ユーザーエージェントと言えば、多くの場合、ブラウザの情報を登録するところで、ロボットからのアクセスであれば、Googlebot/2.1 や Baiduspider/2.0 のような情報を含み、アクセス元の正体が分かるようになっています。

もちろん、正しく申告しないケースもありますが、このLINEの場合は、「facebookexternalhit/1.1」という、別組織「facebook」の名をかたっています

よく、「Baidoからのアクセスが嫌だから、ユーザーエージェントを見てブロックする」ということがありますが、今回のアクセスは、「facebook」からのアクセスに見えるため、「facebookなら許可しておこう」と設定をしているサーバーも、このLINEからのアクセスをfacebookからだと思って許可してしまう、という構造です。そしてまた、その効果を狙った上で、LINE社側も設定していると思われます(cf. robots.txt)。

facebookexternalhit/1.1

また、このユーザーエージェントについて調べてみると、「facebookexternalhit/1.1」は、Facebook上でURLをシェアする際に、ページの概要や、画像が取得されるかと思いますが、その際に利用されるもののようです

参考:WEBサイトのURLがFacebookでシェアorいいねされた場合の挙動(OGP) - Qiita

つまり、今回のLINEのシステムと、目的が共通しています

したがって、facebookexternalhit/1.1でリクエストを送信することには、facebook相手に返している情報と同じレベル*のものがとれるはずという効果があるわけです。

具体的に、このようなページの概要情報は、OGPという形式でやりとりされるn

このように、facebookのユーザーエージェントに載っかって取得している事が分かりました。

微妙な違い

しかし、アクセスを調べてみると、facebookからのアクセスの場合、ユーザーエージェントは「facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)」となっており、このロボットについての説明ページへのリンクがある(ロボットの良いマナー)のですが(先ほどの参考サイトと一致)、LINE社からのアクセスの場合、ユーザーエージェントは「facebookexternalhit/1.1」のみ、であり、URLが含まれていない、という点が異なります。他社へのURLを含めてしまうのはさすがに危ない、という判断があったのでしょう…

Twitterはどうしてるのか確認

一応、Twitterも似た仕組みを使っているので、OGP取得=facebookexternalhitを使うマナーでもあるのか、と確認してみましたが、投稿後最初にTwitterから来たアクセスには、「Twitterbot/1.0」というユーザーエージェントが指定されていました。

ひとこと

単純なアクセスログだけから、いろいろわかる、というところは、Gunosyでのいろいろを思い出します(もう修正済み)。

これらの記事を探していて目に入って思いだしたのですが、そもそもLINE社が指定してくるユーザーエージェントについて、以前こんな記事も書いていました

得体の知れない大量アクセスが来ていた、という話で、実はLINEからでした、というものです(修正済みか未確認)。

今回の内容がどれだけ良くないことなのか、一般的な共通認識を語るのは難しいのですが、とりあえず「facebookexternalhit」という名前であっても、それ、LINE株式会社からのアクセスかも知れないよ、ということは事実のようです(上記Gunosy記事のように、その後修正される可能性あり)。

関連記事

コメント(0)

新しいコメントを投稿