首页 文章详情

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

程序员书单 | 779 2020-09-08 12:14 0 0 0
UniSMS (合一短信)

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

# 数据准备


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

# 账号准备


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

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


https://urlify.cn/Bj2Y3y

2、创建 UAI-Censor 应用


获得应用 ID 进行鉴黄 API 调用的时候使用,注册成功以后进入控制台,搜索 UAI,然后点击 AI 内容审核f10f4213b6eb22b8c50c7ace5ef741a1.webp
点击创建应用,输入自定义的应用名称,点击确定efbb09efcc6d0cddfba8265a23399ede.webp
点击确定以后会显示成功的弹框,高亮部分就是你的应用ID,留着备用abdbf494daeca46a12215d993d5763cd.webp

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


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

点击显示即可查看公钥私钥了
92ea336e7831df81cb6ccf3b79acd9a0.webp
到这里就是万事具备只欠东风

4、编码


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

2ad2464823bf024a07d77647de59d37d.webp

如图所示,我们输入公钥、私钥和应用ID以后,点击验证会返回一堆的 JSON 其实我们关心的就是 Result 里面的 Porn 的 Suggestion,pass-放行, forbid-封禁, check-人工审核,那么上面这个测试就是 pass 放行了,等下,你居然不相信是吗?这时候某 Hub 的资源就派上用场了,来一张。
实在不忍直视啊,我就打码了,不过看到  forbid了吗
1389d4df8fcce58701916ebd1bc1f9f9.webp
那我们直接编码吧,代码也是非常的简单,其中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;    }
是不是非常简单?那么开始你的探索之旅吧?
来源:码匠笔记
— 【 THE END 】—本公众号全部博文已整理成一个目录,请在公众号里回复「m」获取!

3T技术资源大放送!包括但不限于:Java、C/C++,Linux,Python,大数据,人工智能等等。在公众号内回复「1024」,即可免费获取!!



87655bc1e157d25d6eac77d49642ea99.webp

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter