首页 > 解决方案 > 为什么 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 或证书?究竟是什么问题?至少我想知道问题所在

笔记:

标签: node.jsfirebasefacebookhttps

解决方案


推荐阅读