宝塔拨测博客拨测技术博客
宝塔拨测

二维码解析出来是什么?链接、文本与识别失败的 5 个原因

二维码解析就是把二维码图片里的黑白模块还原成一段字符串。结果可能是一个网址、一句纯文本、一段 Wi-Fi 配置,也可能是一串看不出含义的编码。工具只负责「读出来」,不会替你打开链接,也不会判断内容是否安全。

本文用在线二维码解析工具实测了 12 组图片:正常的网址码、中文文本码、反色码,以及缩小、模糊、裁半、低对比等变体,把能读和读不出的边界记下来。

二维码解析工具:上传 400×400、475 B 的 PNG 后,结果框显示 https://www.bt.cn/,下方提示识别成功

二维码里存的不是「链接」,是一段字符串

二维码本身不区分链接和文本,它只存字节。扫码软件看到内容以 http:// 或 https:// 开头,才会把它当网址打开;否则就按纯文本显示。

所以同一个码,用不同软件扫,表现可能不一样:有的直接跳浏览器,有的先弹窗让你确认,有的只把文字复制出来。解析工具属于第三种——它只把原始字符串显示在结果框里。

常见的「看起来不像网址」的二维码内容有:

  • 纯文本:一句留言、一个编号、一段序列号。
  • Wi-Fi 配置:以 WIFI: 开头,分号分隔 SSID、加密方式和密码。
  • 名片信息:以 BEGIN:VCARD 开头的文本。
  • 短链:一串跳转地址,真实目标要看跳转后的域名。

实测中文内容也能正常还原:470 B 的二维码解析出「宝塔拨测 t.bt.cn/blog/」,没有乱码。二维码本身不规定字符编码,中文能否正确显示,取决于生成时用的编码(常见是 UTF-8)和解码器的判断。

实测:哪些图能解析,哪些读不出来

下表是同一张 400×400 的网址二维码(475 B)的 10 组变体,加 1 张非二维码文字图,共 11 组;中文码那 1 组见上文,合计 12 组。

处理方式 结果
原图 400×400 识别成功,得到 https://www.bt.cn/
整张反色(黑白颠倒) 识别成功
裁掉四周白边,360×360 识别成功
缩到 48×48 再放大到 400×400 识别成功
缩到 24×24 再放大到 400×400 失败
模糊 3px 识别成功
模糊 8px 失败
模糊 16px 失败
只保留左半张 失败
黑色模块改成浅灰(低对比) 失败
普通文字图(没有二维码) 失败

失败时结果框保持空白,按钮右侧出现红色提示:「未识别到二维码,请尝试更清晰或更完整的图片」,复制按钮同时变灰。

二维码解析失败:模糊 8px 的二维码上传后,结果框为空,提示未识别到二维码

这组结果说明一件事:解码器看的是「有效模块还分不分得清」,不是图片文件大不大。 24×24 的图上采样到 400×400,文件有 69,753 字节,但每个模块的信息已经丢了;48×48 的变体文件 34,672 字节,反而能读出来。

识别失败的 5 个原因,按改动成本排序

  1. 图太糊。 实测 8px 高斯模糊失败,3px 仍成功。截图后放大、微信多次转发、拍屏幕,都会让模块边缘发虚。优先找原图,或重新截一次。
  2. 分辨率太低。 24×24 失败、48×48 成功。二维码在整张图里占比太小时,先裁到码区再上传,不要靠放大补细节。
  3. 码不完整。 只保留左半张会失败。缺定位角、缺一条边,解码器就无法确定网格。
  4. 对比度不够。 把黑模块改成 #AAAAAA 后失败。浅灰码、彩色底上的同色码、屏幕反光,都会降低黑白差。
  5. 图里根本没有码,或主体不是二维码。 本次这张文字图没有被误报成内容,返回的同样是「未识别到二维码」;表格截图、人像等其它图形会不会被误判,取决于图里有没有恰好像定位图案的结构,本文没有逐类测试。

反色是例外:黑白颠倒不影响识别,工具会同时尝试正常和反色两种取色。

容量和纠错:码越密,越挑图片质量

按 ISO/IEC 18004,二维码有 40 个版本,版本 1 是 21×21 模块,每升一版每边加 4 个模块,版本 40 是 177×177。纠错分 L、M、Q、H 四级,理论恢复能力约为 7%、15%、25%、30%。

