突破技术封锁发布二维码的方法

现在有些网站出于安全或者利益考虑,已经不允许用户直接发布二维码图片了,比如淘宝、知乎等等,上传的二维码图片会被自动屏蔽或者替换为文本信息。

当然,非要发布还是有办法的。

首先我们要知道网站屏蔽二维码的技术原理,以及你的目标用户对二维码的使用方式(长按识别/摄像头扫描)。

屏蔽二维码的原理:

一般原理应该是,用户上传图片后,服务器上的二维码识别程序会对图片进行扫描,如果发现二维码就进行对应的操作。

应对方法:

应对的核心思想就是对二维码动手脚,让服务器上的程序检测不到二维码,但是又要能让摄像头扫描或者微信识别。

应对方法有多种,适用于不同的场景。

方法一:残损/美化/偏移错位,能力区分法

方法来源:https://www.zhihu.com/question/49202749

具体做法是,将二维码搞一点破坏,比如中间画一条横线,或者上下或左右部分偏移错位一点等等。

原理:由于微信等软件的二维码识别能力或者说容错能力大于某些服务器上的检测能力,所以,这样修改后的二维码既能逃过服务器检测和屏蔽,又能被其他软件正常识别。如果服务器的检测能力很强,那这种方法就不适合了。

适用场景:服务器的二维码检测能力不足

方法二:拼图组合法

大家都玩过拼图游戏吧,二维码也可以这样拆开拼合玩。

简单一点的做法,比如上下两部分分别拆成一张图片,排版的时候按顺序排放(最好紧贴)。如果你很闲,非要拆成很多份也是可以的。

原理:服务器上的检测程序基本都是以一张一张的图片来检测的,而上述图片中都不包含完整的二维码,所以也就检测不到了。对摄像头来说,二维码由多少张图片组成根本不关心,而微信长按识别二维码,它的原理不是从当前所按图片中寻找二维码,而是从屏幕当前显示的画面中寻找二维码,所以也能识别。

适用场景:可以上传多张图片并且可以紧挨排列

方法三:视觉暂留法

方法来源及介绍:https://haoyu.love/blog329.html

做法、原理摘要:利用显示器和摄像头的视觉暂留现象,让多张不完整的二维码快速轮播,从而形成一张能被摄像头识别的“完整的”二维码。原文作者使用的是 GIF图片,另外一种动态图片是 APNG,应该也可以。当然,如果用户上传的图片会被服务器二次处理,比如处理成 JPEG 或者 WEBP 等静态格式,那这种方法就不适合了。

适用场景:允许上传动态图片且不会被静态化处理,用户通过摄像头扫描使用

方法四:视频法

做法:把二维码图片做成视频格式,每帧既可以用完整的二维码,也可以像方法三那样每帧都是残缺的。

适用场景:允许上传视频(这个适用范围就更小了)

 

以上方法都只能应对一般程序的检测,如果是人工审核,那就统统失效了。