国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)

這篇具有很好參考價值的文章主要介紹了java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在很多平臺軟件中,咱們登錄之后都有一些驗證,例如圖片數(shù)字驗證,還有現(xiàn)在流行的滑塊驗證碼,點選驗證碼,這么復(fù)雜的事情,我們程序員當(dāng)然要用程序的方式解決啦,所以也有一些平臺提供了快捷驗證的方式,在這里,博主就給大家分享一下,如何實現(xiàn)對圖片數(shù)字的識別;
?

一、先看效果,再實戰(zhàn):

java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)

效果:

java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)?

?data里面就有識別的數(shù)字,取出來就可以使用了,完美!

二、開始實操,我們得選一個打碼平臺

找了幾圈,終于找到一個有免費使用次數(shù)的打碼平臺,非常不易【聲明,博主這個真是網(wǎng)上找了很久才找到的,絕非打廣告,鐵子們也可以自行找一個,總體思路都差不多】

打碼平臺網(wǎng)址:云碼-自動驗證碼識別平臺_驗證碼識別API接口_免費驗證碼軟件 (jfbym.com)

1、注冊賬號我就不說了,然后進(jìn)入個人中心

java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)

2、現(xiàn)在還沒有免費積分,大家需要關(guān)注一下他這個右邊的公眾號,然后在公眾號里面登錄一下剛剛注冊的賬號就可以得到1000積分

java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)

?

3、上面做的這一切,是為了得到這個token,大家在網(wǎng)址首頁也可以先對圖片進(jìn)行一個識別測試,這個不需要對接,就可以看效果

java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)

4、這個時候就可以打開他的開發(fā)文檔,里面都是一些接口,我們找到j(luò)ava開發(fā)文檔

?java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)

?

5、找到j(luò)ava開發(fā)文檔后,里面都是一些代碼,這些接口我們需要copy到我們的idea編輯器中,方便我們后續(xù)調(diào)用

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

public class YdmVerify {

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


    public YdmVerify() {
        headers.put("Content-Type", "application/json");
    }
    /// 所有image 參數(shù)皆為 圖片字節(jié)流base64之后的的字符串

    public String commonVerify(String imageContent) {
        // # 數(shù)英漢字類型
        // # 通用數(shù)英1-4位 10110
        // # 通用數(shù)英5-8位 10111
        // # 通用數(shù)英9~11位 10112
        // # 通用數(shù)英12位及以上 10113
        // # 通用數(shù)英1~6位plus 10103
        // # 定制-數(shù)英5位~qcs 9001
        // # 定制-純數(shù)字4位 193
        // # 中文類型
        // # 通用中文字符1~2位 10114
        // # 通用中文字符 3~5位 10115
        // # 通用中文字符6~8位 10116
        //# 通用中文字符9位及以上 10117
        //# 定制-XX西游苦行中文字符 10107
        // # 計算類型
        //# 通用數(shù)字計算題 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) {
        // # 通用滑塊
        // # 請保證購買相應(yīng)服務(wù)后請求對應(yīng) 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
        // # 請保證購買相應(yīng)服務(wù)后請求對應(yīng) 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) {
        // # 定制-滑塊協(xié)議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個坐標(biāo) 30009
        // # 通用文字點選1(extra,點選文字逗號隔開,原圖) 30100
        // # 定制-文字點選2(extra="click",原圖) 30103
        // # 定制-單圖文字點選 30102
        // # 定制-圖標(biāo)點選1(原圖) 30104
        // # 定制-圖標(biāo)點選2(原圖,extra="icon") 30105
        // # 定制-語序點選1(原圖,extra="phrase") 30106
        // # 定制-語序點選2(原圖) 30107
        // # 定制-空間推理點選1(原圖,extra="請點擊xxx") 30109
        // # 定制-空間推理點選1(原圖,extra="請_點擊_小尺寸綠色物體。") 30110
        // # 定制-tx空間點選(extra="請點擊側(cè)對著你的字母") 50009
        // # 定制-tt_空間點選 30101
        //# 定制-推理拼圖1(原圖,extra="交換2個圖塊") 30108
        //# 定制-xy4九宮格點選(原圖,label_image,image) 30008
        //# 如有其他未知類型,請聯(lián)系我們
        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度單圖旋轉(zhuǎn)  90007

        String verify_type;
        verify_type = "90007";
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("image", image);
//        # 定制-Tt雙圖旋轉(zhuǎn),2張圖,內(nèi)圈圖,外圈圖  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+企業(yè)如果能找到,找不到傳空字符串
        jsonObject.put("action", ""); //#V3必傳
        jsonObject.put("min_score", ""); //#V3才支持的可選參數(shù)
        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 = "https://www.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("結(jié)果準(zhǔn)備中,請稍后再試")) {
                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
        //# 請保證購買相應(yīng)服務(wù)后請求對應(yīng) 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
        //# 請保證購買相應(yīng)服務(wù)后請求對應(yīng) 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 {
            // 創(chuàng)建URL
            URL url = new URL(imgURL);
            byte[] by = new byte[1024];
            // 創(chuàng)建鏈接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            InputStream is = conn.getInputStream();
            // 將內(nèi)容讀取內(nèi)存中
            int len = -1;
            while ((len = is.read(by)) != -1) {
                data.write(by, 0, len);
            }
            // 關(guān)閉流
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 對字節(jié)數(shù)組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);
    }


};