容量上限(版本 40、纠错 L)大致是:

模式 最大容量
数字 7,089 位
字母数字 4,296 个字符
字节 2,953 字节
汉字 1,817 个字符

这就解释了一个常见现象:存网址的码通常很稀,容易识别;存一长串参数、签名或整段文本的码模块密集,同样打印尺寸下更难扫。纠错等级调高会占用更多空间,码也会更密——纠错不是「随便破损 30% 都能读」的保证,而是理论上的恢复能力,实际还取决于破损位置和拍摄质量。

解析结果怎么读才安全

二维码解析的价值,是在扫码之前先看内容。几个判断顺序:

  1. 先看协议。 https:// 开头的网址会走加密传输;http:// 明文传输,登录、支付类页面要更谨慎。
  2. 再看域名。 盯紧主域名拼写,别被 bt.cn.xxx.com 这类子域或形近字骗过去。
  3. 短链要还原。 解析结果如果是短链,先确认来源,或在浏览器里看跳转后的最终域名,再决定是否继续。
  4. 别把解析结果当安全证明。 工具只解码,不查毒、不判断网站是否钓鱼。内容看起来正常,也不代表目标站点可信。

页面写明解析在浏览器本地完成,不上传服务器。实测上传和解码过程中没有出现携带图片的上传请求。处理含账号、后台地址的二维码截图时,用完点「清空」即可。

工具怎么用

打开二维码解析,三种方式导入图片:拖拽到虚线框、点「点击选择」选文件,或直接按 Ctrl/⌘ + V 粘贴剪贴板里的图。页面标注支持 JPG、PNG、WEBP、GIF、BMP。

导入后会显示图片的尺寸、大小和格式,点「解码」出结果;结果框支持复制和清空,换图点「替换图片」,移除点「移除图片」。

要判断一个码是否值得扫,操作最少的一步是:先解析,看清域名,再决定。

常见问题

二维码解析会把图片上传到服务器吗?

这个工具页面写明「所有解析均在浏览器本地完成,不会上传到服务器」。实测在 12 次上传和解码过程中,页面只发出了统计上报请求,没有携带图片内容的上传请求。图片是在浏览器里用 Canvas 读像素再解码的,关掉页面后内存里的图片也随之释放。不过公共电脑上仍建议用完点「清空」或刷新页面。

黑白颠倒的二维码能解析吗?

能。实测把 400×400 的二维码整张反色(黑变白、白变黑)后上传,仍然解析出 https://www.bt.cn/。工具在解码时会同时尝试正常和反色两种取色方式,页面上没有单独的「反色」开关。

二维码被裁掉外面的白边,还能识别吗?

实测可以。把 400×400 的图裁到码区边界、去掉四周白边后(360×360),照样解析出原链接。标准里建议留 4 个模块宽的静区,是为了让扫码器更容易定位;清晰、完整的码即使静区被裁掉,解码器仍可能读出来,但留白边更稳。

二维码最多能存多少内容?

按 ISO/IEC 18004,二维码版本 1–40,最大是版本 40 的 177×177 模块;字节模式在纠错等级 L 下最多 2,953 字节,数字模式 7,089 位、字母数字模式 4,296 个字符、汉字模式 1,817 个字符。内容越多,模块越密,同样尺寸下每个模块占的像素越少,也越容易识别失败。

为什么手机能扫出来,在线解析却提示识别不到?

两边用的解码器和预处理不同。手机相机通常会连续对焦、多帧尝试,还会自动调整曝光;在线工具只拿到你上传的那一张静态图。实测 8px 模糊的图在线解析失败,3px 模糊仍可识别;缩到 24×24 再放大失败,48×48 再放大成功。换一张更清晰的原图,通常比反复点「解码」有用。

解析出来的链接会自动打开吗?

不会。工具只把二维码里的字符串显示在结果框里,是否打开由你自己决定。想先判断安全性,可以看链接的协议和域名:以 http:// 或 https:// 开头、域名拼写正确再访问;短链要先还原或确认来源,别在打开的页面里直接输入账号密码。

二维码解析二维码解码二维码识别防钓鱼在线工具宝塔拨测