使用 Node.js 对 Note.ms 上的文本进行更改

Node.js

这篇文章最后更新于 天前,文中描述的信息可能已经过时,请多加查证后再作参考。

先贴代码:

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
// 在 ES6 环境下
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 放到了白名单里。

本文作者:Henrize Kim

文章链接: https://henrize.kim/article/e5bd95ecfd72/

本文使用 CC BY-NC-SA 3.0 协议进行许可,使用时请注意遵守协议。