全球主机交流论坛

标题: 利用零宽度字符防止被爬虫 [打印本页]

作者: 小脑袋困掉了    时间: 2020-4-3 19:11
标题: 利用零宽度字符防止被爬虫
首先举个栗子:
h​​​t​​​t​​​p​​​s​​​:​​​/​​​/​​​b​​​a​​​i​​​d​​​u​​​.​​​c​​​o​​​m
复制以上链接粘贴到浏览器地址栏,会发现无法打开。
这是为什么呢?就是因为这个字符串中出了叛徒——零宽度字符。
这些叛徒我们看不到,但它确实破坏了链接的有效性。
所以各位站长如果想要反爬虫,可以将站内的链接都用 js 函数修饰一下。
等访客点击的时候可以用 js 解释一下。
作者: ByteCat    时间: 2020-4-3 19:12
a上工具


不,我不是小尾巴,你也看不见我,哼唧
作者: Zeros    时间: 2020-4-3 19:13
h​​​t​​​t​​​p​​​s​​​:​​​/​​​/​​​b​​​a​​​i​​​d​​​u​​​.​​​c​​​o​​​m
控制台看到的
作者: peng123    时间: 2020-4-3 19:13
h​​​t​​​t​​​p​​​s​​​:​​​/​​​/​​​b​​​a​​​i​​​d​​​u​​​.​​​c​​​o​​​m
作者: peng123    时间: 2020-4-3 19:15
但是源代码可以查看呀
作者: 一个不知名网友    时间: 2020-4-3 19:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: sky21022    时间: 2020-4-3 19:17
有意思。研究研究。按说源代码可以看到的代码,通配符都能搞定
作者: peng123    时间: 2020-4-3 19:17
h​t​t​p​s​:​/​/​w​w​w​.​h​o​s​t​l​o​c​.​c​o​m
作者: jackwolf    时间: 2020-4-3 19:18
正则去掉非字母部分看看行不行
作者: 小脑袋困掉了    时间: 2020-4-3 19:18
peng123 发表于 2020-4-3 19:15
但是源代码可以查看呀

是可以看到,但是复制到浏览器里打不开。
作者: 朕的大清完了?    时间: 2020-4-3 19:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: peng123    时间: 2020-4-3 19:21
小脑袋困掉了 发表于 2020-4-3 19:18
是可以看到,但是复制到浏览器里打不开。

确实哎!
作者: 嗷嗷    时间: 2020-4-3 19:21
真好,但是不会玩
作者: 小脑袋困掉了    时间: 2020-4-3 19:22
朕的大清完了? 发表于 2020-4-3 19:19
我感觉多此一举,防爬虫,你把所有连接都弄成#就好了,

然后用户点击的时候解析下 就行了 ...

也可以,只是提供一个思路。
作者: s9901    时间: 2020-4-3 19:26
有点意思,貌似还可以生成防伪码。
作者: jshkk    时间: 2020-4-3 19:29
爬虫需要把URL复制到浏览器吗?
作者: 花样    时间: 2020-4-3 19:29
会不会影响搜索引擎收录
作者: pydos    时间: 2020-4-3 19:31
你能变过去,我能变回来
作者: DROP    时间: 2020-4-3 19:35
你太小看爬虫大佬了
作者: 3721    时间: 2020-4-3 19:39
标签元素 加个随机数算了,不用这么
作者: chr    时间: 2020-4-3 19:42
学到了
作者: 小脑袋困掉了    时间: 2020-4-3 20:57
jshkk 发表于 2020-4-3 19:29
爬虫需要把URL复制到浏览器吗?

当然不需要。
作者: 小脑袋困掉了    时间: 2020-4-3 20:58
DROP 发表于 2020-4-3 19:35
你太小看爬虫大佬了

天下没有攻不破的盾,能防住大部分就已经很不错了。
作者: jshkk    时间: 2020-4-3 21:21
小脑袋困掉了 发表于 2020-4-3 20:57
当然不需要。

那这个咋防啊?
作者: proc    时间: 2020-4-3 21:28
到底还想不想给我们noscript党活路......
作者: zhoumo310    时间: 2020-4-3 21:43
这个很神奇
作者: v2ray    时间: 2020-4-3 21:48
之前我还做了一个利用零宽字符编码的小工具:

https://github.com/iochen/GoSimpleProjects/tree/master/ZeroWidthChar
作者: 全球AV交流论坛    时间: 2020-4-3 22:29
没用的,F12一点,原形毕露
作者: jlk    时间: 2020-4-4 09:14
技术大佬
--< 大多数人如果能给更多事情一个机会的话,他们的问题都能解决。——《岛上书店》 >--
作者: 小脑袋困掉了    时间: 2020-4-4 17:16
v2ray 发表于 2020-4-3 21:48
之前我还做了一个利用零宽字符编码的小工具:

https://github.com/iochen/GoSimpleProjects/tree/master/Z ...

挺好的!
作者: kvavilang    时间: 2020-4-4 17:39
大佬就是厉害
作者: helone    时间: 2020-4-4 17:47
奇才,你以为百度蜘蛛能识别出来url吗?那这样还不如关站呢
作者: 情空明月    时间: 2020-4-4 17:48
我只觉得用户复制的时候会草泥马奔腾
作者: zimuxiaosheng    时间: 2020-4-4 17:50
小脑袋困掉了 发表于 2020-4-3 19:18
是可以看到,但是复制到浏览器里打不开。

