首页 > 其他分享 >验证码识别(云码)

验证码识别(云码)

时间:2023-11-17 12:00:45浏览次数:35  
标签:String jsonObject resp 验证码 云码 verify put 识别 type

搜索一圈找到一个好用实惠的第三方验证码识别API推荐给大家《云码》

查看开发文档,首先需要注册账号,导入jar包

<!-- https://mvnrepository.com/artifact/net.dongliu/requests -->
    <dependency>
      <groupId>net.dongliu</groupId>
      <artifactId>requests</artifactId>
      <version>5.0.8</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.83_noneautotype</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-json -->
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-json</artifactId>
      <version>5.8.22</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>1.16.0</version>
    </dependency>

选择语言java到项目

import cn.hutool.json.JSONArray;
import com.alibaba.fastjson.JSONObject;
import net.dongliu.requests.Requests;
import sun.misc.BASE64Encoder;
import java.util.HashMap;
import java.util.Map;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

//dependencies: net.dongliu.requests,com.alibaba.fastjson
//net.dongliu.requests 这个jar请看 https://blog.csdn.net/dxh0823/article/details/81137400/

public class YdmVerify {

    private static final String CustomUrl = "http://api.jfbym.com/api/YmServer/customApi";
    private static final String Token = "";
    Map headers = new HashMap<>();


    public YdmVerify() {
        headers.put("Content-Type", "application/json");
    }
    /// 所有image 参数皆为 图片字节流base64之后的的字符串

    public String commonVerify(String imageContent) {
        // # 数英汉字类型
        // # 通用数英1-4位 10110
        // # 通用数英5-8位 10111
        // # 通用数英9~11位 10112
        // # 通用数英12位及以上 10113
        // # 通用数英1~6位plus 10103
        // # 定制-数英5位~qcs 9001
        // # 定制-纯数字4位 193
        // # 中文类型
        // # 通用中文字符1~2位 10114
        // # 通用中文字符 3~5位 10115
        // # 通用中文字符6~8位 10116
        //# 通用中文字符9位及以上 10117
        //# 定制-XX西游苦行中文字符 10107
        // # 计算类型
        //# 通用数字计算题 50100
        // # 通用中文计算题 50101
        // # 定制-计算题 cni 452
        String verify_type;
        verify_type = "10110";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("image", imageContent);
        jsonObject.put("type", verify_type);
        jsonObject.put("token", Token);
        String resp = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        System.out.println(resp);
        return resp;
    }

    public String slideVerify(String slideImage, String backgroundImage) {
        // # 通用滑块
        // # 请保证购买相应服务后请求对应 verify_type
        // # verify_type="20111" 单次积分
        // # slide_image 需要识别图片的小图片的base64字符串
        // # background_image 需要识别图片的背景图片的base64字符串(背景图需还原)
        String verify_type;
        verify_type = "20101";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("slide_image", slideImage);
        jsonObject.put("background_image", backgroundImage);
        jsonObject.put("type", verify_type);
        jsonObject.put("token", Token);
        String resp = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        System.out.println(resp);
        return resp;
    }

    public String sinSlideVerify(String Image) {
        // # 通用单图滑块(截图)  20110
        // # 请保证购买相应服务后请求对应 verify_type
        // # verify_type="20110" 单次积分
        String verify_type;
        verify_type = "20110";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("image", Image);
        jsonObject.put("type", verify_type);
        jsonObject.put("token", Token);
        String resp = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        System.out.println(resp);
        return resp;
    }


    public String trafficSlideVerify(String seed, String data, String href) {
        // # 定制-滑块协议slide_traffic  900010
        String verify_type;
        verify_type = "900010";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("seed", seed);
        jsonObject.put("data", data);
        jsonObject.put("href", href);
        jsonObject.put("type", verify_type);
        jsonObject.put("token", Token);
        String resp = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        System.out.println(resp);
        return resp;
    }


    public String clickVerify(String image, String extra) {
        // # 通用任意点选1~4个坐标 30009
        // # 通用文字点选1(extra,点选文字逗号隔开,原图) 30100
        // # 定制-文字点选2(extra="click",原图) 30103
        // # 定制-单图文字点选 30102
        // # 定制-图标点选1(原图) 30104
        // # 定制-图标点选2(原图,extra="icon") 30105
        // # 定制-语序点选1(原图,extra="phrase") 30106
        // # 定制-语序点选2(原图) 30107
        // # 定制-空间推理点选1(原图,extra="请点击xxx") 30109
        // # 定制-空间推理点选1(原图,extra="请_点击_小尺寸绿色物体。") 30110
        // # 定制-tx空间点选(extra="请点击侧对着你的字母") 50009
        // # 定制-tt_空间点选 30101
        //# 定制-推理拼图1(原图,extra="交换2个图块") 30108
        //# 定制-xy4九宫格点选(原图,label_image,image) 30008
        //# 如有其他未知类型,请联系我们
        String verify_type;
        verify_type = "30100";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("image", image);
        if (extra != null) {
            jsonObject.put("extra", extra);
        }
        jsonObject.put("type", verify_type);
        jsonObject.put("token", Token);
        String resp = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        System.out.println(resp);
        return resp;
    }

