1. 程式人生 >實用技巧 >其它 >autojs之聯眾打碼(超全!看我!)

autojs之聯眾打碼(超全!看我!)


本篇保姆級教程,包括賬號註冊,獲取點數,上傳圖片獲得結果,結果報錯以及返回使用者點數函式!因為我在這個路上摸索的很艱難,本來就很簡單的事,也不知道是咋回事,莫名其妙的搞的很麻煩,所以寫個記錄,為後來的小夥伴鋪路。


前言(廢話)

之前四史答題時說過會搞這個驗證碼,當時因為只瞭解了聯眾打碼,而聯眾打碼的測試點數獲取需要聯絡客服qq,於是一度勸退我這個社恐人士。

在之後我嘗試了超級鷹打碼,它只用掃碼關注公眾號就可以領取測試點數,於是我準備轉戰超級鷹,但是吧,超級鷹竟然沒有autojs/js語言的demo,這讓我這個小白怎麼辦,在改了兩天java程式碼也沒有改出來之後,我就又回到了聯眾的懷抱。

不就是qq聯絡嗎,反正他也不認識我,衝了!於是硬著頭皮聯絡了一下客服,不到一分鐘就拿到了測試點數。

autojs之聯眾打碼(超全!看我!)


注:本文所用驗證碼是之前四史答題時的驗證碼截圖。

一、註冊賬號

這裡有個坑是,它開發者賬號和普通賬號註冊頁面一模一樣,導致我在開發者註冊頁面徘徊好幾次都沒填,所以一直沒法新增軟體。。。
我不確定它是不是可以直接註冊開發者賬號,因為我是先註冊了賬號。

1.聯眾註冊介面
2.填寫資訊,註冊賬號,實名認證
因為我已經註冊過了,不太好截圖,就是先註冊個賬號

註冊完在個人中心,先看這裡

autojs之聯眾打碼(超全!看我!)

,如果不是作者vip就要繼續註冊開發者賬戶。

3.註冊**開發者賬戶**!

autojs之聯眾打碼(超全!看我!)


這個真的是最坑的,它和註冊介面一模一樣
4.註冊完成後,就可以在個人中心看到

autojs之聯眾打碼(超全!看我!)


5.點選我的軟體-增加軟體-填寫(有字數限制)

autojs之聯眾打碼(超全!看我!)


名稱好像是6字以上,描述是10字?不太記得了,提交完還有稽核,我提交了五遍才成功。orz 我的⬇,僅供參考

autojs之聯眾打碼(超全!看我!)


6.新增成功後,檢視軟體資訊(以下兩個需要儲存,程式碼裡需要用)

autojs之聯眾打碼(超全!看我!)


點選檢視Secret,會有簡訊驗證

autojs之聯眾打碼(超全!看我!)


軟體資訊建議截圖儲存
7.領取測試點數,點選右側的qq交談,會自動進入客服的聊天介面(應該需要qq已經在電腦上登入),傳送自己的使用者名稱,之後在個人中心檢視剩餘點數為50

autojs之聯眾打碼(超全!看我!)

autojs之聯眾打碼(超全!看我!)

二、程式碼

建議先看一遍:
檢視API文件,
檢視Demo/SDK

作為使用者,我在這裡吐槽一下,這上面兩個寫的都不怎麼樣!對於使用者,說明不清晰,demo沒有官方示例(超級鷹裡超級全,對新手友好),文件裡錯誤碼章節也找不到(有知道在哪的大佬,求指路)。

下列介面、例項檔案,均為第三方開發,因技術原因,聯眾識圖平臺未進行程式碼審查,亦不能確定程式碼的功能作用,請接入的開發者審查程式碼後呼叫。
——聯眾

1.上傳圖⽚資訊同時獲取結果

這個是聯眾提供的第三方demo,我也在csdn看到別的大佬寫了。
不過他們的只返回了識別出的驗證碼結果,沒有返回ID,如果需要報錯就需要ID,所以注意新增的那一行程式碼