java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)

?

6、接下來我們就來到程序中,映入眼簾的大家和我這個一樣,有很多的報錯,首先是包的問題,在開發(fā)文檔中,沒有包提供【我這個不是框架項目,是一個普通java項目】,所以需要我們自己把包找到,導(dǎo)入進(jìn)來,關(guān)于需要哪些包,博主踩了很多坑,已經(jīng)給大家準(zhǔn)備好了,去網(wǎng)盤取就行了

鏈接:https://pan.baidu.com/s/1jyQz2pyKajs4QSlJsTHENg?pwd=ojyv?
提取碼:ojyv

7、包放到lib目錄里面,然后添加進(jìn)來使用就行了

java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)

?8、在這里大家需要將自己的項目改成jdk11的版本,jdk8無法正常運行,會出現(xiàn)不兼容的問題,關(guān)于jdk8換成jdk11的相信大家沒有問題,jdk11的執(zhí)行文件我也放在了云盤,大家獲取然后執(zhí)行安裝就行

鏈接:https://pan.baidu.com/s/1vQGpIkZ7550paEks3S9xfw?pwd=6zno?
提取碼:6zno

9、大家將jdk改成11版本后,會出現(xiàn)一個代碼問題,就是把圖片轉(zhuǎn)為base64會出錯編碼出錯,這是因為版本升級后,有些文件也會改變

JDK中的/lib/tool.jar和/lib/rt.jar已經(jīng)從Java SE 9中刪除, 結(jié)果導(dǎo)致BASE64Encoder類找不到????????

?解決方法:

import org.apache.commons.codec.binary.Base64
...
 
Base64.encodeBase64String(authorization);

用上面的代碼替換

import sun.misc.BASE64Encoder;
 
...
 
BASE64Encoder encoder = new BASE64Encoder(); 
String base64Auth = encoder.encode(authorization);  

10、現(xiàn)在還差一個token,將云碼官網(wǎng)的個人中心的token復(fù)制到代碼之中,然后運行

運行效果如下:

java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)

?java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)文章來源地址http://www.zghlxwxcb.cn/news/detail-424925.html

對接第三方接口大家基本都會遇到這些問題,覺得有幫助的朋友多多支持!?

