如何通过javascript获得脸书postlink?
How to get the FB post link through javascript?
我正在尝试进行 chrome 扩展,这需要我收集 post link。但是收集 link 的问题在于,它在 FB 在每个 post.
上提供的时间戳上的锚标记上可用
但是当您将鼠标悬停在元素上时,锚标记的 href 会动态填充。
我尝试在元素上发送 mouseover
和 mouseenter
事件,但 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 仍然没有被填充。
我在内容脚本中 运行 这个,有什么方法可以得到 post link 吗?
在下文中,我将描述我用来解决问题的方法、发现结果以及对我有用的解决方案。
加载 Facebook 页面后,我使用 Google Chrome 开发工具检查 <a>
元素。
然后我在任何 XHR 或提取上添加了一个 XHR/fetch 断点。然后鼠标悬停触发事件,立即中断代码,停在断点处。
遵循代码后,很明显 front-end 通过向 API 节点 /bulk-route-definitions/
发送 Ajax 请求来动态检索 post-id在脸书。虽然理论上可以通过 manually
使用正确的请求 header 数据调用那个 API 节点来获得 post-id,但是寻求潜在的解决方案太耗时了,因为所有security/privacy 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
完成。
我正在尝试进行 chrome 扩展,这需要我收集 post link。但是收集 link 的问题在于,它在 FB 在每个 post.
上提供的时间戳上的锚标记上可用但是当您将鼠标悬停在元素上时,锚标记的 href 会动态填充。
我尝试在元素上发送 mouseover
和 mouseenter
事件,但 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 仍然没有被填充。 我在内容脚本中 运行 这个,有什么方法可以得到 post link 吗?
在下文中,我将描述我用来解决问题的方法、发现结果以及对我有用的解决方案。
加载 Facebook 页面后,我使用 Google Chrome 开发工具检查 <a>
元素。
然后我在任何 XHR 或提取上添加了一个 XHR/fetch 断点。然后鼠标悬停触发事件,立即中断代码,停在断点处。
遵循代码后,很明显 front-end 通过向 API 节点 /bulk-route-definitions/
发送 Ajax 请求来动态检索 post-id在脸书。虽然理论上可以通过 manually
使用正确的请求 header 数据调用那个 API 节点来获得 post-id,但是寻求潜在的解决方案太耗时了,因为所有security/privacy 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
完成。