【发布时间】:2021-03-05 12:33:17
【问题描述】:
我正在尝试将 curl 请求转换为 nodeJS 脚本,但不知何故它在我身上失败了。通过失败的方式,我使用 cloudflare 设置的 url 会触发验证码,而当我使用 curl 请求时它不会触发我从开发工具 > 网络选项卡复制。
这是卷曲
curl -q 'https://foo.bar/path' -H 'cookie: somecookie' -H 'origin: https://foo.bar' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-US,en;q=0.9,pt;q=0.8' -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36' -H 'content-type: application/x-www-form-urlencoded; charset=UTF-8' -H 'accept: */*' -H 'referer: https://foo.bar/path' -H 'authority: www.foo.bar' -H 'x-requested-with: XMLHttpRequest' --data "foo=bazz" --compressed
这里是nodeJS代码
var request = require('request');
var url = 'https://foo.bar/path';
var cookie = 'somecookie';
var ua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36';
var baseRequest = request.defaults({
headers: {
'Cookie': cookie,
'User-Agent': ua,
'origin': 'https://foo.bar',
'referer': 'https://foo.bar/path'
}
});
baseRequest.post({ url: url, formData: {
foo: 'bazz'
}}, function(err, response, body) {
console.log(body);
});
【问题讨论】:
-
您可以使用网络嗅探器检查 CURL 和 node.js 请求,看看两者之间到底有什么不同。 http 请求是纯文本,所以它应该都在那里供您查看。