【问题标题】:How to figure out if a request coming from facebook?如何确定是否来自 facebook 的请求?
【发布时间】:2019-01-23 14:47:56
【问题描述】:

如果 Facebook 刮板请求页面(我们在 facebook 墙上共享指向我们页面的链接),我们要求不向我们的服务器发送特定的 ajax 请求,并且我们尝试检查基于 javascript 的用户代理在https://developers.facebook.com/docs/sharing/webmasters/crawler/ 上,但我们注意到我们通过普通用户代理(如“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0 .3578.98 Safari/537.36") 是错误吗?任何解决方法(除了寻找 facebook ip-addresses)?

【问题讨论】:

    标签: facebook web-crawler user-agent


    【解决方案1】:

    提到的 User-Agent 仅在 Facebook 抓取工具请求您的 URL 时发挥作用 - 但抓取工具一开始并不执行任何 JS,因此尝试“抑制”中的任何 AJAX 请求 场景一开始就没有意义——因为根本没有。

    如果页面由 Facebook 运行

    您能否澄清一下您的实际意思? “由 Facebook 运营”并不是真正有意义的措辞。

    所以请说明您需要在什么情况下抑制此 AJAX 请求。您是在谈论 Facebook 应用内浏览器中的正常页面访问吗?或者您的内容被嵌入 Facebook 的环境,例如页面标签或网络游戏应用程序,或即时游戏,或......?

    【讨论】:

    • 谢谢,我更新了我的问题,但你确定“Facebook 刮板不执行 javascript”吗?有资源链接吗?
    • 我不知道 Facebook 自己是否在任何地方记录了这一点,但这是相当“常识”。看看这里的任何问题,人们通常在使用 Angular 应用程序或 SPA 时遇到问题,他们试图在运行时通过客户端 JavaScript 动态设置 OG 元标记 - 答案总是会是,那是因为刮板不关心任何 JavaScript。
    • Facebook 在他们的移动应用程序中也有一些预加载机制,在用户点击它们之前,在后台获取链接到新闻提要的 URL - 但 AFAIK 他们使用特殊的用户 -代理,它也不会解释为什么这些请求来自 Facebook IP,我认为在这种情况下你应该看到用户移动设备的 IP。
    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多