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

13312 次点击
所在节点    程序员
92 条回复
wysnylc
2018-12-17 16:57:55 +08:00
不需要解密:hash
需要解密:任意对称算法即可但是要注意有被破解风险
luosuosile
2018-12-17 17:13:59 +08:00
@cdwyd 你的意思是爬虫只能爬到网页 html 里面有的,但是旧的已经不在上面了。所以他们只能爬到一部分。
不过旧页面的痕迹百度这些搜索引擎还留着,所以可以通过百度 google 得到那个页面。手动 dog:),我说对了就快夸我:)。
那些他们无法直接通过网页 html 或者 url 分析出来,只能通过搜索引擎,通过搜索引擎又是不科学的做法。
luosuosile
2018-12-17 17:17:11 +08:00
@cdwyd 不过有的网站能给用户看的数据不能这么做呢,比如漫画网,,只给用户看一部分做不到呢。视频网站做成一块一块增大了爬取难度,又减轻了服务器压力。上个月想把 utb 里面的一个教学视频抓下来但是一时卡住了就不做了:),我都记不得卡在哪里了。。。好像是获取那个视频块的列表有压力
cdwyd
2018-12-17 17:21:07 +08:00
@luosuosile
通过搜索引擎只能获取到很有限的一部分链接,所以基本上抓取到的也就很有限。

楼上好几个人在那不断强调“只要人看到的,就能抓到”,“只要有链接就能抓到”,却不明白混淆 ID 就是为了不让你获取全部链接。抓取内容的第一步就是先获取到链接,链接都没拿到还爬个毛线啊。

如果还有人要杠,那再举两个例子:
1. 淘宝的绝大多数商品人都能看到,你能把淘宝的绝大多数商品都抓到吗?
2. 搜索引擎那里有海量的链接,你能抓到总量的 0.000000001 吗?
cdwyd
2018-12-17 17:23:02 +08:00
@luosuosile
单篇的漫画肯定给用户看全,但是没有必要把全部的内容到从列表页显示出来。
zbinlin
2018-12-17 17:56:13 +08:00
应该学习下淘宝,它的反爬可是把正常用户都挡在门外了。
LichMscy
2018-12-17 18:00:46 +08:00
反爬最牛逼的还是,能正常请求但返回错误信息

ip 花钱可以租,弄个代理池还是很麻烦,可以对可疑 ip 进行标记,然后返回错误信息
xpresslink
2018-12-17 18:03:36 +08:00
@binux 你说的完全是外行话,搜索引擎本身就是一个大爬虫,去网站上通过页面上的链接来递归爬取信息,并把网页快照等,分类存储在数据库中。
cdwyd
2018-12-17 18:05:50 +08:00
@xpresslink
这个真的是班门弄斧了
xpresslink
2018-12-17 18:32:28 +08:00
通过搜索引擎只能获取到很有限的一部分链接,所以基本上抓取到的也就很有限。

楼上好几个人在那不断强调“只要人看到的,就能抓到”,“只要有链接就能抓到”,却不明白混淆 ID 就是为了不让你获取全部链接。抓取内容的第一步就是先获取到链接,链接都没拿到还爬个毛线啊。

混淆 ID 就是为了不让你获取全部链接,你让用户也不看不到全部链接么?这么说吧我弄个高级爬虫模拟用户行为,你能防住爬虫就要把用户给防了。你让用户都看不到你网站也没有意义了。


如果还有人要杠,那再举两个例子:
1. 淘宝的绝大多数商品人都能看到,你能把淘宝的绝大多数商品都抓到吗?
这个真要和你杠一下,你举的这个栗子不太合适。理论上是可以的,这个做不到主要原因是淘宝的内容是天量,除了 BAT 之外的公司你说谁有那个小公司有钱能买这么多存储空间。

2. 搜索引擎那里有海量的链接,你能抓到总量的 0.000000001 吗?
技术是可以的,搜索引擎都是大爬虫而已,而且都是采集公开信息,只要我有足够资金弄个建个千度难道不抓到 google 的 0.000000001 吗?
cdwyd
2018-12-17 19:21:44 +08:00
@xpresslink
这种毫无逻辑的讨论就没意思了,我说东你扯西。
xpresslink
2018-12-17 19:39:12 +08:00
@cdwyd 你才是先把问题带偏了好吧。
说爬虫你扯搜索引擎,要么拿极端情况例子来反驳理论普遍适用性问题。
373209457
2018-12-17 21:56:04 +08:00
把你网页的内容全部渲染成图片再返回到前端就好了
singer
2018-12-17 23:46:47 +08:00
新增一个字段存对外的唯一 id,md5(自增 id+时间随机)
realpg
2018-12-18 00:47:11 +08:00
自己随便定一个简单的一对一映射关系即可

在前台显示端 以及参数传递进后端时候进行一次变换
hundan
2018-12-18 00:52:42 +08:00
搜索引擎这块可以搞,百度之类的爬虫,有公布 ip 地址的,针对非爬虫的 ip 做反爬就行了
ck65
2018-12-18 00:58:21 +08:00
「发号机」了解一下
crab
2018-12-18 01:34:31 +08:00
识别出是采集者,别屏蔽,直接给脏数据。
binux
2018-12-18 04:08:43 +08:00
@xpresslink 搜索引擎是从网站上线第一天起就开始爬了,而你不是。
存储是爬取过程中最不值钱的东西。

爬虫,包括搜索引擎和定向爬虫,我不敢说全球 top,在国内我是专家级的。
likai
2018-12-18 05:51:50 +08:00
只要用户正常操作能看到的页面,爬虫都能爬到,这话没毛病,
v2 也一样,只要在这个网站正常浏览能访问到的页面(非搜索跳转),爬虫照样可以爬得到,

本身 200 条数据,你只取一百条数据出来提供浏览,正常用户不通过搜索引擎都浏览不到的当然爬不到

实在不服的,下载个火车头或者自在工坊的去看看人家提取页面连接有哪几种方法,然后重新想想不规则 id 有没有用

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

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

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

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

© 2021 V2EX