到了這里,關(guān)于java對接打碼平臺用selenium實現(xiàn)對圖片驗證碼識別(對接文檔看這一個就夠了)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Selenium工具:圖片驗證碼識別技術(shù)(小白技術(shù))

    Selenium工具:圖片驗證碼識別技術(shù)(小白技術(shù))

    前言 有人開發(fā)了一個識別圖片驗證碼的工具庫ddddocr,原來題主之前有講過,遇到這種問題就放棄或者協(xié)商,去識別存在一定開發(fā)成本或者是錯誤成本,畢竟正確率并沒有達(dá)到100,即使是ddddocr,只有萬能驗證碼或者不校驗才是萬全之策,如果它需要在生產(chǎn)環(huán)境運行呢?那就不

    2024年02月13日
    瀏覽(21)
  • selenium--自動化識別圖片驗證碼并輸入

    selenium--自動化識別圖片驗證碼并輸入

    首先注冊百度智能云賬號(這里我用的是百度智能云): ? ?1.要在這里面保存好API Key 和?Secret Key ?2.然后進(jìn)入查看文檔 ? 在pycharm中: 導(dǎo)入自動化文件: 在寫自動化腳本時調(diào)用封裝的百度類: 注意:自動化識別文字可能會出現(xiàn)識別不出來的可能,要解決這個Bug。 代碼分享:

    2024年02月11日
    瀏覽(28)
  • selenium其他操作/xpath使用/動作鏈/打碼平臺

    # 頁面中定位元素(標(biāo)簽),兩種通用方式 ?? ?-css選擇器 ? ? -xpath:XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言 ? ?? ? ?? # xpath語法 ? ? div?? ?選取div標(biāo)簽 ? ? /?? ?從根節(jié)點選取 ? ? //?? ?從匹配選擇的當(dāng)前節(jié)點選擇文檔中的節(jié)

    2024年02月15日
    瀏覽(23)
  • 【java】opencv + Tesseract(tess4j) 實現(xiàn)圖片處理驗證碼識別

    【java】opencv + Tesseract(tess4j) 實現(xiàn)圖片處理驗證碼識別

    2022/12/27 有的小伙伴說maven導(dǎo)入不了依賴,加了一種方法,百分百解決。 2022/12/28 寫了半天,想去論壇放松休息下,結(jié)果看到別人已經(jīng)有成品了,難受啊馬飛,晚點看情況要不要寫個搭建使用方法(我猜沒人看,估計也不用寫了,就當(dāng)自己做個記錄) 2023/3/24 更新了一鍵部署驗

    2024年02月08日
    瀏覽(28)
  • java識別圖片驗證碼

    java識別圖片驗證碼

    之前在進(jìn)行selenium自動化測試時需要對項目內(nèi)的驗證碼進(jìn)行識別,通常有三種方法進(jìn)行驗證碼處理: 去除驗證碼 萬能驗證碼 自動識別 但由于部分?jǐn)?shù)據(jù)未提供了api,我們只能通過自動識別方式去進(jìn)行“破解” 鄙人使用兩種開源技術(shù)進(jìn)行嘗試:tess4j和tesseract-ocr(OCR) 1.下載tessd

    2024年02月06日
    瀏覽(20)
  • burp實現(xiàn)rsa加密+圖片驗證碼識別

    burp實現(xiàn)rsa加密+圖片驗證碼識別

    ?1.先查看登錄界面,發(fā)現(xiàn)用戶名和密碼都進(jìn)行了加密,所以如果接口傳輸時直接傳輸明文信息,可能會被服務(wù)端校驗住,可以在抓包時,通過修改包來檢測一下,如下圖: ? ? 可以看出,如果傳輸明文,會報系統(tǒng)異常,而不是賬戶名密碼錯誤,所以在傳輸時必須進(jìn)行賬戶及

    2024年02月02日
    瀏覽(17)
  • 對接YouTube平臺實現(xiàn)上傳視頻——Java實現(xiàn)

    對接YouTube平臺實現(xiàn)上傳視頻——Java實現(xiàn)

    前段時間公司要求對接海外YouTube平臺實現(xiàn)視頻上傳的功能,由于海外文檔描述不詳細(xì),且本人英語功底不好,過程中踩了很多坑,寫出這篇文章出來希望能幫助到有需要的人。 開發(fā)環(huán)境 :idea 、jdk1.8、maven 開發(fā)準(zhǔn)備 : 需要一個Google賬號 需要登錄到Google控制臺創(chuàng)建應(yīng)用開啟

    2024年02月11日
    瀏覽(23)
  • python+selenium 實現(xiàn)驗證碼由base64轉(zhuǎn)為jpg/png格式,并識別驗證碼

    在使用python+selenium實現(xiàn)自動化登錄時,遇到了關(guān)于驗證碼的一些問題,主要是驗證碼格式的轉(zhuǎn)換和識別。我這里的驗證碼都是用的base64格式,我的思路是先將base64格式轉(zhuǎn)化為jpg或者png格式,然后用ddddocr模型來識別圖片內(nèi)容。 總結(jié): replace()不生效: replace返回的是一個新的值,

    2024年02月13日
    瀏覽(21)
  • java爬蟲遇到網(wǎng)頁驗證碼怎么辦?(使用selenium模擬瀏覽器并用python腳本解析驗證碼圖片)

    ????????筆者這幾天在爬取數(shù)據(jù)的時候遇到了一個很鬧心的問題,就是在我爬取數(shù)據(jù)的時候遇到了驗證碼,而這個驗證碼又是動態(tài)生成的,嘗試了很多方法都沒能繞開這個驗證碼問題。 ? ? ? ? 我的解決方案是:使用selenium模擬瀏覽器行為,獲取到動態(tài)生成的驗證碼后用

    2024年02月09日
    瀏覽(175)
  • 爽,我終于實現(xiàn)了selenium圖片滑塊驗證碼【附代碼】

    爽,我終于實現(xiàn)了selenium圖片滑塊驗證碼【附代碼】

    因為種種原因沒能實現(xiàn)愿景的目標(biāo),在這里記錄一下中間結(jié)果,也算是一個收場吧。這篇文章主要是 用selenium解決滑塊驗證碼的個別案列。 思路: 用selenium打開瀏覽器指定網(wǎng)站 將殘缺塊圖片和背景圖片下載到本地 對比兩張圖片的相似地方,計算要滑動的距離 規(guī)劃路線,移動

    2024年02月04日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包