为防采集,如何将 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 最简单的实现?

13315 次点击
所在节点    程序员
92 条回复
xpresslink
2018-12-18 09:11:59 +08:00
@binux 我们不要放题了。
我们现在要讨论提混淆 id 能不能达到反爬的目的。
我讨论是有个默认前提的,就是普通中小型网站用户可以匿名访问的公开内容,爬虫这方也就是个小公司。
淘宝那种网站和百度那个爬虫不在讨论之列。
showecho
2018-12-18 09:13:38 +08:00
jinyu121
2018-12-18 09:14:09 +08:00
讲个笑话:
我们项目的文章 URL 参数里面有一个 uuid。然而,我们只用到了中间的某几位。也就是说,如果实际 ID 是 81d7 的话,那么
1a2af2f0-ff03-4f47-81d7-cd5e134055dd 和 8aa0292a-4b36-4e51-81d7-84110b830520
对应的是同一篇文章。
只防枚举,不反爬虫。
binux
2018-12-18 09:23:52 +08:00
@xpresslink 混淆 ID 可以防止遍历,用户不能遍历,爬虫也不能
xpresslink
2018-12-18 09:42:51 +08:00
@binux
我前面都说了, 爬虫就是伪装成一个用户在那里浏览,反爬虫很难的原因就是你不能为了反爬虫把用户也反了吧。
爬虫遍历是通过列表页,或者页和页之间的链接递归访问实现遍历的。
你所说的用户也不能遍历是什么梗,难道那些页面没有在其它任何页面有链接而孤立存在,你也不让用户看?
没错爬虫需要列表页和链接页面,然而用户也是必然需要的。
pkoukk
2018-12-18 10:03:46 +08:00
@binux 混淆只是加大了遍历难度和复杂度,还没有到不能这个程度
binux
2018-12-18 10:52:07 +08:00
@xpresslink 不,用户不需要遍历,例如历史订单,部分页面只在特定用户的历史订单中存在链接。
xpresslink
2018-12-18 11:06:36 +08:00
@binux 我都说了你跑题了,这个情况不在讨论范围内,你根本就没有理解题意,信息和特定账号绑定的情况这个需要的不是爬虫而是黑客了,你这个资源要是用户用才能专线访问,别说爬虫了就是黑客也没办法。

我讨论是有个默认前提的,就是普通中小型网站用户可以匿名访问的公开内容
binux
2018-12-18 11:44:47 +08:00
@xpresslink #88 并不是,你知道下架产品的 URL,你依旧能够匿名访问到产品以前的快照信息。
搜索引擎以前索引过,你也能搜索到,但是你就是不能从当前的网站中遍历出来。
xpresslink
2018-12-18 12:42:27 +08:00
@binux 你说这个有什么意思呢?都下架了的信息根本我爬虫就不需要爬啊,你别总是跑题扯搜索引擎。
你非这么扯,那我爬虫就不能在你一开站就开始爬么,我的库里也存了旧链接啊。

我们讨论的前提说的很清楚了,用户到你的网站来浏览可以匿名访问的公开信息你怎么反爬。

我不想和你讨论了,太累心。就此打住。
binux
2018-12-18 12:47:20 +08:00
@xpresslink #90 需不需要不是你说的算的,你自己说的算的那种都是小打小闹的玩具项目,谁关心你这个?
likai
2018-12-18 17:26:21 +08:00
@xpresslink 心疼兄弟三秒钟。从 url 防爬虫那就是个笑话,除非,普通匿名用户也无法常规操作正常访问。

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

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

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

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

© 2021 V2EX