如何阻止卷曲或file_get_contents

问题描述 投票:1回答:3

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

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

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

我如何阻止它们?

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

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

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

php .htaccess curl file-get-contents
3个回答
1
投票

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

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

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

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

尽管您确实冒着误报的轻微风险。


1
投票

如果您担心任何人(而不是特定的IP或域)占用您的内容,则应为您的网站实施某种注册过程。使用Apache进行过​​滤可能会引起更多的问题,而不是值得的。您应该问问自己,您在互联网上放置的内容是否实际上并不意味着每个人和机器都可以按照自己的意愿去做,应该要么受登录保护,要么不上网。

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


0
投票

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

order allow,deny
deny from 123.45.67.89
allow from all
© www.soinside.com 2019 - 2024. All rights reserved.