php 如何对客户端 pc 生成唯一标识?

2014-09-17 09:48:00 +08:00
 kisshere
想对论坛发广告帖的用户浏览器做永久屏蔽,但目前用于标识客户端浏览器,用cookie,但是很容易被清理掉,php又没法获取mac地址,用evercookie貌似也应该能被清除,有没有更好的办法获取客户端浏览器唯一标识?
12914 次点击
所在节点    程序员
71 条回复
mornlight
2014-09-17 15:38:09 +08:00
@raincious 你的考虑应该是对的,凡是http请求里带的东西都可以被伪造。感觉@kisshere 说的这个更适合于社区封禁特定的普通用户,反爬虫不行。
mornlight
2014-09-17 15:39:37 +08:00
@lygmqkl 封ip应该是最不应该考虑的思路,稍微用点心的机器人都会带代理。有实时代理接口拿数据,发现自己被封了立马换。
webjin
2014-09-17 15:44:34 +08:00
这种不错
oott123
2014-09-17 16:30:54 +08:00
@raincious http://en.wikipedia.org/wiki/Hashcash

我解释得不太清楚,还是参考维基的这个条目吧。

当然这是一个最为另类的思路,同时也是影响较小、成本较低、效果较好的。

总不能一次性把他们一网打尽了不是?
raincious
2014-09-17 16:53:40 +08:00
@oott123

不,事实上Bitcoin是一种特殊的应用机制,他需要使用Hash来保证产生的货币数量。但是Session不是。

另外:

1、“影响较小”这我不知道怎么具体判定,跳过;
2、“成本较低”这个应该不算,因为需要研究出算法。你只能先研究出算法然后才能知道成本具体是多少。但是我就所提到的的 if ($sessionPostLockExpire > time()) {} 这个的成本应该是恒定且不高的,哪怕加上那个Session系统(大部分网络系统都有这个,而其实你的方式也需要Session)。
3、“效果较好”这个也不能判定,得看你算法的情况。你不能拿着个不存在的魔法算法来讨论这个问题。但是就普遍的情况而言,就像我39楼第2和第3条说的说,恐怕很难达到实用的程度。

所以这么多未知面前,你得先把算法做出来,然后测试出结果才行。
oott123
2014-09-17 17:00:47 +08:00
@raincious 我做了呀
我也在我博客和校bbs上实验过呀
效果不错呀…
pimin
2014-09-17 17:14:49 +08:00
大概发广告现在都手动了?针对浏览器行为没有任何意义。相对来说单用户连续发两次广告概率比多用户发不同广告概率低太多了。所以不如整体考虑防广告策略。

1.注册后发帖时间限制问题
现在发广告的一般是脚本针对特定程序成堆注册配合人工注册N多账号备用,所以这个现在只能解决一小部分非专业广告者。

2.特定逻辑
针对新用户采取多种特定逻辑处理,完成才能发帖。比如:强制要求必须有头像,必须验证邮箱,必须填写个人资料里某特定项,前10贴有超级变态验证码等等。

