陌陌头像留微信号二维码不被检测的方法,工具一键生成干扰码,屏蔽系统检测

发布时间 2023-11-22 13:32:20作者: 花花java大师

正常情况下我们在陌陌头像留二维码会被系统检测到的,因为它识别到了这是二维码是,就算不封号对账号权重也有营销,但是一些人想在陌陌做一些产品,比如足浴、保健品之类的,想在陌陌引流,那么留二维码头像不封号的实现就非常重要了,我制作的这个工具可以生成干扰码,就是二维码生成干扰码导致系统识别不到是二维码,然后发动态用户可以看到时二维码,但是系统是检测不到,就是在图层最上面加入很多干扰码,不会正常影响图片的浏览,仅供学习代码,仅供学习代码,还有一个接口是调用了API实现二维码融合到图片里面用户看起来是一个图片,但是可以扫码识别出二维码,第三个功能是制作双图,正常发布用户看到的是一个风景图,但是点击后显示的是二维码【灰色】,通过“codeA”、“codeB”、“codeC”三种方式生成。

软件截图:

 

 

演示效果图:【不影响曝光率、仅供学习】

 

 

程序集代码【生成干扰二维码、双图二维码、二维码融入风景图】

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

.版本 2

.支持库 edroptarget

.支持库 spec

.程序集 窗口程序集_启动窗口, , ,

.程序集变量 编码信息, 编码信息, , "107"

.子程序 __启动窗口_创建完毕

编码表赋值 ()

拖放对象1.注册拖放控件 (取窗口句柄 ())

.子程序 _生成条码_被单击, , , 抄作业的,原网址:https://bbs.125.la/forum.php?mod=viewthread&tid=14572483&page=1&ordertype=1#pid18790989

画板1.清除 (, , , )

.判断开始 (单选框1.选中)

画条码 (画板1, 编辑框1.内容, 0)

.判断 (单选框2.选中)

画条码 (画板1, 编辑框1.内容, 1)

.默认

画条码 (画板1, 编辑框1.内容, 2)

.判断结束

.子程序 编码表赋值

.局部变量 temp, 文本型, , "0"

.局部变量 i, 整数型

.局部变量 j, 整数型

