autojs之聯眾打碼(超全!看我!)
本篇保姆級教程,包括賬號註冊,獲取點數,上傳圖片獲得結果,結果報錯以及返回使用者點數函式!因為我在這個路上摸索的很艱難,本來就很簡單的事,也不知道是咋回事,莫名其妙的搞的很麻煩,所以寫個記錄,為後來的小夥伴鋪路。
前言(廢話)
之前四史答題時說過會搞這個驗證碼,當時因為只瞭解了聯眾打碼,而聯眾打碼的測試點數獲取需要聯絡客服qq,於是一度勸退我這個社恐人士。
在之後我嘗試了超級鷹打碼,它只用掃碼關注公眾號就可以領取測試點數,於是我準備轉戰超級鷹,但是吧,超級鷹竟然沒有autojs/js語言的demo,這讓我這個小白怎麼辦,在改了兩天java程式碼也沒有改出來之後,我就又回到了聯眾的懷抱。
不就是qq聯絡嗎,反正他也不認識我,衝了!於是硬著頭皮聯絡了一下客服,不到一分鐘就拿到了測試點數。

注:本文所用驗證碼是之前四史答題時的驗證碼截圖。
一、註冊賬號
這裡有個坑是,它開發者賬號和普通賬號註冊頁面一模一樣,導致我在開發者註冊頁面徘徊好幾次都沒填,所以一直沒法新增軟體。。。
我不確定它是不是可以直接註冊開發者賬號,因為我是先註冊了賬號。
1.聯眾註冊介面
2.填寫資訊,註冊賬號,實名認證
因為我已經註冊過了,不太好截圖,就是先註冊個賬號
註冊完在個人中心,先看這裡

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

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

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

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

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

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

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


二、程式碼
建議先看一遍:
檢視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("報錯失敗")
}
}
*/
三、程式效果

悄悄說一下,上面這個識別是錯誤的,驗證碼應該是X9LG
不過因為我是讀取截圖做的識別,所以沒加報錯,識別正確率還行吧
總結
驗證碼識別挺實用的,這篇文章對你有幫助的話,點贊評論收藏關注支援一下啦