    ;

    public String Rotate(String image) {
        //# 定制-X度单图旋转  90007

        String verify_type;
        verify_type = "90007";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("image", image);
//        # 定制-Tt双图旋转,2张图,内圈图,外圈图  90004
//        verify_type = "90004";
//        jsonObject.put("out_ring_image", image);
//        verify_type = "90004";
//        jsonObject.put("inner_circle_image", image);
        jsonObject.put("type", verify_type);
        jsonObject.put("token", Token);
        String resp = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        System.out.println(resp);
        return resp;

    }

    public String googleVerify(String googlekey, String pageurl) throws InterruptedException {
        //# googleVerify
        String data = null;
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("token", Token);
        jsonObject.put("type", "40010"); // v2
//        jsonObject.put("type", "40011");// v3
        jsonObject.put("googlekey", googlekey);
        jsonObject.put("pageurl", pageurl);
        jsonObject.put("enterprise", 0);
        jsonObject.put("invisible", 1);
        jsonObject.put("data-s", ""); //## V2+企业如果能找到,找不到传空字符串
        jsonObject.put("action", ""); //#V3必传
        jsonObject.put("min_score", ""); //#V3才支持的可选参数
        String jsonData;
        jsonData = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        System.out.println(jsonData);
        // # {'msg': '识别成功', 'code': 10000, 'data': {'code': 0, 'captchaId': '51436618130', 'recordId': '74892'}}
//        jsonData = "["+"{'msg': '识别成功', 'code': 10000, 'data': {'code': 0, 'captchaId': '51436618130', 'recordId': '74892'}}"+"]";
        jsonData = "[" + "{'msg': '识别成功', 'code': 10000, 'data': {'code': 0, 'captchaId': '51436618130', 'recordId': '74892'}}" + "]";
        JSONArray jsonArray = new JSONArray(jsonData);
        jsonData = "[" + jsonArray.getJSONObject(0).getObj("data") + "]";
        JSONArray jsonArray1 = new JSONArray(jsonData);
        String captchaId = (String) jsonArray1.getJSONObject(0).getObj("captchaId");
        String recordId = (String) jsonArray1.getJSONObject(0).getObj("recordId");
        System.out.println(captchaId);
        System.out.println(recordId);
        int times = 0;
        int is_solved = 0;
        while (times < 120 || is_solved == 0) {

            String url = "http://api.jfbym.com/api/YmServer/funnelApiResult";
            JSONObject jsonObject1 = new JSONObject();
            jsonObject1.put("token", Token);
            jsonObject1.put("captchaId", captchaId);
            jsonObject1.put("recordId", recordId);
            String readToText = Requests.post(url).headers(headers).jsonBody(jsonObject).send().readToText();
//            String readToText = "{'msg': '请求成功', 'code': 10001, 'data': {'data': '03AGdBq2611GTOg'}}";
            if (readToText.contains("结果准备中,请稍后再试")) {
                times += 5;
                Thread.sleep(5000);
                continue;

            }
            if (readToText.contains("请求成功")) {
                JSONArray jsonArray2 = new JSONArray("[" + readToText + "]");
                jsonData = "[" + jsonArray2.getJSONObject(0).getObj("data") + "]";
                data = (String) new JSONArray(jsonData).getJSONObject(0).getObj("data");
                is_solved = 1;
                System.out.println(data);
                break;

            }


        }

        return data;
    }


    public String HcaptchaVerify(String site_key, String site_url) {
        //# Hcaptcha
        //# 请保证购买相应服务后请求对应 verify_type
        //# verify_type="50001"
        String verify_type;
        verify_type = "50001";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("site_key", site_key);
        jsonObject.put("site_url", site_url);
        jsonObject.put("type", verify_type);
        jsonObject.put("token", Token);
        String resp = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        System.out.println(resp);
        return resp;

    }


    public String FunCaptchaVerify(String site_key, String site_url) {
        //# Hcaptcha
        //# 请保证购买相应服务后请求对应 verify_type
        //# verify_type="40007"
        String verify_type;
        verify_type = "40007";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("publickey", site_key);
        jsonObject.put("pageurl", site_url);
        jsonObject.put("type", verify_type);
        jsonObject.put("token", Token);
        String resp = Requests.post(CustomUrl).headers(headers).jsonBody(jsonObject).send().readToText();
        System.out.println(resp);
        return resp;

    }

