1

如何禁止某人使用curlfile_get_contents获取我的页面 HTML?

例如,我的域是www.example.com. 如果有人有这样的 PHP 代码:

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

我怎样才能阻止他们?

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

检查某人何时尝试获取页面内容的最佳方法是什么?

我构建的内容包含许多人会尝试复制到他们自己的网站的信息,它可能会使我的服务器超载。

4

3 回答 3

1

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

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

话虽如此,您可以尝试查找一些缺失的字段,因为 file_get_contents() 默认会忽略其中的一些字段:

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

尽管您确实有遇到误报的风险。

于 2013-11-06T14:23:19.547 回答
1

如果您担心任何人(而不是特定 IP 或域)获取您的内容,您应该为您的网站实施某种注册流程。使用 Apache 进行过滤可能会导致比其价值更多的问题。您应该问自己,您在互联网上发布的内容是否实际上并不意味着每个人和机器都可以随心所欲,它应该受到登录保护或不在互联网上。

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

于 2013-11-06T14:57:18.610 回答
0

将 .htaccess 与站点 (example.com) 的相应 IP 地址一起使用。将此代码粘贴到您的 .htaccess 中:

order allow,deny
deny from 123.45.67.89
allow from all
于 2013-11-06T14:23:22.407 回答