15 个回答

只要公开的都有办法爬,包括含登陆验证的

建表的时候处理下

id,hash(随机字符串就好,6-8位)

id只给内部用,不要返回给前台,前台使用hash读取文章

基本想要爬你的话,你怎么hash都没用。

可以谷歌关键字’slug‘,很多都是直接用英文或者是拼音展示吧,当然了hash也可以,或者就看下segmentfault的设置啊,—_-!

hash ,你哪里看的文章乱写的啊 -_-

hash 之后,你自己都无法知道原来的 id 是什么啦。

如果要非可预测性的主键,成熟方案是使用 uuid

当然,你不怕麻烦,专门拿一列存一个 showId ,它是“非可预测值”(这个值可以是 id 的 hash ,加 salt)。

设置不规则ID,只能增加爬虫难度,没办法杜绝。
爬虫会从上级列表页面获取文章连接。所以说这个问题基本杜绝不了

你经过一番折腾后找到了方案,比如hash了下,那么用户从列表页点进来是hash过的链接,难道爬虫就不能从列表页进来?

不需要的,你能想到的,爬虫都想到了。你想不到的,可能爬虫也想到了。。。

新手上路,请多包涵

公开的数据没办法杜绝爬虫的,除非需要登陆,限制注册

如果ID是连续的,恶意用户的扒取工作就非常容易做了,直接按照顺序下载指定URL即可;如果是订单号就更危险了,竞对可以直接知道我们一天的单量。所以在一些应用场景下,会需要ID无规则、不规则。

找个大数和id做异或运算。
用uuid或者ObjectId做主键也行。
哈希以后你自己都不知道它是哪个id,除非再建一个列存hash值

对外开放的都可以爬的,靠1-10000这样爬的应该只是新新手了吧,根据你的页面的结构和页内连接一样能爬。

真的不想那么容易的被爬,你可以做一个id,在hash一套验证码,请求id的时候顺便把hash验证一下。

把请求区分开来,也就是将请求分为有效请求和无效请求

encode一下,然后用的时候再decode,就得出正确的id了,这样不是很方便吗,为什么要存储,根本不需要存

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题