微信小程序内容校验

2019-10-09  本文已影响0人  空口言_1d2e

微信官方文档链接

    if platform == "微信小程序":
        access_token = get_access_token(app_id, secret)
        if access_token == None:
            return jsonify({
                'code': 500,
                'warning': "access_token获取失败"
            })
        data = '{"content": "' + feedback_content + '"}'
        headers = {'Content-Type': 'application/json'}
        url = 'https://api.weixin.qq.com/wxa/msg_sec_check?access_token=' + access_token
        response = requests.post(url, data=data.encode('utf-8'), headers=headers)
        current_app.logger.error("微信小程序内容安全检测{}".format(response.text))
        if json.loads(response.text)["errcode"] == 87014:
            return jsonify({
                'code': 87014,
                'warning': "内容含有违法违规内容"
            })

易犯错误:
使用post方法的json参数,会使请求中的content为unicode编码。
而通过手动拼接字符串和设置headers的方式,方可保证request的body是正确的。
另外使用json.dumps也不行哦。一定要拼接字符串。

新增

image.png
image.png

图片校验

    quality = 100
    ppi = 300
    for i in files:
        FormData = base64.b64decode(i[0])
        pic_name = i[1]

        bar_buffer = io.BytesIO(FormData)
        im = Image.open(bar_buffer)
        if im.size[0] > 3000 or im.size[1] > 3000:
            im = im.resize((int(im.size[0] * 0.3),
                            int(im.size[1] * 0.3)),
                           resample=Image.ANTIALIAS)

        elif im.size[0] > 2000 or im.size[1] > 2000:
            im = im.resize((int(im.size[0] * 0.5),
                            int(im.size[1] * 0.5)),
                           resample=Image.ANTIALIAS)

        elif im.size[0] > 1000 or im.size[1] > 1000:
            im = im.resize((int(im.size[0] * 0.7),
                            int(im.size[1] * 0.7)),
                           resample=Image.ANTIALIAS)
        bar_buffer_one = io.BytesIO()
        im.save(
            bar_buffer_one,
            dpi=(ppi, ppi),
            quality=quality,
            format='JPEG'
        )
        the_bytes = bar_buffer_one.getvalue()
        f_size = sys.getsizeof(the_bytes)
        # current_app.logger.error("微信小程序图片首次缩放占用内存{}".format(f_size))
        if 1024 * 1024:
            while f_size > 1024 * 1024:
                quality -= 3
                print(quality)
                buffer = io.BytesIO()
                im.save(
                    buffer,
                    dpi=(
                        ppi,
                        ppi),
                    quality=quality,
                    format='JPEG')
                the_bytes = buffer.getvalue()
                f_size_one = sys.getsizeof(the_bytes)
                # current_app.logger.error("微信小程序图片二次缩放占用内存{}".format(f_size_one))
                print(f_size_one)

        m = MultipartEncoder(
            fields={
                'media': (pic_name, the_bytes, "application/octet-stream")
            })
        url_img = 'https://api.weixin.qq.com/wxa/img_sec_check?access_token=' + access_token
        r = requests.post(url_img, data=m, headers={'Content-Type': m.content_type})
        # current_app.logger.error("微信小程序图片安全检测{}".format(r.text))
        if json.loads(r.text)["errcode"] == 87014:
            return jsonify({
                'code': 87014,
                'warning': "图片含有违法违规内容"
            })
上一篇下一篇

猜你喜欢

热点阅读