node.js - 为什么 CURL 没有在 Firebase 云外壳或 Firebase 功能上获得 facebook 页面?
问题描述
我正在尝试通过获取页面然后提取页面 id 来获取任何页面或个人资料的 Facebook 页面 id 和 ios/android 链接。
使用 termianl 它看起来像这样
curl -skA "Mozilla/5.0" https://www.facebook.com/idorecall/ | grep -oE 'fb://[^"]+'
结果将是:
fb://page/1605841049661522?referrer=app_link
fb://page/?id=1605841049661522
我将此命令转换为 NodeJs 请求并在 Firebase 函数中使用它(我尝试使用许多库,甚至使用网络抓取),并尝试更改标头。通常,请求将如下所示:
await main()
function main() {
var options = {
url: 'https://www.facebook.com/idorecall/',
json: true,
headers: {
'User-Agent': 'curl/7.64.1',
Host: 'www.facebook.com',
Accept: '*/*',
rejectUnauthorized: 'false',
},
};
return new Promise((resolve, reject) => {
request(options, (err, resp) => {
if (err) {
return reject(err);
}
return resolve(resp.body);
});
});
}
问题是当 firebase 函数部署请求时总是返回 Facebook 登录页面。但是如果我使用 node 或 firebase 模拟器运行相同的代码,它将返回我想要的页面。
那么,当我在 firebase 功能上请求它时,如何获得我想要的 facebook 页面?firebase 配置有什么我必须改变的吗?还是我必须添加 cookie 或证书?究竟是什么问题?至少我想知道问题所在
笔记:
- 由于权限,我不想从 facebook api 获取 id
- 我确实尝试了我能找到的所有可能的库:https、fetch、node-fetch、superagent、axios、curly、exec(child_process)、Puppeteer、CheerioJS、request-promise 等都返回相同的结果:登录页面
- 我在firebase cloud shell中尝试了curl,它也没有返回我想要的
解决方案
推荐阅读
- java - 使图像指向java中的特定位置
- python - 在 JSON 文件中搜索字符串 - Python
- ios - 是否可以在 Windows 10 上调试 iOS Chrome?
- java - 正则表达式选择特定的多行
- angularjs - E/launcher - 未知错误:Chrome 无法启动:在无头模式下崩溃
- amazon-web-services - 从 AWS 迁移:dynamoDB+API 网关到 Google:DataStore +?
- android - react native的项目结构,包括原生iOS,Android?
- php - 使用 301 重定向重定向到另一个页面不起作用
- css - 根据css中的背景反转文本颜色
- android - 文字从左到右填充