1. 首页>
  2. 腾讯云代理

[经验分享] 万象鉴黄 简单上手使用 python版

腾讯云 2017年05月10日 浏览779

腾讯云代理 腾讯云直播申请 游戏上云

摘要:

 最近,万众瞩目的 万象鉴黄系统终于上线了。 解决了很多站点被各种用户上传黄图却无力的尴尬局面。 相信很多人也在官方站点体验了一下。
                        jianhuang.png 




当然 如果还没体验过的同学 可以打开以下链接先感受下智能鉴黄工具的 效率。

               万象鉴黄体验


今天  我们主要来关注下 官网wiki给出的  文档.  

            万象优图黄图鉴别文档

wendang.png 

其实官网各个参数什么的已经给的很详细了。 程序大神,基本就可以根据这个文档开发出各个sdk 。 但同时,相信很多同学也和我一样。 面对这个如此生涩的api 文档望而却步。 所以,今天特意研究了下。 简单的写了一个小小的 python sdk。为什么选python 呢? 因为楼主比较菜~~ 
           
            说一下思想。 本质来说就是我们把 参数上传给鉴黄的接口,它给反过来返回值 我们根据返回值确定 ,此图是不是黄图。具体的算法。。当然官方不会给出了。。。
             
        熟悉优图的用户都知道 需要的 无非就那么几个参数 罢了

    bucketname   appid     Secret ID    Secretkey     这四个参数一定要  明确好。
之后  重点就是生成 签名了。 

    官方说 要使用以下算法:
万象优图使用 HMAC-SHA1 算法对请求进行签名;
签名串需要使用 Base64 编码。

这两个就是常用的加密,编码 算法。

总之 我们 要 利用以上 信息  加上  时间戳  生效时间   需要鉴定的图片的url   这几个参数 生成一个 签名。
签名得到完毕,我们 的任务就完成一半了。

得到了  签名 ,接下来 就是 准备 http包头 和 body   然后开始发送http post 请求。 得到返回值。 通过判断返回值来鉴定 是否黄图。

以上 是 简单的理论 。 下面 不多说  直接给出干货。 以下 代码供大家参考。

  1. #!/usr/bin/env python

  2. #  -*- coding:utf-8 -*-

  3. # File http_post.py



  4. import httplib

  5. import json

  6. import time

  7. import binascii



  8. conn = httplib.HTTPConnection("service.image.myqcloud.com")


  9. appid = 10000943      //自行修改

  10. bucket = "test305"     //自行修改

  11. SecretID = "xxxxxxxxxxxxxxxxxxxxxxxxx"       //自行修改

  12. SecretKey = "xxxxxxxxxxxxxxxxxxxxxxxxxx"    //自行修改

  13. current1 = int(time.time())

  14. current = str(current1)

  15. expired1 = current1 + 100

  16. expired = str(expired1)

  17. url = "http://test305-10000943.image.myqcloud.com/meinv2.jpg"   //自行修改

  18. orignal = "a=" + str(appid) + "&b=" + bucket + "&k=" + SecretID + "&t=" + current + "&e=" + expired + "&l=" + url


  19. from hashlib import sha1

  20. import hmac

  21. import base64


  22. hashed =  hmac.new(SecretKey, orignal, sha1)

  23. baseStr = hashed.hexdigest()

  24. baseStr = binascii.unhexlify(baseStr) + orignal

  25. Authorization = base64.b64encode(baseStr).rstrip()





  26. headers = {"Content-type":"application/json","Host":"service.image.myqcloud.com","Authorization":Authorization}


  27. params =  ({"appid":appid,"bucket":bucket,"url":url})

  28. conn.request("POST", "/detection/pornDetect", json.JSONEncoder().encode(params), headers)

  29. response = conn.getresponse()

  30. data = response.read()

  31. print  data

  32. conn.close()

复制代码

下面是 鉴定完成 给出的返回值。

    success.png 

返回 0 说明系统鉴定为不是黄图。 但是 请看  评分 porn_score  得到了 84.376分 说明 ,即使不是黄图也是 十分性感的图片了。 
官方给出的建议是 大于 83分的  还是人工审核下比较好 。

meinv4.jpg 


这个图 就是 我刚才 鉴定的图。 看来的确是个擦边球。 这个鉴黄系统 鉴定的 还是 有一定水平的。



最后感谢 开发大大 faithzhou 给出的大力帮助。 

===============================补充============================================


鉴于很多人 很苦恼  “擦边球” 黄图 , 那些图被我们的系统识别为色情值比较高而且返回值不是 1 , 但 这些图事实上已经碰触黄图的 底线了。 我们针对这些做出了新的优化:

我们给出了一个可疑度区间

  0-20,  21-40,  41-60,  61-80,  81-100


qujian.png 

review_status //0正常图片 1是黄图 2疑是 3人工黄图到正常的解禁 初始和result相同


result_type  //0默认,1系统(result为1时设置) 2 人工(review_status为1时设置) 



腾讯云服务商邀请关注:

http://partners.qcloud.com/invitation/99377079157835da208bd0

关注服务商的链接,提供下您关注的QQ,我们这边审核下即可快速回复您的工单问题与技术支持! 感谢您的信任与支持!

auto_1452.png

腾讯云技术交流群


ps:本站信息来源于 bbs.qcloud.com

相关文章

在线客服
淘宝购买
腾讯云直播申请 title=
+成为腾讯云VIP客户 腾讯云直播申请 客服电话

15818558013

0755-33940501-803

0755-33940501-808