如何阻止curl或file_get_contents

时间:2013-11-06 14:20:11

标签: php .htaccess curl file-get-contents

我怎么能不允许有人使用curl或file_get_contents来获取我的页面html?
例如:
我的域名是:

www.domain.com


某人php页面:

<?php
$info = file_get_contents('http://www.domain.com/theinfo.php');
?>


我可以尝试通过用户代理检查它,但它不是正确的方法。
什么是检查有人试图获取页面内容的最佳方法? 我构建的内容包含许多人会尝试将其复制到他们的网站的信息,它可能会使我的服务器过载。

3 个答案:

答案 0 :(得分:1)

  

我可以尝试通过用户代理检查它,但它不是正确的方法。

用户代理确实可以通过curl进行更改,但这几乎是您可以判断某人是否通过curl访问您的网站的唯一方式。没有其他任何东西可以区分它们。

话虽如此,你可以尝试寻找一些缺失的字段,因为默认情况下file_get_contents()会遗漏掉一堆字段:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_ACCEPT} ^$
RewriteRule ^ - [L,F]

虽然你确实会遇到轻微的假阴性风险。

答案 1 :(得分:1)

如果您关注任何人,而不是特定的IP或域名,那么您应该为自己的网站实施某种注册流程。使用Apache进行过​​滤可能会导致更多问题,而不是值得。你应该问问自己,你在互联网上放的东西是不是真的意味着每个男人和机器都可以随意做,它应该是登录保护或不在互联网上。

这是一个非常简单的PHP库,用于实现登录和/或注册系统: https://github.com/panique/php-login

答案 2 :(得分:0)

将.htaccess与站点的相应IP(domain.com)一起使用。 将此代码粘贴到.htaccess

order allow,deny
deny from 123.45.67.89
allow from all
相关问题