• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

用php技术如何检测伪装用户/爬虫/cURL

php 海叔叔 22小时前 5次浏览 已收录 0个评论

问题描述

其他一些网站可能会使用cURL和伪造的http Referer复制我的网站内容。

我们是否可以检测出请求是cURL而不是真正的Web浏览器?

最佳思路

没有任何完美的方法可以避免自动爬取网页。因为人可以做到的一切,机器人也可以模拟做到。但是有很多能让机器抓取变得更困难的做法,从而防止绝大部分人的专区,不过对于非常精通技术的极客效果有限。

这里介绍几种不同类型的反爬技术。

1.每个IP的会话数

如果用户每分钟使用50个新会话,则可以认为该用户可能是不处理Cookie的爬虫程序。当然,curl可以完美地管理cookie,但是如果您将其与每个会话的访问计数器结合使用(稍后说明),或者爬虫对cookie处理得不好,那么这个方法可能是有效的。

一般不太可能有50个具有相同共享连接的人会同时在您的网站上访问。如果发生这种情况,则认为是爬虫在抓取,您可以锁定网站页面,直到输入验证码为止。

具体步骤:

1)创建2个表:1个保存禁用的ips,1个保存ip和会话

2)在脚本的开头,您从两个表中删除了太旧的条目

3)接下来,您检查用户的IP是否被禁止(将标志设置为true)

4)如果没有,您可以计算出他的IP会话数

5)如果TA的会话过多,则将其插入到被禁止的表中并设置一个标志

6)如果尚未插入sessions_per_ip表,则将其ip插入

我编写了一个代码示例,以更好地显示我的想法。

2.访问计数

如果您的用户使用相同的Cookie来抓取您的页面,则可以使用其会话来阻止它。这个想法很简单:您的用户是否有可能在60秒内访问60页?

步骤:

1、在用户会话中创建一个数组,其中将包含每次访问时间。
2、删除此数组中早于X秒的访问
3、为实际访问添加新条目
4、计算此数组中的条目
5、如果用户访问了Y页,则禁止该用户
样例代码:

3.图片下载

爬虫通常要在很短的时间内获取大量数据,一般不会下载页面上的图像,原因是:图像占用了太多带宽,会使抓取速度变慢。

这个方法的具体做法是:(我认为是最简洁,最容易实现的)

使用mod_rewrite将.jpg /.png /…等格式的图像文件隐藏在网页中。该图像应该在您要保护的每个页面上可用:它可能是您的网站LOGO,一般选择尺寸较小的图像(因为该图像不得缓存)。

步骤:

1. 将这些行添加到您的.htaccess中

2.使用安全性创建您的logo.php

3.在需要增加安全性的每个页面上增加no_logo_count,并检查其是否达到限制。

样例代码:

4.Cookie检查

您可以在javascript端创建cookie,以检查您的用户是否执行了javascript(例如,使用Curl的抓取工具不会)。

这个想法很简单:这与图像检查大致相同。

1、将$ _SESSION值设置为1,并在每次访问中将其递增
2、如果存在cookie(在JavaScript中设置),请将会话值设置为0
3、如果此值达到限制,择禁止用户访问
代码:

5.防止代理

我们可以在网上找到有关不同种类的代理的一些信息:

普通代理显示有关用户连接(尤其是其IP)的信息。 (“normal” proxy)
匿名代理不显示IP,但在标头上提供有关代理使用的信息。(anonymous proxy)
高度匿名代理不显示用户IP,也不显示浏览器可能无法发送的任何信息。(high-anonyous proxy)
发现连接任何网站的代理很容易,但是很难发现high-anonymous代理。

一些$ _SERVER变量可能包含密钥,特别是如果您的用户位于代理之后(详尽列表来自this question):

CLIENT_IP
FORWARDED
FORWARDED_FOR
FORWARDED_FOR_IP
HTTP_CLIENT_IP
HTTP_FORWARDED
HTTP_FORWARDED_FOR
HTTP_FORWARDED_FOR_IP
HTTP_PC_REMOTE_ADDR
HTTP_PROXY_CONNECTION’
HTTP_VIA
HTTP_X_FORWARDED
HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED_FOR_IP
HTTP_X_IMFORWARDS
HTTP_XROXY_CONNECTION
VIA
X_FORWARDED
X_FORWARDED_FOR
如果您检测到$_SERVER变量中有上述字段,就可以为反爬制定相应的反代理安全策略。

结论

综上,有很多方法可以检测到您网站上的爬虫行为。但是,需要精确地了解网站的使用方式,从而您的安全策略误伤正常用户。


喜欢 (1)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址