先贴代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import { request as HTTPSrequest } from 'https'; import FormData from 'form-data';
function postNoteAsync( content, noteDir ) { return new Promise(( resolve, reject ) => { let form = new FormData();
form.append('t', content );
const request = HTTPSrequest({ method: 'post', host: 'note.ms', path: noteDir, headers: Object.assign( form.getHeaders(), { 'Referer': 'https://note.ms' + noteDir }) }, () => {});
form.pipe( request );
request.on('response', ( res ) => { resolve( res.statusCode ); });
request.on('error', ( error ) => { reject( error ); }); }); }
postNoteAsync('Something', '/abcd') .then(( statusCode ) => console.log( statusCode )) .catch(( error ) => console.log( error ))
|
需要注意的是,Note.ms 现在启用了 CloudFlare 的反机器人服务。如果返回503
状态码,则极有可能是触发了反机器人规则,这个暂时没想到什么方法解决。
闲话
写了一个维护 我的留言板 (已废弃)的程序之后才发觉自己已经好久没动 Node.js 了,连 HTTP POST 都写不利索。回头应该会仔细梳理一下关于 Node.js 中有关 HTTP 的操作,之后把笔记发到这里。至于通过 CloudFlare 的反机器人规则,只是因为我联系了站长,把我的 IP 放到了白名单里。