欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

程序员文章站 2022-03-06 11:06:03
...

点击上方“Java基基”,选择“设为星标”

做积极的人,而不是积极废人!

源码精品专栏

 

来源:码匠笔记

  • 数据准备

  • 账号准备

    • 1、使用如下链接注册账号

    • 2、创建 UAI-Censor 应用

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

    • 4、编码


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

数据准备

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

推荐一个艿艿写的 6000+ Star 的 SpringBoot + SpringCloud + Dubbo 教程的仓库:https://github.com/YunaiV/SpringBoot-Labs

账号准备

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

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

https://urlify.cn/Bj2Y3y

2、创建 UAI-Censor 应用

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

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

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

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

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

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

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

获取了,但是不能所有人都操作吧?所有需要去注册一个公钥和私钥,这样只有你自己可以使用。点击进入如下链接

https://console.ucloud.cn/uapi/apikey

点击显示即可查看公钥私钥了

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

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

4、编码

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

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

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

实在不忍直视啊,我就打码了,不过看到  forbid了吗

怒爬某破 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<Object, Object> 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<String, Object> 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<String, Object>> httpEntity = new HttpEntity<>(param, headers);
        ResponseEntity<String> 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;
    }

是不是非常简单?那么开始你的探索之旅吧?



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

已在知识星球更新源码解析如下:

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

怒爬某破 Hub 站资源,只为撸这个鉴黄平台!