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

2014-09-17 09:48:00 +08:00
 kisshere
想对论坛发广告帖的用户浏览器做永久屏蔽,但目前用于标识客户端浏览器,用cookie,但是很容易被清理掉,php又没法获取mac地址,用evercookie貌似也应该能被清除,有没有更好的办法获取客户端浏览器唯一标识?
12914 次点击
所在节点    程序员
71 条回复
Fedor
2014-09-17 09:54:07 +08:00
为什么要针对用户的浏览器? 直接针对用户如何?
hging
2014-09-17 09:57:00 +08:00
屏蔽IP不就完了.
kisshere
2014-09-17 09:57:32 +08:00
@Fedor 发广告帖的人,你删除了他的账户,他再注册一个账号继续发广告帖不就行了么?只能ban掉浏览器啊
kisshere
2014-09-17 09:57:58 +08:00
@hging 更改个ip不就得了?
holystrike
2014-09-17 09:59:07 +08:00
木有办法,专业发广告的浏览器都不用

可以从限制广告内容入手,凡是检测到发类似内容的用户直接ban掉
hging
2014-09-17 09:59:12 +08:00
@kisshere 那换个浏览器不完了. 再说伐广告的谁还用浏览器啊......
superbear
2014-09-17 10:00:18 +08:00
浏览器能干的,程序就能干。。。
Fedor
2014-09-17 10:01:36 +08:00
看来获得账号的成本很低, 可否让账号获取的难度大些?
注册12小时内不许发帖。
发帖扣体力。
...
找出他们和正常用户的差别, 使用一些不影响正常用户的策略, 应该能够给这些捣蛋的人带来一些困难。
Actrace
2014-09-17 10:25:18 +08:00
MAC地址也是可以伪造的.
最好的方法是根据用户行为进行策略上的防控.
kisshere
2014-09-17 10:28:07 +08:00
@Actrace 能具体一点吗?
cougar
2014-09-17 10:28:29 +08:00
我觉得封ip最好,简单省事,他换ip也是要成本的,而封ip你的成本最低
wdlth
2014-09-17 10:28:29 +08:00
先加个验证码呗……
IFoon
2014-09-17 10:30:24 +08:00
唯一的办法是获取CPU或者主板的序列号进行屏蔽。
azuginnen
2014-09-17 10:34:03 +08:00
换浏览器不就是换 user-agent么,chrome版本号都可以到1000的。。。

你让单位时间内发帖数不能超过一个阈值不就可以了,不但策略可以针对用户账号,也可以针对某一ip。

比如v2ex单位时间内看帖数都不能高于一定的值,1分钟能看60个帖子,肯定是爬虫无疑。。
old9
2014-09-17 10:35:50 +08:00
shiny
2014-09-17 10:40:48 +08:00
回复里很多帖子都不靠谱,大概不清楚 http 协议的原理。来自客户端的变量都不可信,除了 ip 地址没有多少信息可以信任的。
raincious
2014-09-17 10:45:26 +08:00
@kisshere 任何Client side的保护措置都是有破解可能的。

你可以在服务器上绑定Cookie Session Key的产生策略:

1. 仅当客户端有Cookie Session Key的时候允许用户登录。
2. Cookie Session Key的产生机制与IP地址绑定。控制这个IP地址每分钟能够产生多少Cookie。当超过这个限制的时候禁止Cookie Session Key的产生,同时不使用任何Cookie Session Key。
3. 对每个产生的Cookie进行两字段效验,存的时候类似于 SESSION_KEY|COOKIE_HASH,通过COOKIE_HASH来验证SESSION_KEY是否合法,加密算法可以自己设计个,比如用一个站点密钥什么的,和密码加密类似。
4. 控制每个Cookie Session Key仅能绑定一个用户。

这样发帖机必须得到Cookie才能发帖,并且由于上面的策略,他的发帖行为只能使用受到站点限制的Cookie Session Key来进行。当这个条件满足的时候:

1. 设计用户发帖策略,限制用户每分钟的发帖数。
2. 设置帖子内容提取策略,从帖子中提取一段或多段作为“特征码”。同样特征码+同一个用户发布的帖子不允许发布多次。
3. 其实到这里你怎么玩都可以了,用户已经不可能通过刷新Cookie的方法随便变更保护Session Key了。
zakokun
2014-09-17 10:48:17 +08:00
最简单的就是封ip了,他换ip比较繁琐,你封起来简单 还有就是提高发帖门槛,比如新注册账号必须做完一系列的新手任务,才允许发帖,等级低于一定的用户,一定时间内只能发1个帖子,这样的
oott123
2014-09-17 10:49:02 +08:00
换种思路吧
比如给正常用户打 evercookie
或者考虑这个思路 http://best33.com/96.moe
chairuosen
2014-09-17 10:52:17 +08:00
canvas指纹+1,但只能前端做

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

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

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

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

© 2021 V2EX