GET/POST通信でcookieをやり取りし、ログイン処理
google apps scriptを使用しています。
あるサイトへのログイン処理を行っています。
var LOGIN_URL = "**********";
var userid = "*********";
var password = "***********";
var source_URL = "************";
var options = {
method : "post",
followRedirects: true,
contentType: "applicationxml; charset=utf-8",
payload : {
userId: userid,
password: password
}
};
var response = UrlFetchApp.fetch(LOGIN_URL, options);
var headers = response.getAllHeaders();
上記のようにオプションを設定し、ログインを行いました。
そして、取得したヘッダー情報の中に、
Set-Cookie=[Ljava.lang.Object;@6eee775a, Vary=Accept-Encoding, X-XSS-Protection=1; mode=block, Content-Type=text/html; charset=utf-8}
があります。
それをまた、変数cookiesに格納しています。
if ( typeof headers['Set-Cookie'] !== 'undefined' ) {
var cookies = typeof headers['Set-Cookie'] == 'string' ? [ headers['Set-Cookie'] ] : headers['Set-Cookie'];
for (var i = 0; i < cookies.length; i++) {
cookies[i] = cookies[i].split( '; ' )[0];
};
}
その結果
cookies[0]:tracking_code=eafdc5ca82ea6d8bfc0b1d147efc6efefe31e2f5
cookies[1]:_huntr_session_production=UEhGdDdVZVR5Ny8wL2JROGZwRFBFTThtRjBYSklJUXBvdjNacFhlbUEyLzFCNHVhL0hrWWlVYUUvb1drL094cDRGUUgraHVCbVV1Wk0yV2YwTTM2T0NRYkVnc1Y3M1RzbElmekdiODYvTThpQkd6T2oxL29VcnROTy9kU0xvTDBBZmxWN1BxYkdVWkduYWI4SFVkTy94NWkyZkxKWGRtbzU2WmNheEs4M2ZGUXVLSk9NckxYbUZzTlF5Nno5cWZBVnNXbk8yRXJqNGp0cEhpZjduZUREL2ZBZ2UwMUt5NDJSWVQxcTlkL0oyMEhGblZmZXdxWDh1Qy8wcTd2QUJ3VWR5UXh5MUFselNWSjc5b1FTNHdnbWhPdFl6WkhybkRZM1JtSE5VQUZUZm91cExuT2h4UGtBbnQwbjVLTUtFeklCSVBmTU12RVdvQUxzck0xYWlvTFF6K2JGWkNhZUtMSTRMWDdGOG94WXp1VzdmZTBWQ1J3b3JVcTJsdjVMR2dMRUhNcFdNS1VOK1dOTVk1RWoxMU5kZz09LS1oY3dMSlR4Sk9JWGsrSFo2SmRXdXhnPT0%3D--32990cfc8da6226e010f8d53f3f4fcdbe516b7c3
となっています。
そして、cookiesをpostメソッドで渡して、ログイン処理を行います。
var options2 = {
method: "get",
followRedirects: true,
headers: {
Cookie: cookies.join('; ')
}
};
var source = UrlFetchApp.fetch(source_URL, options2);
var headers2 = source.getAllHeaders();
var content = source.getContentText();
しかし、contentをスプレッドシート上で出力すると、ログインしていない状態のページのHTMLが表示されます。
質問は以下の通りです。
①何が原因でログインされていないのでしょうか。
⓶コードのどの部分を変更すべきでしょうか。
⓷コードが特に間違っていない場合でしたら、そもそもログイン処理の方法が間違っているのでしょうか。(認証方式による違いなど)。その場合、どのような方法をとるべきでしょうか。
何か足りない情報などがございましたら、ご返信にてお伝えします。
どうぞよろしくお願いします。