检测请求何时生成预览

时间:2017-08-09 13:04:48

标签: php

我们有一些仅限一次性使用的操作链接。除了查看之外,其中一些不需要用户的任何操作。这就是问题所在,当你在Viber,Slack或其他任何产生链接预览的内容中分享它时(或者像Slack所说的那样展开链接)它会被计算为自请求以来使用的。 有没有一种可靠的方法来仅通过PHP检测这些预览生成请求?如果有可能,那怎么做呢?

2 个答案:

答案 0 :(得分:0)

仅在PHP中100%准确率是不可能的,因为它处理HTTP请求,这些请求非常抽象于客户端。严格来说,即使是用户合法要求,您也无法保证用户实际上已经看到响应。

您拥有的选项:

  • 使用像&#34这样的复选框;我已经读过这个" (违反不采取行动的要求)
  • 使用javascript发送"我已经读过这个"没有用户交互的请求(违反单独的PHP要求)
  • 依赖cookies:使用set-cookie标头重定向用户,然后重定向回显示内容并将网址标记为已消耗(仍然不是100%保证,并且可能导致对无法重定向的机器人进行302重定向,并且不会坚持饼干)
  • 依赖于请求标头(如果您拥有受限机器人的有限列表,并且所有机器人都提供签名,则可以正常工作)

答案 1 :(得分:0)

我已经在整个互联网上寻找解决此问题的方法。而且我发现了一些解决方法,可以验证请求是否用于生成链接预览。

然后,我创建了一个工具来解决它。在GitHub上: https://github.com/brunoinds/link-preview-detector

您只需要从类中调用一个方法:

<?php 
require('path\to\LinkPreviewOrigin.php');

$response = LinkPreviewOrigin::isForLinkPreview();
//true or false

我希望能解决您的问题!