如何通过javascript获取FB帖子链接?

Posted

技术标签:

【中文标题】如何通过javascript获取FB帖子链接?【英文标题】:How to get the FB post link through javascript? 【发布时间】:2021-03-01 10:42:09 【问题描述】:

我正在尝试制作一个需要我收集帖子链接的 chrome 扩展程序。但收集链接的问题在于它在 FB 为每个帖子提供的时间戳上的锚标记上可用。

但是当您将鼠标悬停在元素上时,锚标记的 href 会动态填充。 我尝试在元素上调度 mouseovermouseenter 事件,但仍然没有填充 href。

我的功能:

const hoverOverTag =  (element) => 
  var event = new Event('mouseover', 
  'view': window,
  'bubbles': true,
  'cancelable': true
);


element.addEventListener('mouseover', function(e) 
     console.log("hover");
     console.log(e);
);

 element.dispatchEvent(event);


事件侦听器正确运行并记录事件。但是仍然没有填充href。 我在内容脚本中运行它,有什么方法可以获得帖子链接?

【问题讨论】:

如果您提供演示链接可能会有所帮助,因为我在 FB 上看不到这种行为:对我来说,链接从一开始就在那里。 @atul-gairola 运气好吗?如果是,请分享:-) 【参考方案1】:

在下文中,我将描述我解决问题所采用的方法、发现和对我有用的解决方案。

加载 Facebook 页面后,我使用 Google Chrome 开发工具检查 <a> 元素。

然后我在任何 XHR 或 fetch 上添加了一个 XHR/fetch 断点。然后鼠标悬停触发事件,代码立即中断,停在断点处。

遵循代码后,很明显前端通过向 Facebook 的 API 节点 /bulk-route-definitions/ 发送 Ajax 请求来动态检索 post-id。虽然理论上可以通过 manually 调用具有正确请求标头数据的 API 节点来获取 post-id,但由于 Facebook 目前采用的所有安全/隐私保护措施,寻求这种潜在的解决方案实在是太耗时了。

在那之后,我开始考虑以编程方式触发事件,如上述问题中所述,因此我再次触发断点并检查调用堆栈并反向跟踪混淆和丑化的代码。

终于找到了:

var event = new FocusEvent('focusin', 
  'view': window,
  'bubbles': true,
  'cancelable': true
);

the_a_element.dispatchEvent(event); //reference to the_a_element in the page DOM

完成。

【讨论】:

非常感谢@Ouss!我找了这么久的答案,然后最终放弃了,并在我的应用程序中做了一种解决方法来避免使用帖子 ID,但数据并不那么准确。这会很有帮助的!!!非常感谢你

以上是关于如何通过javascript获取FB帖子链接?的主要内容,如果未能解决你的问题,请参考以下文章

html 使用JavaScript和FB.UI Feed对话框向帖子添加操作链接。

如何获取Facebook上的几个帖子的信息?

如何从 FB 获取图片到网站

Facebook javascript群组Feed

如何在 JavaScript 中获取当前的帖子类型?

facebook - 获取点击 FB 共享链接的用户的上下文