如何使用Google应用程序脚本获取WordPress管理页面? [英] How to fetch a wordpress admin page using google apps script?

查看:20
本文介绍了如何使用Google应用程序脚本获取WordPress管理页面?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在我的Wordpress博客管理区内获取一个页面。以下脚本:

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",
      "redirect_to":"http://www.mydomain.invalid/wp/wp-admin/edit-comments.php",
      "testcookie": 1
      }
   };
   var response = UrlFetchApp.fetch(url, options);
   ...
}

在没有错误的情况下执行。无论如何,response.getContentText()返回登录页面,我无法访问我要获取的页面http://www.mydomain.invalid/wp/wp-admin/edit-comments.php。 您知道怎么做吗?

推荐答案

Google Apps Scripts和POST到返回重定向标头的URL可能有问题。

似乎不可能在重定向之后发布帖子-这是关于该问题的讨论-

https://issuetracker.google.com/issues/36754794

如果将代码修改为不遵循重定向,捕获cookie然后对页面执行第二个请求,是否有可能?我实际上没有使用过汽油,但我从文档中得到的最佳猜测是:

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&qot;标头。如果已设置,我们将删除不需要的内容并存储Cookie值。

最后,我们向管理员上的所需页面(在本例中为/wp/wp-admin/edit-comments.php)发出新的GET请求,但这次我们附加了";Cookie";标头,其中包含在上一步中获取的所有Cookie。

如果一切正常,您应该会看到您的管理页面:)

我建议您存储Cookie信息(以防您对页面发出多个请求),以节省时间、资源和请求。

再说一遍-我还没有实际测试代码,但理论上它应该可以工作。请对其进行测试,并将您的发现反馈给我。

这篇关于如何使用Google应用程序脚本获取WordPress管理页面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