Google Apps スクリプトと、リダイレクト ヘッダーを返す URL への投稿に問題がある可能性があります。
投稿でリダイレクトをたどることができないようです - ここに問題に関する議論があります -
https://issuetracker.google.com/issues/36754794
リダイレクトに従わないようにコードを変更し、Cookie をキャプチャしてから、ページに 2 番目のリクエストを行うことは可能でしょうか? 私は実際に GAS を使用したことはありませんが、ドキュメンテーションを読んだ上での最良の推測は次のとおりです。
function fetchAdminPage() {
var url = "http://www.mydomain.invalid/wp/wp-admin/wp-login.php";
var options = {
"method": "post",
"payload": {
"log": "admin",
"pwd": "password",
"wp-submit": "Login",
"testcookie": 1
},
"followRedirects": false
};
var response = UrlFetchApp.fetch(url, options);
if ( response.getResponseCode() == 200 ) {
// Incorrect user/pass combo
} else if ( response.getResponseCode() == 302 ) {
// Logged-in
var headers = response.getAllHeaders();
if ( typeof headers['Set-Cookie'] !== 'undefined' ) {
// Make sure that we are working with an array of cookies
var cookies = typeof headers['Set-Cookie'] == 'string' ? [ headers['Set-Cookie'] ] : headers['Set-Cookie'];
for (var i = 0; i < cookies.length; i++) {
// We only need the cookie's value - it might have path, expiry time, etc here
cookies[i] = cookies[i].split( ';' )[0];
};
url = "http://www.mydomain.invalid/wp/wp-admin/edit-comments.php";
options = {
"method": "get",
// Set the cookies so that we appear logged-in
"headers": {
"Cookie": cookies.join(';')
}
};
response = UrlFetchApp.fetch(url, options);
};
};
...
}
明らかに、デバッグとエラー処理を追加する必要がありますが、それでうまくいくはずです。
ここで何が起こるかというと、最初にログイン フォームに投稿します。すべてが正しく進むと仮定すると、応答コード 302(Found) が返されるはずです。その場合は、ヘッダーを処理し、特に「Set-Cookie」ヘッダーを探します。設定されている場合、不要なものを取り除き、Cookie の値を保存します。
最後に、管理者の目的のページ (この場合は/wp/wp-admin/edit-comments.php
) に対して新しい get 要求を行いますが、今回は、前の手順で取得したすべての Cookie を含む「Cookie」ヘッダーを添付します。
すべてが期待どおりに機能する場合は、管理ページを取得する必要があります:)
時間、リソース、およびリクエストを節約するために、Cookie 情報を保存することをお勧めします (ページに対して複数のリクエストを行う場合に備えて)。
繰り返しますが、実際にはコードをテストしていませんが、理論的には動作するはずです。それをテストして、あなたが見つけた発見を私に返してください.