Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
347
Help us understand the problem. What is going on with this article?
@nightyknite

あのサイトで使われている技術を調べる

あのサイトで使われている技術を調べる
自分が今見ているサイトが、どんな技術で作られているか気になった時に調べる方法を、色々書いてみた。

URLから調べる

URLの拡張子が、xxxx.xx/xxxx.phpとかだったら、PHPで作られているとわかるが、最近は拡張子が出てるサイトの方が少ない。
とはいえ一応拡張子ごとの技術を載せておく。

拡張子 技術等 備考
.php PHP
.asp Active Server Pages(VBScript)
.aspx ASP.net(C#/VB.net) MVCじゃないWebフォーム形式だと見かける
.asmx ASP.net(C#/VB.net) SoapなどのWebservice
.bml BML Better Markup Language
.do Struts(Java) Javaのフレームワーク
.jsp JSP(Java)
.jspa Java Servlet Alias(Java) Confluenceなど
.jspx XML Java Server Page
.cfm ColdFusion Adobe製のJVM言語
.cfc ColdFusion Adobe製のJVM言語
.cgi CGI 主にPerl
.fcgi FastCGI 主にPerl
.pl Perl 主にPerl
.shtml SSI(Server Side Include)
.stm SSI(Server Side Include)
.lasso Lasso 実際に見たことないがあるらしい。
.rb Ruby 通常見かけないが、書籍等ではサンプル例を見かけた
.py Python 通常見かけないが、書籍等ではサンプル例を見かけた
.dll 不明 isapiとか?C++など
.exe 不明 何らかのバイナリファイルだと思われるが不明C++など

他にも
AS、BIN、CFR、CFSWF、DMG、HBXML、JSPX、JWS、MXML、SWC、SWSなど

とほほのWWW入門 拡張子一覧
List of file formats
拡張子ありのサイトは.html、.php以外のサイトは最近あまり見られなくなってきている。

拡張子別にどんなサイトがあるかはGoogleで inurl:index.jsp みたいに検索すると色々見つかる。inurl:は大量に実行するとGoogleのCapcha画面が出て不正な通信と警告される場合があるので注意。

後述のhttp ヘッダー情報等からServerはnginxでcookieにJSESSIONがあるのに
拡張子が.aspというページもあるので、別システムに移行したけど、URLはそのままにしたため拡張子が食い違うケースもありそうだ。

RubyやPythonはMVCフレームワークが話題になり出してからWEBで採用され出したからか、拡張子つきは見かけたことがない。

http ヘッダー情報から調べる

ブラウザのディベロッパーツール等を使ってhttpのヘッダー情報を調べることができる。
WebMakeBlog KIYOTATSU HTTPリクエストとHTTPレスポンスをchromeのデベロッパーツールで確認する方法

Serverヘッダー

Serverヘッダーからは:Webサーバのアプリケーションを知ることができる。

Server:nginx
Server:Apache
Server:Microsoft-IIS/10.0

IISの場合はWindowsのOSのバージョンの判断もできる

Serverヘッダー値 技術等 備考
Microsoft-IIS/7.0 IIS(Windows用のWebサーバ) Windows Server 2008/Windows Vista
Microsoft-IIS/7.5 IIS(Windows用のWebサーバ) Windows Server 2008R2/Windows 7
Microsoft-IIS/8.0 IIS(Windows用のWebサーバ) Windows Server 2012/Windows 8
Microsoft-IIS/8.5 IIS(Windows用のWebサーバ) Windows Server 2012 R2
Microsoft-IIS/10.0 IIS(Windows用のWebサーバ) Windows Server 2016/Windows 10
nginx/0.0.0 (Ubuntu) nginx バージョンありの場合もあり、OS名が記載している場合もあり
Apache Apache バージョンありの場合もあり、OS名が記載している場合もあり
meinheld Pythonのwebサーバ Mozillaのサイト等

X-Powered-By

x-powered-by: はWebアプリケーションが使用してるアプリケーションやそのバージョンを出力するのに使われている。

x-powered-by: の値からPHPやASP.netを使われているとわかる場合もある。
ただし、X-Powered-By:ASP.NETと入っていても、Windows IISサーバーで動いているからそう表示されるだけで、ASP.NETは使用していないケースもあり得る。

x-powered-by:PHP/5.3.3
x-powered-by値 技術等 備考
PHP/..* PHP
ASP.NET ASP.NET
Servlet/2.4 JSP/2.0 WebLogic
Express Express(NodeJS)

他にもX-AspNet-Version:のようなアプリケーション固有の値が付与される場合もある。

Cookieから調べる

ブラウザのディベロッパーツール等を使ってCookie情報を調べることができる。

WEBアプリケーションがSessionIDとして使用しているçookieの名称がアプリケーションごとに異なるので、それでわかるケースがある。

拡張子 技術等 備考
ASPSESSIONID***** ASP(VBScript) 違うケースもあるかも
ASP.NET_SessionId ASP.net(C#/VB.net)
JSESSIONID 主にJava JVM言語であればJava以外でもありえる
CFID,CFTOKEN ColdFusion JSESSIONIDの場合もある
PHPSESSID PHP
laravel_session Laravel(PHP)
CakeCookie[***] CakePHP(PHP)
_*****_session Ruby on Rails(Ruby) 他と被りそうなので判別は無理そう
sessionid Django(Python) 他と被りそうなので判別は無理そう
PLAY_SESSION Play(Scala) cookie名変更可能なので違う場合もある

SessionIDに使うCookie名はカスタマイズされて、別の名前に変わっているケースもあるし、自前のCookie値でSession管理していて判定できないケースもあり得る。

他にもロードバランサーによってcookieが付与されているケース(BIGipServer***_***)、
GoogleAnalyticによってCookieが付与されているケース(_ga)などがある。

HTML、Javascriptから調べる

サイトのHTMLソースコードを見て、何を使っているか調べてみる。
JQueryのようなJavascriptのライブラリ等であれば、直接見てわかることができる。

CSRFトークン名文字列

Ruby on Railsの場合は、CSRF対策用のトークン名がauthenticity_tokenとなっているのでRuby on Railsを使用しているかどうかわかる。


<!-- metaタグの場合 -->
<meta name="csrf-param" content="authenticity_token" />

<!-- input hidden属性の場合 -->
<input name="authenticity_token" type="hidden" value="トークンの値" />

また、PythonのフレームワークDjangoのCSRF対策用のトークン名もcsrfmiddlewaretokenと決まっているので、Djangoを使用しているかどうか判別することができる。

<input type='hidden' name='csrfmiddlewaretoken' value='値' />

フレームワークによってトークン名は変更して使う場合や、固定で決まっている場合などがある。

フレームワーク トークン名 備考
Ruby On Rails(Ruby) authenticity_token  
Django(Python) csrfmiddlewaretoken  
Flask(Python) csrf_token  
CakePHP(PHP) data[_Token][key]  
Laravel(PHP) _token  
FuelPHP(PHP) fuel_csrf_token(変更有) security.csrf_token_keyで任意指定
CodeIgniter(PHP) csrf_test_name(変更有) $config['csrf_token_name'] の値を変えて使う 
PlayFramework(Scala) csrfToken  
ASP.net Core(C#) __RequestVerificationToken  
Spring(Java) _csrf  
csurf(NodeJS) _csrf  
gorilla(Golang) gorilla.csrf.Token  
echo(Golang) _csrf  
Express(NodeJS) _csrf   変更可

HTML情報から、Javascript等のクライアント側の技術を知る事は出来るが、Ruby on Railsみたいに特徴的なものがないと、サーバサイド側の技術を知るのはちょっと難しい。

メールヘッダーから探す

受信するメールのヘッダー情報から、送信するアプリケーションの情報が取得できる場合もある。
Salesforce Trailblazer Community メールヘッダーを確認する方法

メールヘッダーからアプリケーションを特定する

メールのヘッダー情報の X-Mailer:User-Agent: からどのアプリケーションを使用しているかわかる場合がある。

例えば、MailChimpのようなメール配信サービスを利用しているケース。
そのサービスの名前やサービスが使っているアプリケーション名がX-Mailer:上に出力される。

X-Mailer:⁨MailChimp Mailer - **XXXXXXXXXXXXXX**⁩ 

PHPを使用しているとX-Php-Originating-Script:のヘッダーが付く場合がある。
PHPマニュアル 実行時設定


X-Php-Originating-Script: 0000:hoge.php

CodeIgniterには標準でヘッダーに出力されるそう。

CodeIgniterの標準メールでユーザーエージェントを削除する

User-Agent: CodeIgniter
X-Mailer: CodeIgniter

CakePHPだと

X-Mailer: CakePHP Email

メールヘッダーの文字コード

Content-Type: text/plain; charset=iso-2022-jp
Content-Type: text/plain; charset=utf-8
Content-Type: text/plain; charset=us-ascii

テキストメールの場合、メールヘッダーに上記のような文字コードが記載されている。
iso-2022-jpは、UTF-8に非対応のメールクライアントで日本語表示するための文字コードなので、日本語向けで、UTF-8に非対応のガラケーの時代からあったサービスだと推測できるかもしれない。

SPFレコードを調べる

送信メールがなりすましメールとして判断されないようにするため、送信元のサービスをSPFレコードに登録する必要がある。このSPFレコードはdigコマンドを使って調べられる。

dig slack.com  txt

;; ANSWER SECTION:
slack.com.      3600    IN  TXT "v=spf1 include:amazonses.com include:mailgun.org include:u931175.wl176.sendgrid.net include:_spf.qualtrics.com -all"

slack.comの場合は、メールの送信にamazonses、mailgun、sendgridが使われていることがわかる。qualtricsはアンケート作成サービスだが、ここ経由でメールが送られてると思われる。

dig gitlab.com  txt

;; ANSWER SECTION:
gitlab.com.     300 IN  TXT "v=spf1 include:mail.zendesk.com include:_spf.google.com include:spf.recurly.com include:mktomail.com include:_spf.salesforce.com include:_spf-ip.gitlab.com -all"

gitLab.comの場合、顧客管理のzendesk、個別のメール送信にGoogle(Gsuite?)、有料会員支払サービスにrecurly、販促ツールにmarketo、顧客管理か業務支援でSalesforce.comを使っていると思われる。

SSLサーバ証明書で調べる

多くのサイトがhttps対応しているのでSSLサーバ証明書が入っている。ここから何かわかるか。

Google ChromeでWebサイトのSSLサーバ証明書を調査・確認する

ここから得られる技術情報はあまり多く無い。どこのSSLサーバ証明書を使用しているかとか、発行した組織の情報とか。Qiitaの場合はAmazonのサーバ証明書を使っているので、AWSを使っているだろうと予測できる程度。

下記のサイトでSSL証明書の設定の安全性の評価などがわかる。TLS 1.1が無効になっているのかとか。
SSL Server Test (Powered by Qualys SSL Labs)

pingでOSなどの機器情報を特定する

サーバーにpingコマンドを打つとTTL(Time To Live)値が取得できる。

ping -c1 example.com

PING example.com (xx.xxx.xxx.xx): 56 data bytes
64 bytes from xx.xxx.xxx.xx: icmp_seq=0 ttl=50 time=182.884 ms

この値は、初期値がOSごとに決まっていて、ルータを1台通過するごとに1つ減る。
この初期値はLinuxは64、Windowsは128、Unixは255となっている。実際の値はこの値より減ってしまうが、これでどのOSを使っているか判別できる。
ただしpingがブロックされている場合もあるし、あまりやりすぎると迷惑行為になる可能性があるし、httpヘッダー情報をみた方が良い場合が多いので、あまり意味がないかも。
社内ネットワーク内で不明サーバーをチェックする時に使えるぐらいか。

また、どんなルーターを通っていたかはtracerouteを使うとわかる。

# Linux、Macの場合
traceroute example.com
# Windowsの場合
tracert example.com

WHOIS情報から調べる(ドメイン・IPアドレス)

ドメイン名から、そのドメインの登録情報を調べる事ができる。
下記のようなサイトから探す事が出来る。

登録年月日、ネームサーバ、レジストラ等がわかる。

登録年月日(Creation Date)から、いつ頃、そのサービスの企画が立ち上がったのかがわかる。
ネームサーバ、レジストラなどから、どのデータセンター、AWSなどのパブリッククラウドを使っているのかなどが推測できる。


   Domain Name: EXAMPLE.COM
   Registry Domain ID: 2336799_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.iana.org
   Registrar URL: http://res-dom.iana.org
   Updated Date: 2018-08-14T07:14:12Z
   Creation Date: 1995-08-14T04:00:00Z
   Registry Expiry Date: 2019-08-13T04:00:00Z
   Registrar: RESERVED-Internet Assigned Numbers Authority
   Registrar IANA ID: 376
   Registrar Abuse Contact Email:
   Registrar Abuse Contact Phone:
   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
   Name Server: A.IANA-SERVERS.NET
   Name Server: B.IANA-SERVERS.NET

また、IPアドレスから、下記のようなサービスで検索すると、データセンターなどの情報が取得できる。
ドメイン/IPアドレス サーチ 【whois情報検索】

サーバーのIPアドレスから、どこのパブリッククラウドを使っているか予測するという手もある。
Amazon/Azure/Google/Salesforceの公開IPアドレス範囲

CDN(コンテンツデリバリーネットワーク)を確認する

画像やCSSやJSなどのコンテンツのURLがサイトのURLとは異なっている場合がある。


<img src="https://qiita-user-contents.imgix.net/*****" >

これはCDN(Content Delivery Network)と呼ばれるコンテンツ配信サービスを使っている場合が多い。

CDNってそもそも何?なんかサーバの負荷が下がるって聞いたんだけど!〜Web制作/運営の幅が広がるCDNを知ろう第1回〜

例の場合はimgixというリアルタイム画像処理に特化したCDNのようだ。

Qiita Jobsにimgixを導入し、画像サイズを大幅に改善しました

ドメイン名で検索をかけてみるとサイトによって色んなCDN事業者が使われていることがわかる。

Wappalyzerを使う

Wappalyzerというツールが閲覧中のWebサイトで使われている情報を表示してくれる。Chrome/FireFoxのアドオンで使うと便利

wap.png

細かい使い方はこちら。
閲覧中のWebサイトで使われている技術を確認できるChrome拡張「Wappalyzer」のご紹介

具体的にどうやって調べているのかなと、言うところだけど
GitHubのWappalyzer/src/apps.json
に記載されている部分を見ると、httpヘッダー情報やHTMLの中に記載されているタグとか特定の情報をもとに判定しているようだ。ちょっと見ていて面白い。

判定の性格度合いは、前述した、URL、httpヘッダー情報、cookie名、HTMLソース内の情報をもとにしているので、クライアントサイドの情報は結構ひろってくれるが、サーバサイド側の技術は正しく判定されてない、もしくは検出されない場合が多そうだ。Ruby on Railsについてはauthenticity_tokenの値判定のおかげで結構ちゃんと判定されていると思われる。

builtwithを使う

下記のサイトでチェックしたいサイトのURLを入れると、使われている技術が色々見れる。
https://builtwith.com/

bult.png

Wappalyzerよりも取得できる情報は多そう。
ショッピングカートがあるかどうかの判定も出来ている。どうやっているのか謎。
他にも、メール配信サービスとか、日本向けのサービスも含めて網羅している。

ここで紹介されていた。
最強のリンク集の最強のリンク集

類似サービスでSimilarTechというのもある。
こちらは変更履歴もチェックしているらしい。あと類似サイトも表示してくれる。(例えばレシピサイトだったら類似のレシピサイトらしきものを紹介してくれる)

StackShareを使う

StackShareは企業や有名サービスがどんなツールを使っているか、このツールを使っているのはどんな企業があるか調べるサービス。企業自身が登録してるみたいなので信ぴょう性は高い。Wantedly Toolsと似た感じ。

stack.png

他にも類似サービスはいくつかある。

企業の採用情報、転職サービスの採用情報から探す

自社開発しているとこだと、採用ページにどの技術を社内で使っているか情報がのっている。
転職サービスとかのサイトにも募集している職種の採用技術等が乗っている。

例えば、Amazonの場合、
必要条件にJavaが出てくる頻度が高いのでJavaの需要が高いのではと予想でき、
業務内容からJava、Ruby on Rails を使ったサービスがあるとわかる。
最初調べようと思ったAmazonの通販サイト側に関する情報は見つからなかったのでそこまではわからなかったけど。

ちなみにこのAmazonの採用ページ

  • HTTPヘッダー情報は、X-Powered-By:Phusion Passenger Ruby on Railsで使われるサーバを使用していて
  • cookie名も_rails-root_sessionでRuby on Railsと判定でき
  • HTML情報もauthenticity_tokenがありRuby on Railsと判定でき

Ruby on Railsで作られていることは間違いないと判断できた。

企業の技術ブログや、技術系サイト、SNS、ニュース記事等で探す

目当てのサイトの企業ブログがあって、自社技術に書かれてあれば確実。
QiitaのOrganization一覧などからわかる場合も中にはある。

技術記事に書かれてあることやSNSなどの情報からわかる場合もある。
例えば、Javaの生みの親であるジェームズ・ゴスリンはAmazon Web Servicesに在籍していて、OpenJDKディストリビューションのAmazon CorrettoがAmazonのサービスで使われていると言っているのでJavaが使われているんだと判るとか。

他人のサイトでやってはダメな方法

サイトに迷惑をかけてしまう、攻撃をしているとみなされる可能性が高い行為は避けるようにすること。
ポートスキャンツールを使ってどのポートが開いているかチェックして、何が動いているか推測する方法があるが、これを他人のサイトでやると攻撃と見なされる可能性があるのでやるのは危険。
また、サーバーの情報を識別するツール(Server FingerPrinting)、脆弱性検査ツール(Vulnerability Scanner)などを使うのも、擬似攻撃を行うものもあるので管轄外のサイトで使用するのは危険。侵入(Penetration)テストツールは特に管轄外のサイトでは使用してはいけない。
たとえ自分のサイトでもデータセンター等に事前許可がいる場合もある。

その他あれこれ

使われている技術と調べるとはちょっと意味が違うけど、
そのサイトから色々得られる情報をチェックできるサービスを書いていく。

IPひろば

ドメインとかIPアドレスから、そのサイトのWHOIS情報などを調べる。
単にwhois情報だけでなく、組織情報や不正情報が日本語で出てたが、その部分は現在有料版になってる。
https://www.iphiroba.jp/

CMAN ドメイン/IPアドレス サーチ 【whois情報検索】

これもドメインとかIPアドレスから、そのサイトのWHOIS情報などを調べる。
https://www.cman.jp/network/support/ip.html

NetCraft Site Report

WHOIS情報とかサーバ情報を取得。過去履歴もあるので、数年前に使われていたGlobal IPとかサーバOSがわかる場合もある。
https://toolbar.netcraft.com/site_report

DNSdumpster.com

該当ドメインに紐づいているサブドメインを見つけてくれたりできるサービス。
ポートスキャンするなど能動的にサーバーにアクセスする機能も含まれているため、物によっては攻撃とみなされる可能性があるため扱いには注意が必要。
サブドメイン一覧を表示させる方法
dnsdumpster.com

mxtoolbox

DNS Lookアップや、メールのSPFレコードのチェックを行える。
https://mxtoolbox.com/spf.aspx

PageSpeed Insights

Googleのサイトのスピード計測ツール
https://developers.google.com/speed/pagespeed/insights/?hl=ja

Lighthouse Chrome 拡張機能

Googleのサイトを評価する Chrome 拡張機能
https://webmaster-ja.googleblog.com/2018/02/seo-audit-category-in-lighthouse.html

GTmetrix

スピード計測ツール。PageSpeedやYSlowを使ってチェック。
テストサーバーがカナダなので日本のサイトだとLoaded Timeは長めに判定されるかも。
https://gtmetrix.com/

SimilarWeb

競合サイトのアクセス数などをチェックスする。
https://www.similarweb.com/ja
https://www.unionnet.jp/knowledge/similarweb/
https://webweb.hatenablog.com/blog/web-service/similarweb

Alexa

Webサイトのアクセス数ランキングなどをチェック。
https://www.alexa.com/siteinfo
https://webtan.impress.co.jp/e/2010/08/17/8603

SEOのツール

サイトの検索順位とかチェックするツール。沢山あったので紹介サイトをのせる。
https://ferret-plus.com/412

HTMLコーディングチェック

W3Cのhtmlが正しいかチェックするツール
https://validator.w3.org/

Gred

そのサイトが安全かチェックチェックしてくれる
http://check.gred.jp/

aguse

これも、そのサイトが安全かチェックしてくれる
https://www.aguse.jp/

ssllabs SSL Server Test

SSL証明書の設定の安全性の評価をA~Fの段階評価や細かく指摘してくれる。
https://www.ssllabs.com/ssltest/

347
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
347
Help us understand the problem. What is going on with this article?