tic*_*tic 9 authentication wordpress urlfetch google-apps-script
我需要在我的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);
...
}
Run Code Online (Sandbox Code Playgroud)
执行没有错误.无论如何,response.getContentText()返回登录页面,我无法访问http://www.mydomain.invalid/wp/wp-admin/edit-comments.php页面,这是我想要获取的页面.有关如何做到这一点的任何想法?
Nik*_*lov 12
Google Apps脚本可能存在问题,并且会发布到一个URL,该URL会返回重定向标头.
似乎可能无法通过帖子关注重定向 - 这是关于该问题的讨论 - https://code.google.com/p/google-apps-script-issues/issues/detail?id=1254 #C3
是否有可能,如果您修改代码以不遵循重定向,捕获cookie然后再向您的页面发送第二个请求?我实际上并没有使用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);
};
};
...
}
Run Code Online (Sandbox Code Playgroud)
您显然需要添加一些调试和错误处理,但它应该可以帮助您完成.
这里发生的是我们首先发布到登录表单.假设一切正常,那应该给我们一个302(找到)的响应代码.如果是这种情况,我们将处理标题并专门查看"Set-Cookie"标题.如果设置了,我们将摆脱不需要的东西并存储cookie值.
最后,我们向admin上的所需页面发出了一个新的get请求(在本例中/wp/wp-admin/edit-comments.php),但这次我们附加了"Cookie"标题,其中包含上一步中获取的所有cookie.
如果一切按预期工作,你应该得到你的管理页面:)
我建议存储cookie信息(如果你要向你的页面发出多个请求),以节省时间,资源和请求.
再次 - 我实际上没有测试过代码,但理论上它应该可行.请测试它并回复我的任何调查结果.
| 归档时间: |
|
| 查看次数: |
4519 次 |
| 最近记录: |