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

atu*_*ola 3 javascript google-chrome-extension

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

在此输入图像描述

但是当您将鼠标悬停在元素上时,锚标记的 href 会动态填充。我尝试在元素上调度 amouseovermouseenter事件,但 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);

}
Run Code Online (Sandbox Code Playgroud)

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

Ous*_*uss 5

下面我将描述我解决这个问题的方法、调查结果以及对我有用的解决方案。

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

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

跟踪代码后,我们发现前端通过向/bulk-route-definitions/Facebook 的 API 节点发送 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
Run Code Online (Sandbox Code Playgroud)

完毕。