function getCode(username, password, img) {
    http.__okhttp__.setTimeout(3e4);
    var r = images.toBase64(img, format = "png"), i = device.release, c = device.model, s = device.buildId;
    try {
        var n = http.postJson("https://v2-api.jsdama.com/upload", {
            softwareId: 11111,//軟體ID,修改為自己的
            softwareSecret: " ",//祕鑰,修改為自己的
            username: username,//使用者名稱,修改為自己的,我是在外傳參
            password: password,//密碼,修改為自己的,我是在外傳參
            captchaData: r,//圖⽚⽂件內容,base64後的資料,看上邊r的賦值
            captchaType: 1001,//識別型別(整形),按需要修改
            captchaMinLength: 0,//可選引數,識別時需輸⼊的最⼩⻓度。
            captchaMaxLength: 0,//可選引數,識別時最多輸⼊的內容⻓度。
            workerTipsId: 0//可選引數,⼈⼯提示模板ID
        }, {
            headers: {
                "User-Agent": "Mozilla/5.0 (Linux; Android " + i + "; " + c + " Build/" + s + "; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 Mobile Safari/537.36",
            }
        });
    } catch (e) {
        return {
            code: "-1",
            msg: "網路連結超時...",
            data: {}
        };
    }
    var d = n.body.json(), p = d.code, m = d.message;
    if ("10079009" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("10142006" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("10142004" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("10142005" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("10079006" == p) return {
        code: p,
        msg: m,
        data: {}
    };
    if ("0" == p) {
        return {
            code: p,
            msg: m,
            data: {
                res: d.data.recognition,
                ID: d.data.captchaId//添加了ID,之後報錯需要
            }
        };
    }
    return d;
}

響應資料:
{“ts”:1497289968,“code”:0,“message”:"",“data”:
{“captchaId”:“20170613:000000000000008273614”,“recognition”:“DDHLJ”}}

2.檢查點數

程式碼如下(示例):

function getdianshu(username, password) {
    http.__okhttp__.setTimeout(3e4);
    try {
        var n = http.postJson("https://v2-api.jsdama.com/check-points", {
            "softwareId": ,//軟體ID
            "softwareSecret":" ",//祕鑰
            "username":username,	//使用者名稱
            "password":password	//密碼
        }
        );
    } catch (e) {
        return {
            code: "-1",
            msg: "網路連結超時...",
            data: {}
        };
    }
    var d = n.body.json();
    return d;
}

響應資料:
{“code”:0,“message”:"",“data”:{“userPoints”:10000, “availablePoints”:8000,
“lockPoints”:2000}

3. 報錯

 function baocuo(username, password, ID) {
    http.__okhttp__.setTimeout(3e4);
    try {
        var n = http.postJson("https://v2-api.jsdama.com/report-error", {
            "softwareId":25212,//軟體ID
            "softwareSecret":"yw6VTrAqJ5lHhJZPCGUh8CQvg9imK2kbmz9gEt66",//祕鑰
            "username":username,
            "password":password,
            "captchaId":ID//:由 接⼝1 返回的 captchaId 識別ID

        }
        );
    } catch (e) {
        return {
            code: "-1",
            msg: "網路連結超時...",
            data: {}
        };
    }
    var d = n.body.json();
    return d;
}

響應資料:
{“code”:0,“message”:"",“data”:{“result”:true}}

4.主函式



username=" "  //記得寫 使用者名稱
password=" "	//記得寫  密碼

path= "/sdcard/aa/313.png"//我這個是讀取的截圖,一般是要截圖,然後對截圖進行處理
img=images.read(path)
sleep(1000)

log("識別結果返回:")
result=getCode(username, password, img)
log(result)
log("驗證碼:")
log(result.data.res)//驗證碼
log("ID:")
log(result.data.ID)//ID
sleep(1000)

log("使用者點數返回:")
dianshu=getdianshu(username, password)
log(dianshu)
log("使用者可用點數:")
log(dianshu.data.availablePoints)//可用點數

/*
if()//一定要有判斷,比如輸入後顯示驗證碼錯誤,進行截圖判斷
{
    baocuo_result = baocuo(username, password, result.data.ID)
    if(baocuo_result.data.result == true){
        log("報錯成功")
    }
    else{
        log("報錯失敗")
    }
}
*/

三、程式效果

autojs之聯眾打碼(超全!看我!)

悄悄說一下,上面這個識別是錯誤的,驗證碼應該是X9LG

不過因為我是讀取截圖做的識別,所以沒加報錯,識別正確率還行吧

autojs之聯眾打碼(超全!看我!)

總結

驗證碼識別挺實用的,這篇文章對你有幫助的話,點贊評論收藏關注支援一下啦