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

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

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

| 拡張子       |       技術等 | 備考|
|:-----------------|:------------------|:------------------|
| .php             |PHP | .php4、.phps、.phtmlの場合もある　|　
| .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++など|

[とほほのＷＷＷ入門 拡張子一覧](http://www.tohoho-web.com/ex/draft/extension.htm)
[List of file formats](https://en.wikipedia.org/wiki/List_of_file_formats#Webpage)
拡張子ありのサイトは.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のデベロッパーツールで確認する方法](http://kiyotatsu.com/chrome_http_res/)

### 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のサイト等 |
| SimpleHTTP/0.* Python/3.*.* | Pythonのbuildinサーバー | |
| WEBrick/*.*.* (Ruby/*.*.*/****-**-**) | Ruby(WEBrick) | |
| istio-envoy |  | |
| Kestrel |  | |
| cloudflare |  | |

### 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)  | | 
| Next.js  |Next.js(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を使用しているかどうかわかる。

```html

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

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

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

```html
<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みたいに特徴的なものがないと、サーバサイド側の技術を知るのはちょっと難しい。


## HTTPプロトコルを調べる

ブラウザのディベロッパーツール　から[HTTPプロトコル](https://ja.wikipedia.org/wiki/Hypertext_Transfer_Protocol)を確認することができる。

![http-dev.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34699/95c17fc9-4932-ce01-1a4d-c070c66af544.png)

HTTPはWebブラウザーとWebサーバーをやり取りするための方法ですが、Webサーバーやその設定によっていくつかのバージョンや種類が存在する。


| プロトコル       |  Chrome上の表示名| 備考|
|:-----------------|:------------------|:------------------|
| HTTP/1.1| http/1.1 |
| HTTP/2    |h2| |
| HTTP/3	   |h3 | |
| HTTP/3	   |http/2+quic/99 | ChromeのHTTP/3(ドラフト版)対応の時に使われていた表示 |


* [HTTPプロトコル](https://ja.wikipedia.org/wiki/Hypertext_Transfer_Protocol)
* [ChromeのHTTP/3(ドラフト版)対応](https://asnokaze.hatenablog.com/entry/2019/09/21/230756)

## メールヘッダーから探す
受信するメールのヘッダー情報から、送信するアプリケーションの情報が取得できる場合もある。
[Salesforce Trailblazer Community メールヘッダーを確認する方法](https://help.salesforce.com/articleView?id=000005758&language=ja&type=1)

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

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

例えば、[MailChimp](http://www.loftwork.jp/column/2013/20131010_mailchimp.aspx)のようなメール配信サービスを利用しているケース。
そのサービスの名前やサービスが使っているアプリケーション名が``X-Mailer:``上に出力される。

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

```

PHPを使用していると``X-Php-Originating-Script:``のヘッダーが付く場合がある。
 [PHPマニュアル 実行時設定](http://www.php.net//manual/ja/mail.configuration.php)


```

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

``` 


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

[CodeIgniterの標準メールでユーザーエージェントを削除する](https://qiita.com/w-matsumoto/items/e7caa28c8027ca8fe12e)

```
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サーバ証明書を調査・確認する](https://www.atmarkit.co.jp/ait/articles/1809/05/news032.html)

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

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


## 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は１２８、Unixは２５５となっている。実際の値はこの値より減ってしまうが、これでどのOSを使っているか判別できる。
ただしpingがブロックされている場合もあるし、あまりやりすぎると迷惑行為になる可能性があるし、httpヘッダー情報をみた方が良い場合が多いので、あまり意味がないかも。
社内ネットワーク内で不明サーバーをチェックする時に使えるぐらいか。

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

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


* [Pingコマンドだけで通信先のOSがわかってしまう！](https://www.nedia.ne.jp/blog/2019/03/19/13842)
* [Default TTL (Time To Live) Values of Different OS](https://subinsb.com/default-device-ttl-values/)
* [Windowsの「ping」コマンドでネットワークトラブルの原因を調査する (1/2)](https://www.atmarkit.co.jp/ait/articles/0012/01/news002.html)
* [traceroute（tracert）　～ネットワークの経路を調査する](https://www.atmarkit.co.jp/ait/articles/0108/30/news003.html)




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

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

* [Whois検索 | さくらのドメイン](https://domain.sakura.ad.jp/whois/)
* [Whois検索｜ドメイン取るならお名前.com](https://www.onamae.com/service/whois/)
* [ドメイン/IPアドレス サーチ 【whois情報検索】](https://www.cman.jp/network/support/ip.html)

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

登録年月日(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
```

* [Whois情報で表示されるステータス](https://faq.interlink.or.jp/faq2/View/wcDisplayContent.aspx?id=1004)

また、IPアドレスから、下記のようなサービスで検索すると、データセンターなどの情報が取得できる。
[ドメイン/IPアドレス サーチ 【whois情報検索】](https://www.cman.jp/network/support/ip.html)

サーバーのIPアドレスから、どこのパブリッククラウドを使っているか予測するという手もある。
 [Amazon/Azure/Google/Salesforceの公開IPアドレス範囲](https://dev.classmethod.jp/cloud/cloud-computing-service-public-ip-ranges/)


## CDN（コンテンツデリバリーネットワーク）を確認する

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

```html

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

```

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

[CDNってそもそも何？なんかサーバの負荷が下がるって聞いたんだけど！〜Web制作/運営の幅が広がるCDNを知ろう第1回〜](https://knowledge.sakura.ad.jp/19191/)

例の場合は[imgix](https://www.imgix.com/)というリアルタイム画像処理に特化したCDNのようだ。

[Qiita Jobsにimgixを導入し、画像サイズを大幅に改善しました
](https://qiita.com/hareku/items/cfa2ccef7ff9a8b9c5d2)

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



## Wappalyzerを使う

[Wappalyzer](https://www.wappalyzer.com/applications)というツールが閲覧中のWebサイトで使われている情報を表示してくれる。Chrome/FireFoxのアドオンで使うと便利

![wap.png](https://qiita-image-store.s3.amazonaws.com/0/34699/e013c13c-9dd4-1d64-a1cc-736313b62235.png)


細かい使い方はこちら。
[閲覧中のWebサイトで使われている技術を確認できるChrome拡張「Wappalyzer」のご紹介](https://qiita.com/potato4d/items/6a64fb025ba38edb1670)

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

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

## builtwithを使う

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

<img width="891" alt="bult.png" src="https://qiita-image-store.s3.amazonaws.com/0/34699/ce07bf79-b75a-ee67-99e7-c88c3e48b781.png">


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

ここで紹介されていた。
[最強のリンク集の最強のリンク集](https://qiita.com/rana_kualu/items/72e9792587ce1ce74e5a)

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

## StackShareを使う

[StackShare](https://stackshare.io/stacks)は企業や有名サービスがどんなツールを使っているか、このツールを使っているのはどんな企業があるか調べるサービス。企業自身が登録してるみたいなので信ぴょう性は高い。[Wantedly Tools](https://www.wantedly.com/tools)と似た感じ。

<img width="1177" alt="stack.png" src="https://qiita-image-store.s3.amazonaws.com/0/34699/9ae8425d-7380-2451-1933-03599a557bc8.png">


* [最新の技術トレンドに追従する最も簡単な方法](https://qiita.com/syui/items/28b231196eb191ab91b2)


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

* [「Siftery」でITツールオタクになろう](https://note.com/sukoburu_salad/n/n4f5ce28eb1d6)
* [Alternative products to StackShare](https://www.producthunt.com/alternatives/stackshare-2)

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

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

* [Amazon PaymentのSoftware Development Engineer](https://www.amazon.jobs/jp/jobs/605332/software-development-engineer)の場合、C, C++, C# または Javaのようなプログラミング言語が必要となっている。
* [Amazon Fulfillment SvcsのSoftware Development Engineer](https://www.amazon.jobs/jp/jobs/605465/software-development-engineer-ii-amz2233)の場合、業務内容にJavaを使うと書かれている。
* [AWSのSoftware Development Engineer](https://www.amazon.jobs/jp/jobs/605414/software-development-engineer)の場合、Python, Ruby, Perl, および Java　またはいずれか一方が必要となっている。
* [AWSのPLM Agile System Architect](https://www.amazon.jobs/jp/jobs/605259/plm-agile-system-architect)の場合、JavaとOracleで作られたシステムの開発をするとある。

* [Amazon Music team  Software Engineer](https://www.amazon.jobs/jp/jobs/206406/software-engineer)の場合、サービスにRuby on Railsが使われていて、Java or C++, HTML, CSS, JavaScriptのスキルが必須となっている。


ちなみにこの[Amazonの採用ページ](https://www.amazon.jobs/)は

* 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、ニュース記事等で探す
目当てのサイトの[企業ブログ](https://qiita.com/kidatti/items/ced9fd53ea2e279d7346)があって、自社技術に書かれてあれば確実。
Qiitaの[Organization一覧](https://qiita.com/organizations)などからわかる場合も中にはある。

技術記事に書かれてあることやSNSなどの情報からわかる場合もある。
例えば、Javaの生みの親である[ジェームズ・ゴスリン](https://ja.wikipedia.org/wiki/%E3%82%B8%E3%82%A7%E3%83%BC%E3%83%A0%E3%82%BA%E3%83%BB%E3%82%B4%E3%82%B9%E3%83%AA%E3%83%B3)はAmazon Web Servicesに在籍していて、OpenJDKディストリビューションのAmazon CorrettoがAmazonのサービスで使われていると言っているのでJavaが使われているんだと判るとか。


* [ゴスリングが帰ってきた！「Amazon Corretto」の登場に全Javaユーザが歓喜する理由](https://gihyo.jp/news/nr/2018/11/1501)


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

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


* [ポートスキャンツール「Nmap」を使ったセキュリティチェック](https://knowledge.sakura.ad.jp/97/)
* [OSS or Freeのセキュリティ診断ツール](https://qiita.com/quickguard/items/f0721ecb026799506dbd)
* [Web サーバーの Fingerprint のお話
](https://diary.shift-js.info/http-fingerprinting/)
* [クラウドサービスを脆弱性診断する時のお作法](http://tigerszk.hatenablog.com/entry/2017/06/20/202335)
* [ハニーポットの運用が規約違反でないか調べてみた](https://blackle0pard.net/v9bnm7/)
* [Webスクレイピングする際のルールとPythonによる規約の読み込み](https://vaaaaaanquish.hatenablog.com/entry/2017/12/01/064227)

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

### 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
該当ドメインに紐づいているサブドメインを見つけてくれたりできるサービス。
ポートスキャンするなど能動的にサーバーにアクセスする機能も含まれているため、物によっては攻撃とみなされる可能性があるため扱いには注意が必要。
[サブドメイン一覧を表示させる方法](https://tetsuyahattori.com/web-marketing/serch-subdomain)
[dnsdumpster.com](https://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/