为防采集,如何将 URL 中的自增数字 id 换成无规律字符串?

2018-12-17 08:46:03 +08:00
 alwayshere

很多 URL,比如 SO,都是这种形式: https://stackoverflow.com/questions/53798427/type-mismatch-dependent-mealy-machine ,其中的 53798427 也许就是数据库中的自增 id 主键(不管 SO 是不是,至少我目前是这么干的),直接查询 URL 中的 id,对应数据库中的自增主键 id,查询效率最高。但这样的话,采集者都不用爬列表页了,直接自增 id,一个 while 循环就可以把所有内容也爬完了,所以可不可以生成一个无规律字符串,该字符串 int 或者 char 类型都可以,可以逆向生成数据库主键 id,再在数据库中查询该 id,如何用 php 最简单的实现?

12698 次点击
所在节点    程序员
92 条回复
binux
2018-12-17 08:50:07 +08:00
找个块加密算法加密一下
maggch
2018-12-17 08:53:41 +08:00
。。。有什么用吗
curiousjude
2018-12-17 08:54:31 +08:00
hashid 可以了解一下,https://hashids.org/
yidinghe
2018-12-17 09:01:23 +08:00
ID 干脆不要用数字了,需要序列的地方令起一个字段。
Vegetable
2018-12-17 09:02:40 +08:00
这个自己随便写一个可还原的混淆方法就完了,但是这也挡不住采集工具啊,反而他还要多跑一层增加服务器压力。
这也是很多网站干脆开放 API 的原因,堵不如疏嘛
humansjl
2018-12-17 09:03:18 +08:00
uuid
ichubei
2018-12-17 09:04:02 +08:00
可以按页采啊,想采集你怎么都能采集得到……,只要用户能看到,就能采集到。
lhx2008
2018-12-17 09:05:03 +08:00
@curiousjude 这个被解密之后不是还可以找规律么。。
reself
2018-12-17 09:07:00 +08:00
用散列算法呀,和完整性校验一样的原理
annielong
2018-12-17 09:13:30 +08:00
没用的,会先采集列表,再采集内容页,根本不会管理内容页 url 是什么
hanshijun
2018-12-17 09:21:17 +08:00
你说的应该是发号器吧?
beiyu
2018-12-17 09:21:30 +08:00
没法从 ID 层面来限制不能被爬;能做的就是对 IP 和 API 接口做时效请求次数限制。不过这样也有办法能破,换个代理 IP 就行了=..=;所以理论上来说爬虫是想到哪就到哪的,和蒙多一个道理。
earthyan
2018-12-17 09:25:49 +08:00
Hashid
jetyang
2018-12-17 09:35:46 +08:00
3 楼说的 hashid 我们也在用,轻量、加密串短,试试呗
shench
2018-12-17 09:39:36 +08:00
除非你没有列表页,不然你用啥我都采的到,我用火车头就够了
detailyang
2018-12-17 09:43:00 +08:00
十进制转任意( 64 )进制,其中每一位的顺序可以随机打乱
PerFectTime
2018-12-17 09:49:22 +08:00
GUID?
tabris17
2018-12-17 09:53:47 +08:00
可以用 skip32 算法加密 32 位整型,不需要存放额外的字段( GUID 或者 HASH ),如果 ID 是 64 位整型,做两次 skip32 操作即可。
yim7
2018-12-17 09:56:23 +08:00
hash 呗
ylsc633
2018-12-17 09:58:40 +08:00
一般用 hashid

那么问题来了, 这个 hashid 类似于很多大平台里设置的 uid 字段

这个字段是 id 生成以后生成再插入进去呢 还是 随着这条数据生成时候 一起插入进去呢

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

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

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

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

© 2021 V2EX