【问题标题】:How to hide PDF file on my website from bots with reCaptcha?如何使用 reCaptcha 对机器人隐藏我网站上的 PDF 文件?
【发布时间】:2018-06-13 07:53:57
【问题描述】:

我目前正尝试在我的个人网站上共享 PDF 文档。

当它不成问题时,我需要对机器人隐藏它。
我尝试使用谷歌的 Invisible reCAPTCHA,但遇到了一些问题。

网络爬虫可以搜索源代码,因此非活动按钮不起作用。
我是否需要一个特殊页面来检查 reCAPTCHA 是否完成?也许有一种简单的方法可以在找到非人类时始终显示链接但隐藏链接 HREF 或表单 ACTION 属性(可能在 PHP 帮助下)?

        <form id="resume" action="subpage_that_shows_my_pdf_file_link.html" method="POST">
            <button class="g-recaptcha" data-sitekey="666" data-callback="onSubmit" type="submit">Submit</button>
        </form>

实际上谷歌文档并没有帮助解决这个问题。

【问题讨论】:

  • " 尝试使用 google 的 Invisible reCAPTCHA,但遇到了一些问题。"分享问题,分享代码
  • 问题正如我所写 - 机器人仍然可以看到源代码中的直接链接
  • 你做错了,带有 reCAPTCHA 的页面发布到新页面,新页面检查 reCAPTCHA 并提供文件。
  • 好的,机器人仍然可以访问该页面并找到 PDF 链接,如何防止它们?
  • 在您通过 reCAPTCHA 测试之前不要将链接放在无法访问的页面上

标签: php ajax recaptcha captcha


【解决方案1】:

好的,我用 captcha-response 做到了。我的主要代码部分:

index.php

        <form id="reCaptchaForm" action="file.php" method="POST">
            <button class="g-recaptcha" data-sitekey="..." data-callback='onSubmit' >link</button>
        </form>

file.php

if(isset($_POST['g-recaptcha-response'])) {
$secretKey = '...';
$response = $_POST['g-recaptcha-response'];
$remoteIp = $_SERVER['REMOTE_ADDR'];
$reCaptchaValidationUrl = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$response&remoteip=$remoteIp");
$result = json_decode($reCaptchaValidationUrl, TRUE);
if($result['success'] == 1) {
    $userMessage = '<meta http-equiv="refresh" content="0;URL='file.pdf'" />';
}

仅当在此特定会话中 google 隐形验证码说 是的,看起来像普通用户时,才会在特殊页面上显示代码:)

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 2021-10-08
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2012-11-02
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多