【VBA】HTTP通信でWEBスクレイピング4~Cookieとセッション~

Cookieとセッション

実は9月生まれのJimです。どうも✋

 

わすの誕生日前後=秋雨前線なので、秋雨前線は家族みたいなもん。。。

違うか。

はい。ってことで、今回は『Cookieとセッション』ってことなんだけど、前回の『POSTでフォームを送信する』でPOSTする時にCookieを扱いました。

'GETのレスポンスからクッキー取得
Dim setCookie As String
setCookie = http.getResponseHeader("Set-Cookie")

'POSTのリクエストヘッダ
http.setRequestHeader "Cookie", setCookie

で、このCookieってなに?美味しいの?って話ね。

 

1、Cookieとは

Cookieとはブラウザが保存してる小さいテキストファイルのことね。

で、このCookieにはWebサイトから渡された情報が入っていて、この情報を次回以降のリクエストで使ってるんだ。

今回の用意したログインアプリでは『セッションID』が入ってる。まあ、どのサイトもセッションIDはあるわ。

 

2、セッションとセッションID

セッションってのは、ユーザーがWEBサイトにアクセスしてブラウザを閉じるまでの期間のことで、今回のWEBサイトだとGETでログインページをリクエストした時に始まるのね。

で、サーバー側からしたら複数のアクセスがある訳だから、それらのアクセスを識別しないといけない。その時にランダムな英数字の文字列を発行するのがセッションID。

要は「通信中にあんたを特定するIDは○○だから、次回からセッションID送ってね。」ってことをやってる。

IDは基本的にブラウザ閉じるまでCookieに保存されてる。

同じブラウザで別タブ開いて同サイトにアクセスするとログイン状態が始まるのは、ブラウザがCookieを持ってて親切に送ってるからってことね。

 

3、ではVBAだと?

ブラウザならCookieを自動的に管理してくれるけど、VBAはブラウザの操作をするわけじゃなくHTTP通信をするだけなので。。。

じゃあ、Cookieの管理もやらないといけないよねこと。

なので、冒頭でVBAのCookie部分のソースを抜き出して貼ったんだけど、これ、、何かCookie指定しないと勝手に送ってそう。。。

まあ、知っておいた方がいいし、やった方が丁寧でしょ!

 

4、セッションIDだけで大丈夫?

・サーバー側はセッションIDによって『どのセッション』というのは判断できる

・しかし、Cookieはブラウザが自動的に送信する仕組み

・よって、悪意のあるサイトを踏むと意図しないリクエストを送信しかねない

個人情報を扱うWEBサイトがこんな簡単でいいのか?

否。よくないだろ。。。。

 

5、次回予告:CSRFトークン

Cookieは理解した。
だがしかし、セッションIDだけでは越えられぬ壁がある。
迫り来る脅威、CSRF!
果たしてVBAは、この罠を見破ることができるのか!?
次回「CSRFトークン」
VBAに、明日はあるのか。

 

 

北斗の拳の次回予告風にしたぜ!

次回で一旦終わり。

でも、そもそも。。。って話になるんだけどね。

はい。ってことで、またね✋