【问题标题】:How to stop bots from running some code on PHP script?如何阻止机器人在 PHP 脚本上运行一些代码?
【发布时间】:2013-07-10 02:31:30
【问题描述】:

我有一个脚本,每次查看页面时都会添加到数据库中,我不希望机器人触发添加到数据库的脚本部分。基本上,我只想记录真实用户。

无论如何让机器人忽略一段 PHP 脚本?

谢谢!

【问题讨论】:

标签: php html mysql bots


【解决方案1】:

虽然不是万无一失,但您可以检查 USER_AGENT 字符串并仅在 'bot' 不存在时运行该代码。

if(stripos($_SERVER['HTTP_USER_AGENT'],'bot') === false){ }

这将停止任何在用户代理字符串中实际包含 bot 且也不关注 robots.txt 的机器人。

【讨论】:

  • 这似乎是最好的。现在会做。谢谢先生。
  • 有时 HTTP_USER_AGENT 可能为空,也可能需要“爬取”,所以我认为更完整的答案可能是:if (!empty($_SERVER['HTTP_USER_AGENT']) and preg_match('~(bot|crawl)~i', $_SERVER['HTTP_USER_AGENT'])) { ... }stackoverflow.com/a/17515475/907736 找到的答案
【解决方案2】:

您可以创建一个 robots.txt 文件来限制机器人访问您不想要的页面或目录。这是一个链接,将向您展示 robots.txt 的工作原理Robots.txt

【讨论】:

    【解决方案3】:

    为什么不做这样的事情,它只会要求机器人远离,不管他们做不做都取决于他们的判断!

    User-agent: *
    Disallow: /my_page.php
    

    【讨论】:

    • 我希望机器人访问页面,而不是最后一段代码。我应该在单独的 PHP 文件中创建最后一段代码,然后使用“包含”运行该文件吗?但让机器人忽略包含的文件?我不确定这会奏效
    • 最好禁止所有页面,并明确允许您想要访问的页面。否则,不法分子可以查看您的 robots.txt 文件并查看您想要保护的所有文件,然后加载它们以查看原因.....
    • @andrewsi 并不总是一个实用的解决方案,你可以随时评论说它不是触发计数器!
    • @DaveFes 不,这无济于事,它要么看到所有内容,要么什么都没有。您将不得不检查用户代理字符串以查看它是否是机器人,并且根本不会回显它!
    猜你喜欢
    • 2011-10-28
    • 1970-01-01
    • 2012-02-12
    • 2015-11-01
    • 2021-12-27
    • 2021-12-28
    • 1970-01-01
    • 2015-10-19
    • 2011-10-21
    相关资源
    最近更新 更多