Php 有没有办法阻止CURL在我的站点上获取数据?

Php 有没有办法阻止CURL在我的站点上获取数据?,php,curl,Php,Curl,我当前使用此代码阻止wget和libwww Options +FollowSymlinks RewriteEngine On RewriteBase / SetEnvIfNoCase User-Agent "^Wget" bad_user SetEnvIfNoCase User-Agent "^libwww-perl" bad_user Deny from env=bad_user 有一个用于curl的吗?是的,我确信curl有一个默认的用户代理,但这显然是可以像-H'User A

我当前使用此代码阻止wget和libwww

Options +FollowSymlinks  
RewriteEngine On  
RewriteBase /  
SetEnvIfNoCase User-Agent "^Wget" bad_user
SetEnvIfNoCase User-Agent "^libwww-perl" bad_user
Deny from env=bad_user

有一个用于curl的吗?

是的,我确信
curl
有一个默认的用户代理,但这显然是可以像
-H'User Agent=Poop'一样轻松更改的


事实上,我认为有一个开关专门用于设置用户代理<代码>-可以随时更改curl用户代理。curl存在的原因是您几乎可以更改查询中的所有内容

您可以阻止它们,但一旦它们更改了使用代理,它们将再次具有访问权限

我建议您屏蔽IP地址,或者整个子网,以确保安全

例如:

deny from aa.bb.cc.dd  ff.gg.hh.0/24

您可以检查首选语言、http版本、远程域等内容。

即使您停止它一段时间,攻击者也会来到这个幸运的网站,并获得一打关于如何打破防御的答案

所以,我讨厌它,但没有办法阻止它。
你最终可以禁止一些IP,你可以放置一些honeypost来发现机器人,但所有东西都是易碎的。
因此,您最好不要关心数据,而是关心服务。

只要你的服务是最好的,你的网站将是第一。而且,对于那些想靠别人的劳动为生的人来说,任何刮擦都不会帮助他们

如果一个ip地址有两个或多个请求,则添加验证码?

该验证码只会阻止这些请求,直到用户叹息并覆盖用户代理字符串。Wget不是LWP(是的,它是LWP不是libwww)都不是“坏的”,这两个工具在镜像模式下都表现良好,尊重robots.txt。@Quentin我怎么才能阻止它们呢?哦,来吧,以谷歌为例。当你投反对票时,请发表评论,描述原因。+1我喜欢验证码的想法-但我的问题是关于curl如何在curl请求中添加验证码?@eric,我想这可能是一个更好的解决方案,因为它可以阻止任何客户(包括curl)滥用你的网站(或从你的网站上刮取内容)。不幸的是,您不能仅仅基于用户代理,因为更改用户代理相当容易。如果你试图从验证码中获取太多的搜索结果,谷歌也会使用同样的技术。因此,即使使用curl,当为该IP激活captcha时,curl也只下载包含captcha图像的html