电报链接预览显示登录

时间:2018-07-30 07:42:32

标签: php laravel laravel-5 telegram

我有一个由Laravel 5实现的网站

电报链接预览本身没有任何问题。

我的某些页面未通过身份验证,这意味着用户需要登录才能访问这些页面。

问题是,当我在电报中放置那些链接(需要登录)之一时,它显示登录页面的预览而不是预期的URL。这是完全可以理解和期望的,但我不知道如何解决。

我的第一个猜测是电报使用漫游器来执行此操作,但显然没有。 我也尝试使用用户代理,但是我意识到它用于此工作的用户代理与浏览器相同。

还有其他想法吗?

2 个答案:

答案 0 :(得分:0)

您需要的是Open Graph protocol。这是演示代码:

<html prefix="og: http://ogp.me/ns#">
<head>
  <title>The Rock (1996)</title>
  <meta property="og:title" content="The Rock" />
  <meta property="og:type" content="video.movie" />
  <meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
  <meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
...
</head>
...
</html>

您可以在og:image标签中提供自己的图像(页面或其他内容的屏幕截图),电报会将其用作拇指图像。

更新

您可以通过其用户代理TelegramBot (like TwitterBot)检测电报网页预览bot。为了确保Telegram确实使用了该用户代理,您可以要求webpagebot获取从webhook testing服务获得的URL的预览并检查收到的标头:

enter image description here

enter image description here

但我强烈建议您不要向此用户代理公开敏感信息,因为任何人都可以伪造预览机器人的请求。

答案 1 :(得分:0)

  

我的第一个猜测是电报使用机器人来执行此操作,但显然没有。

实际上,是的!该漫游器将与用户代理TelegramBot (like TwitterBot)一起出现在您的日志中。我见过的人来自网络范围149.154.164.0/22。

总而言之,没有什么好方法可以让Telegram看到页面的内容,而不会冒将该内容暴露给普通用户的风险(直接或通过将私有URL粘贴到Telegram中)客户)。最好的选择是在登录页面上使用适当的标题。