安全中心
{"success":false,"code":"101-01-027","msg":"调用小程序API出现错误","token":null,"data":"错误代码:40125, 错误信息:invalid appsecret rid: 6770cbe3-17230db3-7e65e289,微信原始报文:{\"errcode\":40125,\"errmsg\":\"invalid appsecret rid: 6770cbe3-17230db3-7e65e289\"}","idList":null},appid和secret已经确定无误
您好: 对于 获取用户安全等级 getUserRiskRank( https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/safety-control-capability/getUserRiskRank.html ) 这个接口有以下问题 返回61010错误code is expired(用户未在近两小时访问小程序) 1. 使用场景受限 例子:我们有一些需要长期交付消费券进行秒杀,比如洗衣月卡/打车券等,秒杀时检测客户风险等级正常(0级或1级),但是后期客户消费券码时,无法检测风险等级(61010错误)或变成高风险,经排查发现刷单团伙用只能活不到一天的活号注册进行刷单,这种账号量大价格低廉被用来大量进行刷单及刷邀请活动,基本第二天微信账号就被封了 由于部分券码客户截图门店使用(离线情况下使用),因此在客户使用券码时我们无法再次检测该用户的风险等级,造成较大损失 建议:每一个openid首次查询1-2次风险等级,或每1-2日内首次查询,无需2小时进入 受到此类情况影响的场景还有: ①地推人员推广小程序,通过购买刷单来注册新用户,首次风险等级安全,但是第二天刷单的微信全被封了我们也无法检测 ②邀请活动中,用户通过购买完成任务获得奖励,也都是刷单团伙的号,首次风险等级安全,但是第二天刷单的微信全被封了我们也无法检测 ③行业内大量的小程序拉新/秒杀场景均会遇到此问题,首次检测风险等级账号发放了奖励,次日这个微信账号就被封了 2.无法查询存量账号风险等级 二、客户进入小程序后超2小时 这是个少数情况,被验证确实存在 当客户打开小程序,在一个页面停留超过2小时后,我们就无法检测到客户的风险等级了,这也会造成误判 建议:每一个openid首次查询1-2次风险等级,或每1-2日内首次查询,无需2小时进入 猜测官方设置这个限制是预防接口被大量频繁请求,实际完全可以收费或者进行请求频率限制来实现 也了解到APP的openid是没有这个限制的,随时可以查询风险等级,小程序希望可以修改或取消这个限制,否则给刷单集团留下一个口子 感谢!
感谢官方解答: 刚刚重新测试v1和v2版本图片-异步检测都没问题了. 我一开始用的是webp格式的图片,官方文档是不支持..实际多测试几个图片.webp格式其实也是支持的.建议还是跟官方文档来. 因为v1版本官方已经停止支持了,还是建议用v2版本的.1.0版本在2021年9月1日停止更新. 下面是v2版本的文档: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/sec-check/mediaCheckAsync.html 还有一点要注意,因为即使传一个错误的/或者不存在的文件URL地址,例如https://www.xxx.com/a.jpg,这种情况也是异步返回也是pass的. 这个是v2版本-异步图片检测 { "errcode": 0, "errmsg": "ok", "trace_id": "67690e1d-2304dd16-06f8638c" } 这个是v2版本异步服务器推送的内容-异常的内容 { "ToUserName": "gh_dfca41sdfsdfsf78a", "Encrypt": "zwI15aKaqAnXZKt\/8dY2sRR6l+CwkQ==...", "FromUserName": "o8Y875O5J_7RmilDY", "CreateTime": "1734938152", "MsgType": "event", "Event": "wxa_media_check", "appid": "wx7d12e7890e0", "trace_id": "67690e1d-2304dd16-06f8638c", "version": "2", "detail": { "strategy": "content_model", "errcode": "0", "suggest": "risky", "label": "20002", "prob": "90" }, "errcode": "0", "errmsg": "ok", "result": { "suggest": "risky", "label": "20002" } } 这个是v2版本异步图片的PHP代码,使用的是w7corp/easywechat的最新v6.16.0的版本.结果没问题. $media = $api->postJson('/wxa/media_check_async',[ 'media_url'=>$image_path, 'media_type'=>2, 'version'=>2, 'scene'=>2, 'openid'=>$openid, ]); $res = $media->toArray(); return json($res); ----------------------------------------------------------------------------------------- 下面内容是老版本的,可以不用看了O(∩_∩)O哈哈~ 下面是1.0版本的官方文档内容:我使用的同步/异步两种方式,测试都没问题.2024-12-23 https://developers.weixin.qq.com/miniprogram/dev/framework/security.imgSecCheck.html 结论: v1版本的同步和异步都完全正确识别出违规的图片... 后来连续测试多张图片,发现v1版本的图片检测,也有不准确的时候,准备10个违规图片,检测到9个违规,大多数违规都可以检测,可能有些擦边的很难检测的到. 下面是v1版本同步检测正常的内容 { "errcode": 0, "errmsg": "ok" } 下面是v1版本同步检测违规情况下的内容 { "errcode": 87014, "errmsg": "risky content rid: 6768f023-2c2404c6-07c994f5" } 下面是v1版本 异步,直接返回的内容. { "errcode": 0, "errmsg": "ok", "trace_id": "e2d6b8938611dd35784fedee00722084" } 下面是v1版本 异步,服务器返回的异常情况,这个是检测异常的服务器推送.注意 isrisky 的值:检测结果,0:暂未检测到风险,1:风险 { "ToUserName": "gh_dfca478a", "Encrypt": "xaokWRwhvBKMPdUOagUqbGV\/IZlkfVq5ISJ\/MEPZkX4=", "FromUserName": "o8Y875O5J_7Hhqe3va8Y", "CreateTime": "1734931816", "MsgType": "event", "Event": "wxa_media_check", "isrisky": "1", "extra_info_json": "", "appid": "wx7d12e78f14bd90e0", "trace_id": "e2d6b8938611dd35784fedee00722084", "status_code": "0" } 注意: v1版本同步图片检测的路径是本地文件路径,所以可以在本地测试 v1版本异步检测路径是一个服务器的URL地址...所以无法本地测试,例如https://www.xxx.com/a.jpg v1版本同步或者异步检测图片,即使图片不存在或者乱传一个地址或文件名,也是返回ok的... --------------------------------------------------------------------------------------------------------------- 下面是v2版本异步的问题:(v2的异步问题,我暂时还没解决^_^有解决的大佬告知下,感谢) 首先测试了v2文本内容安全msg_sec_check是正确的,违规内容也能检测出. 然后测试了v2图片内容安全media_check_async无论发送什么违规图片,服务器的推送内容都返回pass. 后来我测试改变media_type值为 3 竟然也没有报错,但是为 4 就报错 "errcode": 40004, "errmsg": "invalid media type rid: 6768d331-03027e9c-152d5418", media_url的值的地址是腾讯云上的图片,我放浏览器中是可以打开的一个图片url地址. v2版我随便输入一个不存在的media_url地址,竟然也提示ok { "errcode": 0, "errmsg": "ok", "trace_id": "6768d52f-44f54e1c-5a63211c" }. 下面是v2异步服务器推送过来的内容,其实这个图片肯定是违规的.测试了多个违规的图片,全部都pass,关键是哪怕是不存在的图片也显示pass "trace_id": "6768d52f-44f54e1c-5a63211c", "version": "2", "detail": { "strategy": "content_model", "errcode": "0", "suggest": "pass", "label": "100", "prob": "90" }, "errcode": "0", "errmsg": "ok", "result": { "suggest": "pass", "label": "100" }
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/sec-center/sec-check/mediaCheckAsync.html,这个接口支持视频吗,从文档上来看似乎支持图片和音频
接口方法https://api.weixin.qq.com/wxa/msg_sec_check?access_token=ACCESS_TOKEN
文本内容安全识别接口 1.除了调用频率限制(单个appId调用上限为 4000次/分钟 2000000次/天) 、用户需要两小时内使用过小程序 这两种限制外是否还有别的限制条件(例如是否收费、哪些类目的小程序可以使用、必须依托小程序原生环境吗) 2.四种场景对于 “海洛因” 关键字的检测结果为啥不一致 场景值为1-risky 2-pass 3-pass 4-pass 针对于用户资料(例如地址等)信息 推荐使用哪种场景值
{"errcode":47001,"errmsg":"data format error rid: 675f9249-23fe8788-160d406b"} 。有比较好用的示例代码吗?或者这个rid可以从哪里看到更详细的报错信息么
【你是大佬,点进去看看我的问题吧,你一看就是很会】我在小程序中获取照片并转换Base64(可以通过工具正常转换成选择图片),再提交到云函数,在其中调用: const result = await cloud.openapi.security.imgSecCheck({ media: { contentType: event.fileName?.toLowerCase().endsWith('.png') ? 'image/png' : 'image/jpeg', value: buffer } }); 权限也声明了: { "permissions": { "openapi": [ "security.imgSecCheck", "security.msgSecCheck", "security.mediaCheckAsync" ] } } 但是最终经过重复测试发现无论提交什么图片都返回通过(包括涉黄图,经过测试发现照样返回通过)。 官方文档也没说这个方法被抛弃,说的正常可用。不知道是我的方式错还是咋的。我的云函数是: const cloud = require('wx-server-sdk'); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); exports.main = async (event, context) => { try { // Check if the file data is provided if (!event.file) { console.log('No image data received'); return { code: 400, msg: '未接收到图片数据' }; } // Convert base64 file to buffer const buffer = Buffer.from(event.file, 'base64'); console.log('Buffer length:', buffer .length); // Log the buffer length to check if the image data is correctly converted // Check if the image data is empty if (buffer.length === 0) { console.log('Image data is empty'); return { code: 400, msg: '图片数据为空' }; } // Check file size (limit to 2MB) if (buffer.length > 1024 * 1024 * 2) { // 2MB limit console.log('Image size exceeds 2MB:', buffer.length); // Log the size of the image return { code: 400, msg: '图片大小超过限制' }; } // Perform security check try { const result = await cloud.openapi.security.imgSecCheck({ media: { contentType: event.fileName?.toLowerCase().endsWith('.png') ? 'image/png' : 'image/jpeg', value: buffer } }); // Log the security check response for debugging console.log('Security check response:', JSON.stringify(result)); if (result.errCode === 0) { return { code: 200, msg: '检测通过' }; } else { console.log('Security check failed:', result); return { code: 500, msg: '图片检测未通过', data: result }; } } catch (secError) { console.error('Security check error:', secError); // Special handling for different error codes if (secError.errCode === 87014) { console.log('Image content violation detected'); return { code: 500, msg: '图片内容违规' }; } else if (secError.errCode === -604102) { console.log('Image format error detected'); return { code: 500, msg: '图片格式错误' }; } console.log('Unknown security check error:', secError); return { code: 500, msg: '图片检测失败', data: secError }; } } catch (err) { console.error('Fatal error:', err); return { code: 502, msg: '系统错误', error: err.message }; } }; 我希望使用相关的用户给个反馈,因为比较紧急。 再说一遍:小程序内选完图片后转成的base64内容绝对没有问题,可以正常转换成图片。
前一分钟看对存在问题的图片和正常图片都可以正常检测的,什么也没有修改,真的就过了一会儿,就突然不返回result了?过去了十几分钟了,也没有结果返回呢? 如下图: [图片]
请问微信小店 appsecret是否会自动重置或过期
请问能不能图片在没有审核前先显示,等内容安全检测结果来了之后,再在后台处理,让违规的图片不让出现呢?
我的小程序在开发阶段,因为是博客类的,所以对用户发布的图文数据进行安全检测,文本识别是没有问题的,图像的我能正常获得trace_id和result结果,我也正常将他们入库了,可今天我做测试的时候,发现发了两张肯定不合格的图片,结果我发现居然检测结果是pass,请问该怎么办?其中一个traceid: "6750720f-48f618ad-368b45de"
trace_id:67430522-2cf44be2-19de0ea9
await cloud.openapi.security.mediaCheckAsync({ mediaUrl: event.mediaUrl, mediaType: 2, version: 2, openid: wxContext.OPENID, scene: 4 啥也检测不出来,一大推黄色,都pass,什么情况,有知道的吗?
exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const openid = wxContext.OPENID; var trace_id = event.trace_id; console.log("event",event); if (event.result.suggest == 'pass') { const com = cloud.database().command; cloud.database().collection('tupianshs').where({ tupians: com.all([trace_id]) }).get().then(res=>{ console.log(res,"tupianshsres") 。。。。。。。。。 例子 。。。。目前有两个图片审核结果回来了。。。。函数调用了到了,两次,。。 审核完后, 两个都是pass, console.log("event",event); 两个都可以 console.log(res,"tupianshsres") 这里,只有一个可以。。。 怎么搞?
官方的msgSecCheck检测能力太弱,很多明显的违禁词都检测不出来,(比如台湾共和国,支持台独,等等这种,拉的一批)。所以我想自己的服务器提供内容检测接口,不使用官方的接口。这样会被判违规吗?
1.这是图片内容安全监测的云函数[图片] 2.这里设置了消息推送[图片] 3.这个是消息推送对应的云函数 [图片] 现状:图片一直返回pass 求助:请问大佬们 这样写对吗?应该怎么改
通过网址获取不了的?
[图片][图片]
微信小程序审核的时候被拒,说发送图片或者文字存在内容安全风险,需要进行内容安全验证时,请尽快完善内容机制。, 先获取access token,然后再用access token + 验证API来验证内容的好坏。 器接入微信验证API有两种方式来做 第一种是 小程序把内容上传到后台,后台获取access token之后再用验证API。 第二种方式是,小程序先从后台获取access token,然后小程序来用access token 调用验证的API。 第一种方式试过了,是肯定可以的。 但第二种方式用起来得到了 600002的错误,说发送的域名不在审核的域名之下。 是不是第二种方式不能做
你好,秘钥错误