質問: CreateObject("MSXML2.XMLHTTP") '####POST#### WinHttp.Open "POST", "https://hjks.jepx.or.jp/hjks/member/login", False WinHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" WinHttp.send "loginid=アカウント&password=パスワード" '####GET#### WinHttp.Open "GET", "https://hjks.jepx.or.jp/hjks/member/outages_list", False WinHttp.send 'GETリクエストを送信 Debug.Print WinHttp.responseText End Sub ■事象■■ アカウントもパスワードも正しいののにログイン失敗してデータを取得できませんでした。 ■見解■■ WinHttp.send時にアカウント・パスワード以外に何か情報が必要なんでしょうか?cmdとか_csrf等 ↑参考URLにはアカウント・パスワードしか渡していませんでいたが両者にどのような違いがあるのでしょうか
回答: ログインページのソースを見ると、hiddenでトークンのようなものが存在します。 またログイン時のリクエスト先はlogin_finishのようです。 ``` ~ ``` なので、流れとしては次のようになるのではと思います。 ログインページをリクエスト。 https://hjks.jepx.or.jp/hjks/member/login ログイン要求。 https://hjks.jepx.or.jp/hjks/member/login_finish この際、IDとパスワードと、ログインページのレスポンスから_csrfを設定する。 これでログイン状態になっていると思われるので、 https://hjks.jepx.or.jp/hjks/member/outages_list をリクエスト。 この際、_csrfが必要かどうかは不明(たぶん必要)