全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 6543|回复: 50
打印 上一主题 下一主题

[疑问] 利用零宽度字符防止被爬虫

  [复制链接]
跳转到指定楼层
1#
发表于 2020-4-3 19:11:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
首先举个栗子:
h​​​t​​​t​​​p​​​s​​​:​​​/​​​/​​​b​​​a​​​i​​​d​​​u​​​.​​​c​​​o​​​m
复制以上链接粘贴到浏览器地址栏,会发现无法打开。
这是为什么呢?就是因为这个字符串中出了叛徒——零宽度字符。
这些叛徒我们看不到,但它确实破坏了链接的有效性。
所以各位站长如果想要反爬虫,可以将站内的链接都用 js 函数修饰一下。
等访客点击的时候可以用 js 解释一下。
推荐
发表于 2020-4-4 17:47:17 | 只看该作者
奇才,你以为百度蜘蛛能识别出来url吗?那这样还不如关站呢
推荐
发表于 2020-4-3 19:39:54 来自手机 | 只看该作者
标签元素 加个随机数算了,不用这么
推荐
发表于 2020-4-6 20:19:53 | 只看该作者
小脑袋困掉了 发表于 2020-4-6 13:50
正则可以去,顶多防小白,大佬防不住的。

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

大佬,请教2个问题:
1、如何用常规软件,或者linux中,制造零字节。劳驾科普下
2、regEx咋删除
推荐
发表于 2020-4-4 22:26:14 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
推荐
 楼主| 发表于 2020-4-3 20:58:47 来自手机 | 只看该作者
DROP 发表于 2020-4-3 19:35
你太小看爬虫大佬了

天下没有攻不破的盾,能防住大部分就已经很不错了。
推荐
发表于 2020-4-3 19:13:42 | 只看该作者
h​​​t​​​t​​​p​​​s​​​:​​​/​​​/​​​b​​​a​​​i​​​d​​​u​​​.​​​c​​​o​​​m
控制台看到的
51#
发表于 2020-4-7 16:33:51 | 只看该作者
Init 发表于 2020-4-7 15:04
小尾巴暴露了,在手机版一览无余

哈哈哈 暴露了
50#
发表于 2020-4-7 15:04:06 来自手机 | 只看该作者
ByteCat 发表于 2020-4-3 19:12
a上工具



小尾巴暴露了,在手机版一览无余
49#
发表于 2020-4-7 14:58:33 | 只看该作者
本帖最后由 hostlocs 于 2020-4-7 15:03 编辑

这样么?

h​t​t​p​s​:​/​/​w​w​w​.​h​o​s​t​l​o​c​.​c​o​m​/
48#
发表于 2020-4-7 14:52:50 | 只看该作者
你看下汽车之家的帖子 全是插的字符
47#
发表于 2020-4-7 14:47:03 | 只看该作者
llyang 发表于 2020-4-7 13:16
我插入进去了,还是能正常使用,怪异的很

插入到 www.baidu.com中,浏览器会自动解释。
46#
发表于 2020-4-7 13:16:09 | 只看该作者
本帖最后由 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。选择自己熟悉的语言,杠杠的。

再次谢谢大佬的
45#
发表于 2020-4-7 13:07:26 | 只看该作者
小脑袋困掉了 发表于 2020-4-7 13:00
零宽度字符的 Unicode 码值为 %u200B,在任何可以用 unicode 表示字符串的编程语言里都可以用:
比如 Pyt ...

谢谢啦,大佬

记下来了
\u200B
44#
 楼主| 发表于 2020-4-7 13:00:20 | 只看该作者
本帖最后由 小脑袋困掉了 于 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") 来匹配。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-9-25 20:44 , Processed in 0.066345 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表