    public static String ImageToBase64ByOnline(String imgURL) {
        ByteArrayOutputStream data = new ByteArrayOutputStream();
        try {
            // 创建URL
            URL url = new URL(imgURL);
            byte[] by = new byte[1024];
            // 创建链接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            InputStream is = conn.getInputStream();
            // 将内容读取内存中
            int len = -1;
            while ((len = is.read(by)) != -1) {
                data.write(by, 0, len);
            }
            // 关闭流
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data.toByteArray());
    }


}


class YdmVerifyTest {


    public static void main(String[] args) throws IOException, InterruptedException {

       YdmVerify ydmVerify = new YdmVerify();
       String image_content = YdmVerify.ImageToBase64ByOnline("http://www.78gk.com/haoma/MTczMTM4NDI0MTE=");
       ydmVerify.commonVerify(image_content);
    }


};

最后到个人中心,点击复制token到代码中即可 private static final String Token = "";

执行代码验证
{"msg":"识别成功","code":10000,"data":{"code":0,"data":"81a9","time":0.01348876953125,"unique_code":""}}

 

标签:String,jsonObject,resp,验证码,云码,verify,put,识别,type
From: https://www.cnblogs.com/xiaozhaoboke/p/17838357.html

相关文章

  • 使用 hutool 工具类生成和识别二维码图片
    实际工作中生成二维码,通过手机进行扫码查看的需求比较多。Hutool工具包中有很多实用的工具类,其中就包含二维码生成和识别的QrCodeUtil工具类,默认生成白底黑色的二维码,也可以自定义二维码的样式,比如设置背景色、前景色、设置边距以及在二维码中心显示自定义的logo等等,使用起来......
  • 告别繁琐,ModelArts一键解决车牌号识别难题
    本文分享自华为云社区《基于ModelArts实现车辆车牌号的目标识别》,作者:屿山岛。前言车辆车牌是车辆的唯一身份标识,能够提供车辆的类型、颜色、归属地等信息,对于交通管理、安全监控、智能出行等领域具有重要的应用价值。随着计算机视觉技术的发展,车辆车牌的自动检测和识别成为了......
  • C++实现YoloV7目标识别与实例分割推理
    前言1.简介7月份,由YOLOV4的原班人马Chien-YaoWang、AlexeyBochkovskiy和Hong-YuanMarkLiao推出的YoloV7,应该是目前开源的目标检测算法最好之一了,它在在5FPS到160FPS范围内的速度和精度达到了新的高度,优于YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5、DETR等多种目标检测器......
  • fatal error C1007: 无法识别的标志“-FitObjData”(在“p2”中)
    VS编译器版本导致的莫名其妙的链接错误。【LINK:fatalerrorC1007:无法识别的标志“-FitObjData”(在“p2”中)】【errorLNK2019:无法解析的外部符号】-一叶知秋,见微知著-博客园(cnblogs.com)......
  • 声纹识别之GMM-UBM系统框架
    声纹识别简介声纹识别,也称做说话人识别,是一种通过声音来判别说话人身份的技术。根据研究表明,声纹虽然不如指纹、人脸这样,个体差异明显,但是由于每个人的声道、口腔和鼻腔(发音要用到的器官)也具有个体差异性。因为反映到声音上,也是具有差异性的。就比如说,当我们在接电话的时候,通过......
  • “人脸识别技术的挑战与机遇:隐私保护与性能提升“
    "人脸识别技术的挑战与机遇:隐私保护与性能提升"是一个备受关注的话题,涉及到人脸识别技术在社会、商业和政府领域的广泛应用。以下是该主题可能涉及的一些关键点:1.**性能提升与准确性:**探讨当前人脸识别技术的性能水平,以及如何通过深度学习、神经网络优化等技术提升其准确性和鲁......
  • 第十五天-登录验证&Cookie&Session&验证码安全
    1、后台验证-登录用户逻辑安全2、后台验证-COOKIE&SESSION3、后台验证-验证码&万能密码等登陆验证流程:1.发送登录请求:账号,密码2.接收账号密码3.判断账号密码准确性正确->成功登录,跳转页面失败->跳转到重新登录页面后台管理系统有多个文件页面,为了方便验证,一般会选用cook......
  • 【数字识别】基于机器视觉的字符识别语言播报附附Matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 零基础机器学习数字识别MNIST(on going)
    本人之前并未涉及机器学习,但是在嵌入式中都会涉及视觉,借校内比赛从零学习,进行MNIST数字识别模型的搭建。随着学习进度更新,每天更新。2023-11-1521:38:55星期三一、环境搭建进行本模型的搭建,需要以下内容:Python环境:利用Anaconda管理开源机器学习平台:PyTorch或Tensorf......
  • 【验证码逆向专栏】百某网数字九宫格验证码逆向分析
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作......