问题是爬虫又不是普通访客,不都是从控制台抓信息吗
这能防住啥啊?你以为爬虫都是人工复制的吗?
作者: llyang    时间: 2020-4-4 19:10
本帖最后由 llyang 于 2020-4-4 19:12 编辑

我用正则,没有去掉零字节

  1. abc="h​​​t​​​t​​​p​​​s​​​:​​​/​​​/​​​b​​​a​​​i​​​d​​​u​​​.​​​c​​​o​​​m"
  2. aaa=$(echo $abc | sed 's_\s__g')
  3. echo $abc
  4. echo $aaa
复制代码


  1. abc="h​​​t​​​t​​​p​​​s​​​:​​​/​​​/​​​b​​​a​​​i​​​d​​​u​​​.​​​c​​​o​​​m"
  2. echo "${abc//[^:/\w]/}"
  3. echo $abc
复制代码

作者: 利姆露    时间: 2020-4-4 20:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小脑袋困掉了    时间: 2020-4-4 22:12
zimuxiaosheng 发表于 2020-4-4 17:50
问题是爬虫又不是普通访客,不都是从控制台抓信息吗
这能防住啥啊?你以为爬虫都是人工复制的吗? ...

爬虫不都是用正则检测链接的吗?这个用正则检测不到啊。。
作者: hehe    时间: 2020-4-4 22:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 夏生啊    时间: 2020-4-4 22:37
re.sub('\u200b','', s)
作者: yjsx86    时间: 2020-4-4 23:23
本帖最后由 yjsx86 于 2020-4-4 23:26 编辑
  1. import requests, string


  2. session = requests.session()
  3. r = session.get("https://443502.xyz/thread-668846-1-1.html")
  4. rs = ""
  5. for x in r.text:
  6.     if '\u4e00' <= x <= '\u9fff' or \
  7.             x in '''!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
  8. ''':
  9.         rs += x

  10. print(rs)
复制代码



作者: gougou6423    时间: 2020-4-6 13:39
零宽字符正则匹配下就去了,你JS能去,我正则还去不了?
作者: 小脑袋困掉了    时间: 2020-4-6 13:50
gougou6423 发表于 2020-4-6 13:39
零宽字符正则匹配下就去了,你JS能去,我正则还去不了?

正则可以去,顶多防小白,大佬防不住的。
作者: llyang    时间: 2020-4-6 20:19
小脑袋困掉了 发表于 2020-4-6 13:50
正则可以去,顶多防小白,大佬防不住的。

我在35楼写的正则,咋去不了呀

大佬,请教2个问题:
1、如何用常规软件,或者linux中,制造零字节。劳驾科普下
2、regEx咋删除
作者: 小脑袋困掉了    时间: 2020-4-7 13:00
本帖最后由 小脑袋困掉了 于 2020-4-7 13:02 编辑
llyang 发表于 2020-4-6 20:19
我在35楼写的正则,咋去不了呀

大佬,请教2个问题:


零宽度字符的 Unicode 码值为 \u200B,在任何可以用 unicode 表示字符串的编程语言里都可以用:
比如 Python 中可以用 u'\u200B' 这种方式来表示。
正则的话以 JavaScript 为例,可以用 /^(.\u200B{3})+.$/.test("h​​​t​​​t​​​p​​​s​​​:​​​/​​​/​​​b​​​a​​​i​​​d​​​u​​​.​​​c​​​o​​​m") 来匹配。
作者: llyang    时间: 2020-4-7 13:07
小脑袋困掉了 发表于 2020-4-7 13:00
零宽度字符的 Unicode 码值为 %u200B,在任何可以用 unicode 表示字符串的编程语言里都可以用:
比如 Pyt ...

谢谢啦,大佬

记下来了
\u200B
作者: llyang    时间: 2020-4-7 13:16
本帖最后由 llyang 于 2020-4-7 13:21 编辑

我插入进去了,还是能正常使用,怪异的很

  1. echo -e "https://www.ba\u200Bidu\u200B.\u200Bc\u200Bom"
  2. https://www.ba​idu​.​c​om
复制代码


插入到https中,就无法打开了
插入到 www.baidu.com中,正常打开

===================================

我被前面的js, python等一大堆语言吓死了,因为我不会

你说出真正的关键,啥语言都easy。选择自己熟悉的语言,杠杠的。

再次谢谢大佬的

作者: suwubee    时间: 2020-4-7 14:47
llyang 发表于 2020-4-7 13:16
我插入进去了,还是能正常使用,怪异的很

插入到 www.baidu.com中,浏览器会自动解释。
作者: maro666    时间: 2020-4-7 14:52
你看下汽车之家的帖子 全是插的字符
作者: hostlocs    时间: 2020-4-7 14:58
本帖最后由 hostlocs 于 2020-4-7 15:03 编辑

这样么?

h​t​t​p​s​:​/​/​w​w​w​.​h​o​s​t​l​o​c​.​c​o​m​/
作者: Init    时间: 2020-4-7 15:04
ByteCat 发表于 2020-4-3 19:12
a上工具



小尾巴暴露了,在手机版一览无余
作者: ByteCat    时间: 2020-4-7 16:33
Init 发表于 2020-4-7 15:04
小尾巴暴露了,在手机版一览无余

哈哈哈 暴露了




欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4