写代码爬取了某 Hub 资源,只为撸这个鉴黄平台!

黄色已经是我们所不容然而却防不胜防的,尤其是对于做内容的工具和平台,所以花了30分钟搭建了一个鉴黄平台,分享给大家。



数据准备



找了 N 多资源都不能解决问题,于是怒爬某 Bub资料,备用准备验证鉴黄效果。



账号准备



本文使用的是 UCloud 提供的 UAI-Censor,目前他支持图片,暴恐、涉政会陆续上线。他提供了每日2000张免费调用额度,所以无论对于测试还是小众的工具足够了。



1. 使用如下链接注册账号



https://urlify.cn/UNjURr



2. 创建 UAI-Censor 应用



获得应用 ID 进行鉴黄 API 调用的时候使用,注册成功以后进入控制台,搜索 UAI,然后点击 AI 内容审核





点击创建应用,输入自定义的应用名称,点击确定





点击确定以后会显示成功的弹框,高亮部分就是你的应用ID,留着备用





3. 获取公钥、私钥,应用ID



获取了,但是不能所有人都操作吧?所有需要去注册一个公钥和私钥,这样只有你自己可以使用。点击进入如下链接https://console.ucloud.cn/uapi/apikey点击显示即可查看公钥私钥了





到这里就是万事具备只欠东风



4. 编码



在编码之前我们可以手工调用一下 API 看下返回结果





如图所示,我们输入公钥、私钥和应用ID以后,点击验证会返回一堆的 JSON 其实我们关心的就是 Result 里面的 Porn 的 Suggestion,pass-放行, forbid-封禁, check-人工审核,那么上面这个测试就是 pass 放行了,等下,你居然不相信是吗?这时候某 Hub 的资源就派上用场了,来一张。





那我们直接编码吧,代码也是非常的简单,其中uaicensorPublicKey 和 uaicensorPrivateKey 是你自己的,这里就不显示了,因为使用的是 SpringBoot 项目,RestTemplate 用起来也是非常简单。



/**
     * @param imageUrl
     * @return pass-放行, forbid-封禁, check-人工审核
     * @throws Exception
     */
    public String check(String imageUrl) {
        String ucloudUrl = "http://api.uai.ucloud.cn/v1/image/scan";
        String appId = "uaicensor-rjmvogpx";
        String uaicensorPublicKey = null;
        String uaicensorPrivateKey = null;
        
        //图片绝对路径
        RestTemplate rest = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        /**
         * 生成signature,首字母排序
         */
        String timestamp = System.currentTimeMillis() + "";
        SortedMap packageParams = new TreeMap<>();
        packageParams.put("PublicKey", uaicensorPublicKey);
        packageParams.put("ResourceId", appId);
        packageParams.put("Timestamp", timestamp);
        packageParams.put("Url", imageUrl);
        String signature = null;
        try {
            signature = UCloudUtil.createSign(packageParams, uaicensorPrivateKey);
        } catch (Exception e) {
            return null;
        }
        /**
         * 参数
         */
        MultiValueMap param = new LinkedMultiValueMap<>();
        param.add("Scenes", "porn");
        param.add("Method", "url");
        param.add("Url", imageUrl);
        /**
         * headers 参数
         */
        headers.setContentType(MediaType.parseMediaType("multipart/form-data; charset=UTF-8"));
        headers.set("PublicKey", uaicensorPublicKey);
        headers.set("Signature", signature);
        headers.set("ResourceId", appId);
        headers.set("Timestamp", timestamp);
        HttpEntity<multivaluemap> httpEntity = new HttpEntity<>(param, headers);
        ResponseEntity responseEntity = rest.exchange(ucloudUrl, HttpMethod.POST, httpEntity, String.class);
        String body = responseEntity.getBody();
        JSONObject jsonObject = JSON.parseObject(body);
        if (jsonObject.getInteger("RetCode") == 0) {
            String res = jsonObject.getJSONObject("Result").getJSONObject("Porn").getString("Suggestion");
            return res;
        }
        return null;
    }

是不是非常简单?那么开始你的探索之旅吧!来源:码匠笔记

 

整理了一波之前发布的资源,无套路领取!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一段使用RT-Thread连接阿里云平台IoT Hub的示例代码: ```c #include <rtthread.h> #include <mqtt.h> #define MQTT_CLIENTID "example-client" #define MQTT_USERNAME "your-username" #define MQTT_PASSWORD "your-password" #define MQTT_TOPIC "/a1yourproductkey/yourdevicename/user/update" #define MQTT_PAYLOAD "{\"test\": 123}" static rt_mqtt_client_t mqtt_client; static void mqtt_event_handler(rt_mqtt_client_t *client, rt_mqtt_event_e event, void *user_data) { switch (event) { case RT_MQTT_EVENT_CONNECTED: rt_kprintf("MQTT client connected\n"); rt_mqtt_publish(mqtt_client, MQTT_TOPIC, MQTT_PAYLOAD, strlen(MQTT_PAYLOAD), 0, 0); break; case RT_MQTT_EVENT_DISCONNECTED: rt_kprintf("MQTT client disconnected\n"); break; default: break; } } void mqtt_thread_entry(void *parameter) { rt_mqtt_client_t *client = &mqtt_client; rt_mqtt_topic_qos_t qos = RT_MQTT_QOS_LEVEL_0; rt_mqtt_connect_option_t connect_option = RT_MQTT_CONNECT_OPTION_DEFAULT; rt_mqtt_publish_option_t publish_option = RT_MQTT_PUBLISH_OPTION_DEFAULT; connect_option.clean_session = 1; connect_option.username = MQTT_USERNAME; connect_option.password = MQTT_PASSWORD; rt_mqtt_init(client, "mqtt://yourproductkey.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883", mqtt_event_handler, RT_NULL); rt_mqtt_connect(client, &connect_option); rt_mqtt_subscribe(client, MQTT_TOPIC, qos); rt_mqtt_publish(client, MQTT_TOPIC, MQTT_PAYLOAD, strlen(MQTT_PAYLOAD), 0, 0); while (1) { rt_mqtt_yield(client, 1000); } } int mqtt_sample(void) { rt_thread_t thread = RT_NULL; thread = rt_thread_create("mqtt", mqtt_thread_entry, RT_NULL, 2048, 25, 10); if (thread != RT_NULL) { rt_thread_startup(thread); } return 0; } ``` 该代码通过MQTT协议连接到阿里云平台IoT Hub,并向定的主题发布一条消息。需要注意的是,您需要将代码中的MQTT_CLIENTID、MQTT_USERNAME、MQTT_PASSWORD、MQTT_TOPIC和MQTT_PAYLOAD等参数替换为您自己的实际值。 其中,mqtt_thread_entry是一个线程函数,用于创建MQTT客户端并连接到阿里云平台IoT Hub。mqtt_event_handler是一个回调函数,用于处理MQTT客户端的事件,例如连接成功、断开连接等。mqtt_sample是一个示例函数,用于启动mqtt_thread_entry线程。 您可以将该代码添加到您的RT-Thread项目中,并根据实际需要进行调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值