>백엔드 개발 >PHP 튜토리얼 >怎样检测客户端是浏览器发出的操作?

怎样检测客户端是浏览器发出的操作?

WBOY
WBOY원래의
2016-06-06 20:42:211195검색

现在headless浏览器很多,能够模拟出浏览器的很多行为,这对于发垃圾广告信息来说相当容易,即使没有phantomJs或者CasperJs,通过抓包获取目标请求地址,以curl或者snoopy为例,user-agent、mac地址、ip地址、cookie等等全都可以伪造,唯一能防范的验证码,网上的打码软件也太多了,都是雇佣一些大妈大叔来识别,发SPAM也很容易,我就想有没有一种方法检测客户端是实实在在的浏览器,这样我就ban掉这个浏览器就容易多了

回复内容:

现在headless浏览器很多,能够模拟出浏览器的很多行为,这对于发垃圾广告信息来说相当容易,即使没有phantomJs或者CasperJs,通过抓包获取目标请求地址,以curl或者snoopy为例,user-agent、mac地址、ip地址、cookie等等全都可以伪造,唯一能防范的验证码,网上的打码软件也太多了,都是雇佣一些大妈大叔来识别,发SPAM也很容易,我就想有没有一种方法检测客户端是实实在在的浏览器,这样我就ban掉这个浏览器就容易多了

你连打码都算进去的话,没有。

可以试试这两个非常累的做法:

  1. 把验证码做复杂。比如gif动啊动的验证码。。。
  2. 限制频率,后端做记录,同一个ip请求频率过快就拉黑。。。

同意 @卖小女孩的火柴 的观点,你要先清楚你为什么要区分用户和机器人,通常有两种情况:

一是防攻击,减轻服务器压力,希望屏蔽掉非用户的访问;这种情况更好的方式是在系统中做好缓存,确保无论怎样量级的访问都不会拖垮服务器才是。

二是防止一些机制被滥用,比如防止用户使用机器人在「邀请朋友注册」中作弊;这种情况更好的方式是把用户和一个实体关联起来,比如可以是手机号,身份证号这样不容易被伪造的实体。当然,有一些用户是方案这种做法的,不希望提供个人隐私信息。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.