3.寻找群策群力的解决方案
类似wp的广告插件,我想其它cms/bbs应该也会有,根本目的还是定义广告特征进行删贴。防患于未然。那些肉玲过别人的广告不能再蹂躏你,远远比那些蹂躏过你的广告不能再次蹂躏你意义大得多。
bjzhush
2014-09-17 17:15:13 +08:00
可以从多个不同的维度来防spam
基于用户的,比如发送1次广告警告,2次删号
基于ip的,有用户发广告时封这个ip一天/三天/七天/一万年
同时可以基于cookie的,因为用户发表内容一般需要登录,不管是浏览器还是模拟登录都会带上cookie,具体策略你自己设计就好了
crab
2014-09-17 17:32:23 +08:00
论坛的话,那应该有等级积分这类区分吧。设定新注册用户到某个等级之前,发贴前都需要回答自定义问题(别用验证码那种,那种可以代答。)
imn1
2014-09-17 17:32:36 +08:00
帐号和邮箱挂钩,只接受少数几个大公司的邮箱,封帐号就行了
个人不可能有太多邮箱,如果他在那些大公司乱注邮箱,那些大公司也会拦截他的
至于邮箱收不到验证码之类,那是客户问题,你这边用自己邮箱测试一下确认能发到就行
Actrace
2014-09-17 18:11:21 +08:00
8楼的思路不错.
bombless
2014-09-17 18:53:51 +08:00
先加大非浏览器发送的难度(不过也有phantomJS这样的项目…)然后canvas指纹吧…
thursday
2014-09-17 21:34:46 +08:00
综合起来。。就一句话 技术解决是不可能的。只能和业务结合设计门槛。。 http协议摆在那里。客户端发来的东西 除了 ip 是真的(当然可以代理) 。其他都是由他发来的。就都可以伪造。 只有ip 因为数据包还要回去,所以不能是伪造的假ip。必须是发起者的ip。 所以只有ip是真的其他都是可以模拟的。而ip又可以代理。。。所以这个问题无解。。。只能结合业务设置门槛。。。除非天,tcp/ip 这套协议变了。估计还有戏。。。
GhostFlying
2014-09-17 22:02:41 +08:00
@imn1 实际上经常看到spammer的邮箱是163或者qq的,对于大部分bbs来说,这种邮箱都是 不可能不允许注册的吧
aaronlam
2014-09-17 22:58:50 +08:00
验证码走起。。
master
2014-09-18 01:56:34 +08:00
@imn1
我之前也试验过向邮箱发送注册连接并且完成二次激活与上传头像作为前提条件,但是实际效果也很不理想,能发现有大量的spamer在用Gmail和Hotmail来注册,有的是用.来重复利用帐号,有的就是一堆的帐号,头像这种能被机器模拟的就更是意义不大。
同样,通过人工来完成注册到能发帖这第一道砍然后帐号放着备用,过了相当长一段时间发Spam的也很参见,也怀疑是某些专门注册帐号卖给Spamer的。

我不知道为啥大家都那么喜欢封IP,我碰上的情况是封IP效果不好,还会引来正常用户的投诉。
我这边之前检测到Spamer的特征是有相当部分IP来自福建。但是我网站访问群体也有30%左右在福建,所以有时稍微封一两个IP,没多久就能收到正常用户使用ADSL拨号出现无法访问的投诉,就让我基本放弃去封国内的IP。

我现在的做法是首先注册的时候先限制IP注册频次,对IP、帐号和邮箱走akismet,其次在发帖操作的时候对用户帐号做一些评定,比如对于新帐号的注册地域、上次活跃地域和当前地域有非常大的差距时限制操作,比如新帐号的前几个帖子中有被触发认定为不合法帖子的比例达到阙值自动屏蔽帖子和封号等等
konakona
2014-09-18 05:21:24 +08:00
有以下常用手法:

IP Or IP段(202.130.*.*)
Member Account ID
cookie Or cookie + session ID
konakona
2014-09-18 05:22:03 +08:00
@master 当你在运营一款线上产品(如bbs),如果不采取技术手段解决骚扰,就只能增加人工监管成本。
konakona
2014-09-18 05:23:10 +08:00
@thursday WEB所能作的一切,都是基于浏览器和HTTP协议的。
因此并非不可能,而是这2个因素条件不允许。
以后也不应该不会,因为不安全。

—— 最多只能这样回答了-,,-
如果楼主真的钻牛角尖,比如hacker 啊~~~~ 哈哈哈
RemRain
2014-09-18 08:03:22 +08:00
这个问题贴近无解,但可以用各种技巧增加机器发帖成本,比如每个用户发帖提交的URL和参数不一样,页面元素弄的无规律,这样每个账号都需要分析请求。另外页面加载flash做运算,干掉phantomjs等模拟浏览器的工具。加入页面广告,并判断广告是否加载成功等,这样还能增加点收入

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/133910

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX