node.js - NodeJS GET 请求在本地机器上工作,但不在远程 VM 内
问题描述
我正在尝试创建一个简单的工具,它将访问特定的 Facebook 页面并提取一些数据。我正在为此使用 NodeJS。我在 GET 请求中使用内置的 https 模块。我本地机器上的东西工作正常,但在虚拟机内部却无法得到响应,每次都失败。
我也尝试使用 axios,但它也不起作用。
以前我认为这可能是防火墙问题,但我启用了防火墙内的所有东西,但它也无法正常工作。我面临这个非常奇怪的问题。
这可能是什么原因?
是 Facebook 阻止了我的请求吗?没有权利?我也在发送 User-Agent 标头,但它不起作用。
我的代码如下所示:
const options = {
hostname: 'www.facebook.com',
// port: 443,
path: `/${username}`,
method: 'GET',
headers: {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',
'Accept-Language': 'en-GB,en-US;q=0.8,en;q=0.6',
},
};
const request = https.request(options, (response) => {
let body = '';
console.log('response : \n' + response);
response.setEncoding('utf8');
response.on('data', (chunk) => {
body += chunk;
console.log('response on data chunk : \n' + chunk);
});
response.on('end', () => {
console.log('body : \n' + body);
const arrMatches = body.match(rePattern);
if (arrMatches && arrMatches.length > 1) {
resolve(arrMatches[1]);
} else {
reject(new Error('Facebook user not found'));
}
});
});
request.on('error', (err) => {
console.log('request error : \n' + err);
reject(err);
});
request.end();
解决方案
推荐阅读
- mysql - MySQL JOIN 与两个表并使用 IFNULL。结果因 MySQL 版本而异
- amazon-web-services - S3 返回已删除对象的公共前缀
- mysql - 如何在 Mysql docker 容器中设置 MYSQL_PS1
- database - 大数据中的错误历史数据如何处理?
- json - React native List.Item undefined is not an object
- spring-boot - Spring Cloud Contract UnknownHostException
- powershell - 如何添加关键参数包含禁止通配符的 CIM 实例?
- php - 学说:与属性的 OneToMany 关系
- pandas - 在mac上成功安装后导入pandas的问题
- sql - SQL 连接到从逗号分隔参数返回表的函数。如果参数为空加入所有