我是电报机器人的新手,发现它的功能对于我的项目的进一步开发非常有用,现在知道我可以向机器人用户发送链接按钮,以便在点击时,目标URL将在电报的应用程序中打开浏览器。
我要问的问题是如何通过复制URL并将其粘贴到chrome中,来检查服务器是否仅在应用web视图的电报中而不是在其他浏览器中打开此URL?
我需要检查URL是否已复制并粘贴到另一个浏览器,然后将用户重定向到消息页面,而不打开目标页面。我希望用户仅在应用程序浏览器中使用电报打开URL,而在其他任何地方都不要。而且该电报应该是已收到漫游器链接的电报,甚至不应是其他用户的另一电报。
因此,检查和控制发送到服务器的用户代理并不能解决我的问题,因为它可能是另一位用户的另一封电报,甚至是伪造的桌面浏览器,因此从安全角度来看不能依靠它。
感谢您的帮助
答案 0 :(得分:1)
我希望我的用户仅在应用内的浏览器中使用电报打开网址,
Telegram bot API在客户端没有提供任何机制。
...如何通过复制URL并将其粘贴到chrome中,如何检查服务器是否仅在电报的app webview中(而不是在其他浏览器中)打开此URL?
您也无法在服务器端检测到“无效”的浏览器使用情况,因为您将需要某种身份验证机制来确保特定用户具有读取特定页面的权限。服务器不会收到任何特定于您的服务的Cookie,当然也不会收到有关电报会话和相关电报API内容的任何信息。
当然,您不能依赖User-Agent
标头,因为它可以在curl
之类的实用程序中轻松手动指定。
有一些可能的解决方案,但是没有简单的解决方案。
使用Telegram API编写自己的电报客户端。那是很难的方法,但是在这种情况下,您可以完全控制客户端发送到服务器的所有内容-因此,您应该能够使用权限解决问题。
如果要向用户显示一些敏感信息,请考虑使用Telegram bot内置功能来显示它。这是很容易实现的,但是在很大程度上取决于您的产品需求,并且可能无法实现。
切换到一次性URL。在网址中插入一个散列,并确保您的服务器仅显示一次特定页面。如果用户想再次阅读该页面,则bot会生成带有另一个哈希值的URL。这是最简单的解决方案,但是,当然,您不能100%确定用户在电报Webview中查看页面之前不会复制和粘贴URL。