temp = { “0”, “ ”, “ ”, “00”, “212222”, “1”, “!”, “!”, “01”, “222122”, “2”, “\”, “\”, “02”, “222221”, “3”, “#”, “#”, “03”, “121223”, “4”, “$”, “$”, “04”, “121322”, “5”, “%”, “%”, “05”, “131222”, “6”, “&”, “&”, “06”, “122213”, “7”, “'”, “'”, “07”, “122312”, “8”, “(”, “(”, “08”, “132212”, “9”, “)”, “)”, “09”, “221213”, “10”, “*”, “*”, “10”, “221312”, “11”, “+”, “+”, “11”, “231212”, “12”, “,”, “,”, “12”, “112232”, “13”, “-”, “-”, “13”, “122132”, “14”, “.”, “.”, “14”, “122231”, “15”, “/”, “/”, “15”, “113222”, “16”, “0”, “0”, “16”, “123122”, “17”, “1”, “1”, “17”, “123221”, “18”, “2”, “2”, “18”, “223211”, “19”, “3”, “3”, “19”, “221132”, “20”, “4”, “4”, “20”, “221231”, “21”, “5”, “5”, “21”, “213212”, “22”, “6”, “6”, “22”, “223112”, “23”, “7”, “7”, “23”, “312131”, “24”, “8”, “8”, “24”, “311222”, “25”, “9”, “9”, “25”, “321122”, “26”, “:”, “:”, “26”, “321221”, “27”, “;”, “;”, “27”, “312212”, “28”, “<”, “<”, “28”, “322112”, “29”, “=”, “=”, “29”, “322211”, “30”, “>”, “>”, “30”, “212123”, “31”, “?”, “?”, “31”, “212321”, “32”, “@”, “@”, “32”, “232121”, “33”, “A”, “A”, “33”, “111323”, “34”, “B”, “B”, “34”, “131123”, “35”, “C”, “C”, “35”, “131321”, “36”, “D”, “D”, “36”, “112313”, “37”, “E”, “E”, “37”, “132113”, “38”, “F”, “F”, “38”, “132311”, “39”, “G”, “G”, “39”, “211313”, “40”, “H”, “H”, “40”, “231113”, “41”, “I”, “I”, “41”, “231311”, “42”, “J”, “J”, “42”, “112133”, “43”, “K”, “K”, “43”, “112331”, “44”, “L”, “L”, “44”, “132131”, “45”, “M”, “M”, “45”, “113123”, “46”, “N”, “N”, “46”, “113321”, “47”, “O”, “O”, “47”, “133121”, “48”, “P”, “P”, “48”, “313121”, “49”, “Q”, “Q”, “49”, “211331”, “50”, “R”, “R”, “50”, “231131”, “51”, “S”, “S”, “51”, “213113”, “52”, “T”, “T”, “52”, “213311”, “53”, “U”, “U”, “53”, “213131”, “54”, “V”, “V”, “54”, “311123”, “55”, “W”, “W”, “55”, “311321”, “56”, “X”, “X”, “56”, “331121”, “57”, “Y”, “Y”, “57”, “312113”, “58”, “Z”, “Z”, “58”, “312311”, “59”, “[”, “[”, “59”, “332111”, “60”, “\\”, “\\”, “60”, “314111”, “61”, “]”, “]”, “61”, “221411”, “62”, “^”, “^”, “62”, “431111”, “63”, “_”, “_”, “63”, “111224”, “64”, “NUL”, “`”, “64”, “111422”, “65”, “SOH”, “a”, “65”, “121124”, “66”, “STX”, “b”, “66”, “121421”, “67”, “ETX”, “c”, “67”, “141122”, “68”, “EOT”, “d”, “68”, “141221”, “69”, “ENQ”, “e”, “69”, “112214”, “70”, “ACK”, “f”, “70”, “112412”, “71”, “BEL”, “g”, “71”, “122114”, “72”, “BS”, “h”, “72”, “122411”, “73”, “HT”, “i”, “73”, “142112”, “74”, “LF”, “j”, “74”, “142211”, “75”, “VT”, “k”, “75”, “241211”, “76”, “FF”, “I”, “76”, “221114”, “77”, “CR”, “m”, “77”, “413111”, “78”, “SO”, “n”, “78”, “241112”, “79”, “SI”, “o”, “79”, “134111”, “80”, “DLE”, “p”, “80”, “111242”, “81”, “DC1”, “q”, “81”, “121142”, “82”, “DC2”, “r”, “82”, “121241”, “83”, “DC3”, “s”, “83”, “114212”, “84”, “DC4”, “t”, “84”, “124112”, “85”, “NAK”, “u”, “85”, “124211”, “86”, “SYN”, “v”, “86”, “411212”, “87”, “ETB”, “w”, “87”, “421112”, “88”, “CAN”, “x”, “88”, “421211”, “89”, “EM”, “y”, “89”, “212141”, “90”, “SUB”, “z”, “90”, “214121”, “91”, “ESC”, “{”, “91”, “412121”, “92”, “FS”, “|”, “92”, “111143”, “93”, “GS”, “}”, “93”, “111341”, “94”, “RS”, “~”, “94”, “131141”, “95”, “US”, “DEL”, “95”, “114113”, “96”, “FNC3”, “FNC3”, “96”, “114311”, “97”, “FNC2”, “FNC2”, “97”, “411113”, “98”, “SHIFT”, “SHIFT”, “98”, “411311”, “99”, “CODEC”, “CODEC”, “99”, “113141”, “100”, “CODEB”, “FNC4”, “CODEB”, “114131”, “101”, “FNC4”, “CODEA”, “CODEA”, “311141”, “102”, “FNC1”, “FNC1”, “FNC1”, “411131”, “103”, “StartA”, “StartA”, “StartA”, “211412”, “104”, “StartB”, “StartB”, “StartB”, “211214”, “105”, “StartC”, “StartC”, “StartC”, “211232”, “106”, “Stop”, “Stop”, “Stop”, “2331112” }

.计次循环首 (107, i) ' 编码表赋值

编码信息 [i].序号 = temp [(i - 1) × 5 + 1]

编码信息 [i].codeA含义 = temp [(i - 1) × 5 + 2]

编码信息 [i].codeB含义 = temp [(i - 1) × 5 + 3]

编码信息 [i].codeC含义 = temp [(i - 1) × 5 + 4]

编码信息 [i].编码 = temp [(i - 1) × 5 + 5]

.计次循环尾 ()

.子程序 画条码, 逻辑型, 公开, 画出一个条形码,成功返回真,失败返回假

.参数 画板, 画板, , 需要画条码的画板

.参数 条码文本, 文本型, , 需要画出条码的文本

.参数 条码编码格式, 整数型, 可空, 可空。接受传入3种条码编码格式,传入时请填相应序号:0-“code128A编码”、1-“code128B编码”、2-“code128C编码”。为空时默认为code128A编码;除了这三个数以外的数值均默认为0

.参数 条码起始横坐标, 整数型, 可空, 可空。该数值指定条码相对于画板左上角距离。为空时默认为0。

.参数 条码起始纵坐标, 整数型, 可空, 可空。该数值指定条码相对于画板左上角距离。为空时默认为0。

.参数 条码终止横坐标, 整数型, 可空, 可空。该数值指定条码相对于画板左上角距离。为空时默认为画板长度。

.参数 条码终止纵坐标, 整数型, 可空, 可空。该数值指定条码相对于画板左上角距离。为空时默认为画板高度。

.参数 错误信息, 文本型, 可空, 可空。用于接收出错时的错误信息

.局部变量 格式化条码, 文本型

.局部变量 i, 整数型

.局部变量 条码长度, 整数型

.局部变量 宽度系数, 整数型

条码文本 = 到半角 (条码文本) ' 条形码不支持全角符号

' 检查输入合规性

.计次循环首 (取文本长度 (条码文本), i)

.如果真 (取代码 (条码文本, i) < 0)

错误信息 = “条码不支持中文”

画板.写文本行 (“条码不支持中文”)

返回 (假)

.如果真结束

.计次循环尾 ()

.判断开始 (条码编码格式 = 2) ' code128C合规性

.如果真 (到文本 (到数值 (条码文本)) ≠ 条码文本)

错误信息 = “code128C编码格式的文本必须为纯数字”

画板.写文本行 (“code128C编码格式的文本必须为纯数字”)

返回 (假)

.如果真结束

.如果真 (取文本长度 (条码文本) % 2 ≠ 0)

错误信息 = “code128C编码格式的文本长度必须是偶数”

画板.写文本行 (“code128C编码格式的文本长度必须是偶数”)

返回 (假)

.如果真结束

.判断 (条码编码格式 = 1) ' code128B合规性

' acii码 + 32 即为条码编码

' code128B有效编码范围为acii码32-126,对应条码编码0-94

.计次循环首 (取文本长度 (条码文本), i)

.如果真 (取代码 (取文本中间 (条码文本, i, 1), ) < 32 或 取代码 (取文本中间 (条码文本, i, 1), ) > 126)

错误信息 = “所输入字符超出code128B编码范围”

画板.写文本行 (“所输入字符超出code128B编码范围”)

返回 (假)

.如果真结束

.计次循环尾 ()

.判断 (条码编码格式 = 0) ' code128A合规性

' acii码 + 32 即为条码编码

' code128A有效编码范围为acii码32-95,对应条码编码0-63

.计次循环首 (取文本长度 (条码文本), i)

.如果真 (取代码 (取文本中间 (条码文本, i, 1), ) < 32 或 取代码 (取文本中间 (条码文本, i, 1), ) > 95)

错误信息 = “所输入字符超出code128A编码范围”

画板.写文本行 (“所输入字符超出code128A编码范围”)

返回 (假)

.如果真结束

.计次循环尾 ()

.默认

.判断结束

' 默认值赋值

.如果真 (条码终止横坐标 = 0)

条码终止横坐标 = 画板.宽度

.如果真结束

.如果真 (条码终止纵坐标 = 0)

条码终止纵坐标 = 画板.高度

.如果真结束

' 画板初始化

画板.刷子颜色 = #黑色

' 取得条码

格式化条码 = 取得格式化条码 (条码文本, 条码编码格式)

调试输出 (格式化条码)

条码长度 = 取文本长度 (格式化条码)

宽度系数 = (画板.宽度 - 条码起始横坐标 - (画板.宽度 - 条码终止横坐标)) ÷ 条码长度

.如果真 (宽度系数 ≤ 0)

错误信息 = “画板宽度小于条码最小需要宽度”

画板.写文本行 (“画板宽度小于条码最小需要宽度”)

返回 (假)

.如果真结束

' 画条码

.计次循环首 (取文本长度 (格式化条码), i)

.如果真 (取文本中间 (格式化条码, i, 1) = “b”)

画板.画矩形 ((i - 1) × 宽度系数 + 条码起始横坐标, 条码起始纵坐标, i × 宽度系数 + 条码起始横坐标, 条码终止纵坐标)

画板.填充矩形 ((i - 1) × 宽度系数 + 条码起始横坐标, 条码起始纵坐标, i × 宽度系数 + 条码起始横坐标, 条码终止纵坐标)

.如果真结束

.计次循环尾 ()

返回 (真)

.子程序 取得格式化条码, 文本型

.参数 欲编码文本, 文本型

.参数 条码编码格式, 整数型

.局部变量 内容编码, 文本型

.局部变量 开始码, 文本型

.局部变量 结束码, 文本型

.局部变量 校验码, 整数型

.局部变量 校验码编码, 文本型

.局部变量 len, 整数型

.局部变量 i, 整数型

.局部变量 完整条码编码, 文本型

.局部变量 格式化条码, 文本型

.局部变量 编码位数, 整数型

.局部变量 编码信息序号, 整数型

.判断开始 (条码编码格式 = 1) ' codeB

开始码 = “211214”

结束码 = “2331112”

校验码 = 104

编码位数 = 1

.判断 (条码编码格式 = 2) ' codeC

开始码 = “211232”

结束码 = “2331112”

校验码 = 105

编码位数 = 2 ' codeC编码以两个数为一组

.默认

' codeA

开始码 = “211412”

结束码 = “2331112”

校验码 = 103 ' codeA的开始码

编码位数 = 1

.判断结束

len = 取文本长度 (欲编码文本)

.计次循环首 (len ÷ 编码位数, i)

编码信息序号 = 获取编码信息序号 (取文本中间 (欲编码文本, (i - 1) × 编码位数 + 1, 编码位数), 条码编码格式)

.如果真 (编码信息序号 ≠ 0)

内容编码 = 内容编码 + 编码信息 [编码信息序号].编码

校验码 = 校验码 + i × 到数值 (编码信息 [编码信息序号].序号)

.如果真结束

.计次循环尾 ()

校验码 = 校验码 % 103

校验码编码 = 编码信息 [校验码 + 1].编码

完整条码编码 = 开始码 + 内容编码 + 校验码编码 + 结束码

' 将数字编码格式转换为bw格式

.计次循环首 (取文本长度 (完整条码编码), i)

.计次循环首 (到数值 (取文本中间 (完整条码编码, i, 1)), )

.如果 (i % 2 = 1) ' 单数位为黑色,双数位为白色

格式化条码 = 格式化条码 + “b” ' 标记黑色black

.否则

格式化条码 = 格式化条码 + “w” ' 标记白色white

.如果结束

.计次循环尾 ()

.计次循环尾 ()

返回 (格式化条码)

.子程序 获取编码信息序号, 整数型

.参数 欲获取编码文本, 文本型

.参数 条码编码格式, 整数型

.局部变量 i, 整数型

.计次循环首 (取数组成员数 (编码信息), i)

.判断开始 (条码编码格式 = 0) ' codeA

.如果真 (编码信息 [i].codeA含义 = 欲获取编码文本)

返回 (i)

.如果真结束

.判断 (条码编码格式 = 1) ' codeB

.如果真 (编码信息 [i].codeB含义 = 欲获取编码文本)

返回 (i)

.如果真结束

.判断 (条码编码格式 = 2) ' codeC

.如果真 (编码信息 [i].codeC含义 = 欲获取编码文本)

返回 (i)

.如果真结束

.默认

.判断结束

.计次循环尾 ()

返回 (0)

.子程序 _导出条码_被单击

.局部变量 路径, 文本型

路径 = 取运行目录 () + “\” + “条形码” + 编辑框1.内容 + “.jpg”

写到文件 (路径, 画板1.取图片 (, ))

.子程序 _生成二维码_被单击, , , 抄的原网址:https://bbs.125.la/forum.php?mod=viewthread&tid=14626650&page=1&ordertype=1#pid19673549

图片框1.图片 = 创建二维码 (编辑框2.内容, “M”, 图片框1.宽度, 图片框1.高度, #白色, #黑色)

' 容错率等级:L(低 - 7%)、M(中 - 15%)、Q(中高 - 25%)、H(高 - 30%)

.子程序 _导出二维码_被单击, , ,

.局部变量 路径, 文本型

路径 = 取运行目录 () + “\” + “二维码” + 编辑框1.内容 + “.jpg”

写到文件 (路径, 图片框1.图片)

.子程序 _选择文件_被单击, , , 导入图片

.局部变量 str, 文本型

.局部变量 图片, 字节集

.局部变量 结果, 文本型

通用对话框1.初始目录 = 取运行目录 () ' 取特定目录 (3)

通用对话框1.过滤器 = “支持格式(*.jpg;*.jpeg;*.png;*.bmp;*.gif;*.pdf)|*.jpg;*.jpeg;*.png;*.bmp;*.gif;*.pdf|JPG图片(*.jpg)|*.jpg|jpeg位图文件(*.jpeg)|*.jpeg|PNG图片文件(*.png)|*.png|BMP图片文件(*.bmp)|*.png|GIP图片文件(*.gif)|*.gif|PDF文档文件(*.pdf)|*.pdf|”

.如果真 (通用对话框1.打开 () = 假)

返回 ()

.如果真结束

.如果真 (单选框4.选中 = 真)

POSTsmms (通用对话框1.文件名)

.如果真结束

.如果真 (单选框5.选中 = 真)

post草料 (通用对话框1.文件名)

.如果真结束

.子程序 _拖放对象1_得到文件, , , 导入图片

.参数 接收到的文件路径, 文本型

.如果真 (单选框4.选中 = 真)

POSTsmms (接收到的文件路径)

.如果真结束

.如果真 (单选框5.选中 = 真)

post草料 (接收到的文件路径)

.如果真结束

.子程序 post草料

.参数 路径, 文本型

.局部变量 str, 文本型

.局部变量 图片, 字节集

.局部变量 结果, 文本型

图片 = 子字节集替换 (到字节集 (#常量_Data), 到字节集 (“图片数据”), 读入文件 (路径), , )

str = 到文本 (网页_访问_对象 (“https://upload.api.cli.im/upload.php?kid=cliim”, 1, , , , #常量_Header, , , , 图片, , , , , , , , , ))

调试输出 (str)

' “{"status":"1","info":"ok","data":{"name":"11.jpg","path":"http:\/\/oss-cn-hangzhou.aliyuncs.com\/public-cli\/free\/6c0594e85d95e7d2ac710fd925785fef1625646575.jpg","filesize":"24.22 KB","filesize_byte":24797}}”

结果 = 文本_取出中间文本 (str, “path” + #引号 + “:” + #引号, #引号)

结果 = 文本_替换 (结果, , , , “\”, “”, , , , , , , , )

编辑框2.内容 = 结果

调试输出 (结果)

处理事件 ()

.如果真 (编辑框2.内容 ≠ “”)

_生成二维码_被单击 ()

.如果真结束

.子程序 POSTsmms

.参数 路径, 文本型

.局部变量 str, 文本型

.局部变量 图片, 字节集

.局部变量 结果, 文本型

图片 = 到字节集 (#常量2)

图片 = 子字节集替换 (图片, 到字节集 (“[tp]”), 读入文件 (路径), , )

str = 到文本 (网页_访问_对象 (“https://sm.ms/api/v2/upload”, 1, , , , “Content-Type: multipart/form-data; boundary=----WebKitFormBoundarypAIqI1RWBfPWiOKq”, , , , 图片, , , , , , , , , ))

调试输出 (str)

' {"success":true,"code":"success","message":"Upload success.","data":{"file_id":0,"width":167,"height":355,"filename":".png","storename":"UrCYQ4nLRs7wdu2.png","size":25728,"path":"\/2021\/07\/07\/UrCYQ4nLRs7wdu2.png","hash":"FPvQkKqueLYo8UB1DmbRgAOWri","url":"https:\/\/i.loli.net\/2021\/07\/07\/UrCYQ4nLRs7wdu2.png","delete":"https:\/\/sm.ms\/delete\/FPvQkKqueLYo8UB1DmbRgAOWri","page":"https:\/\/sm.ms\/image\/UrCYQ4nLRs7wdu2"},"RequestId":"CF641F94-B066-4EF7-BD09-D00E96B1BA4E"}

结果 = 文本_取出中间文本 (str, “url” + #引号 + “:” + #引号, #引号)

调试输出 (结果)

结果 = 文本_替换 (结果, , , , “\”, “”, , , , , , , , )

编辑框2.内容 = 结果

处理事件 ()

.如果真 (编辑框2.内容 ≠ “”)

_生成二维码_被单击 ()

.如果真结束

.子程序 _单选框4_被单击

单选框4.选中 = 真

单选框5.选中 = 假

.子程序 _单选框5_被单击

单选框4.选中 = 假

单选框5.选中 = 真

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