怎样检测客户端是浏览器发出的操作?
程序员文章站
2022-04-28 13:49:48
...
现在headless浏览器很多,能够模拟出浏览器的很多行为,这对于发垃圾广告信息来说相当容易,即使没有phantomJs或者CasperJs,通过抓包获取目标请求地址,以curl或者snoopy为例,user-agent、mac地址、ip地址、cookie等等全都可以伪造,唯一能防范的验证码,网上的打码软件也太多了,都是雇佣一些大妈大叔来识别,发SPAM也很容易,我就想有没有一种方法检测客户端是实实在在的浏览器,这样我就ban掉这个浏览器就容易多了
回复内容:
现在headless浏览器很多,能够模拟出浏览器的很多行为,这对于发垃圾广告信息来说相当容易,即使没有phantomJs或者CasperJs,通过抓包获取目标请求地址,以curl或者snoopy为例,user-agent、mac地址、ip地址、cookie等等全都可以伪造,唯一能防范的验证码,网上的打码软件也太多了,都是雇佣一些大妈大叔来识别,发SPAM也很容易,我就想有没有一种方法检测客户端是实实在在的浏览器,这样我就ban掉这个浏览器就容易多了
你连打码都算进去的话,没有。
可以试试这两个非常累的做法:
- 把验证码做复杂。比如gif动啊动的验证码。。。
- 限制频率,后端做记录,同一个ip请求频率过快就拉黑。。。
同意 @卖小女孩的火柴 的观点,你要先清楚你为什么要区分用户和机器人,通常有两种情况:
一是防攻击,减轻服务器压力,希望屏蔽掉非用户的访问;这种情况更好的方式是在系统中做好缓存,确保无论怎样量级的访问都不会拖垮服务器才是。
二是防止一些机制被滥用,比如防止用户使用机器人在「邀请朋友注册」中作弊;这种情况更好的方式是把用户和一个实体关联起来,比如可以是手机号,身份证号这样不容易被伪造的实体。当然,有一些用户是方案这种做法的,不希望提供个人隐私信息。