【发布时间】:2021-06-16 15:18:49
【问题描述】:
我正在使用cheerios 来获取_csrf 并通过express 进行发帖请求:
request('http://scdownloader.net/', function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
var form = $("#mainForm");
var _csrf;
// Scrape for _csrf
for (var i = 0; i < form[0].children.length; i++) {
var a = form[0].children[i].attribs
if (a != null) {
a = a.class
if (a != null && a === "large-5 columns btn-wrapper") {
a = form[0].children[i].children;
for (var i = 0; i < a.length; i++) {
var b = a[i].attribs;
if (b != null) {
if (b.name != null && b.name === '_csrf') {
_csrf = b.value;
console.log(_csrf);
}
}
}
}
}
if (_csrf == null) {
// Callback with error
}
var title = "/newpartyarmy/tell-me-the-truth";
var url = "https://soundcloud.com" + title;
var form = {
_csrf: _csrf,
url : url
}
request.post({url:'http://scdownloader.net/download', form: form}, function(err, httpResponse, body){
if (!err && httpResponse.statusCode == 200) {
console.log(body);
console.log(httpResponse);
}
console.log(httpResponse.statusCode);
console.log(httpResponse.statusMessage);
})
}
});
这会返回一个403 状态码。但是,当我自己去scdownload.net 获取_csrf 并使用http://http-post.com/ 发布它时,它可以工作。但是,它不适用于我的抓取版本。
示例抓取版本:Ii055I/uIr/44xbG3cB/1581eCjKEY/A9yR6XY88JGg=
手动抓取版本示例:m2RRexmzE3La1pD168ONDlz0giZlBdoxlUeyaJpBIeE=
【问题讨论】:
标签: node.js http express post cheerio