swift - 从 URL 获取 OpenGraph 元标记

swift - Fetching OpenGraph meta tags from URL

我正在尝试从 URL 中获取 og (OpenGraph) 标签并显示在应用程序中。对于大多数网站,我都正确地获取了标签,但对于某些网站,我没有。

例如。 This URL

当我在浏览器上渲染并检查时,它显示了元标记,但是当我尝试通过 cURL 获取 html 时,它 returns html 没有任何元数据的内容。但是,当我在 Slack 或 FB 中分享 URL 时,它会呈现带有 OG 标签的预览。

如何在 iOS 上完成?

感谢任何帮助。

您共享的 URL 的问题是该站点需要 Javascript 才能启用。

如果您没有启用 Javascript,您只会返回一个基本页面,说明您需要启用 Javascript 才能浏览网站(因此,没有开放图谱标签)。

您的浏览器、Slack 和 Facebook 执行 Javascript 但 cURL 不执行。 iOS.

中的 URLSession 也不会

在 iOS 中,您能够访问此类网站的 HTML 的唯一方法是使用 WKWebView 呈现页面。

然后,加载后,使用 evaluateJavascript(_:completionHandler:) 执行一些 Javascript 以获取 OG 标签。

对于使用 iOS 库的情况,这是唯一可行的解​​决方案。

Facebook、LinkedIn 等的 iOS 客户端不会在其 iOS 客户端上执行此操作。他们的 iOS 客户端调用他们的后端,传递 URL 进行处理,然后接收回预览。 Javascript 作为后端进程的一部分执行。

周围有 public 个 API 可以帮助您做同样的事情,例如:

https://opengraph.io