首页  >  问答  >  正文

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

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

黄舟黄舟2770 天前599

全部回复(3)我来回复

  • PHPz

    PHPz2017-04-10 15:04:43

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

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

    回复
    0
  • 阿神

    阿神2017-04-10 15:04:43

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

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

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

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 15:04:43

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

    回复
    0
  • 取消回复