需要5。1。1以上版本支援
以京東為例,隨便輸入賬號密碼登入就會出現驗證碼
網址:https://www。jd。com/
重新整理圖片發現,中間黑色區域是變化最小,可以作為特徵用
初始滑塊與下面箭頭是對應的
所以獲取黑色區域位置和箭頭位置模擬滑鼠拖動完成驗證
按著思路實現就好了
1。滑鼠移動到黑色影象像上,【截圖把黑色塊全部截全就好】
2。獲取滑鼠位置1
3。滑鼠移動到箭頭影象像上
4。獲取滑鼠位置2
5。拖動滑鼠從位置1到位置2
6。完成
截圖位置不同實際位置有偏差,設定偏移量修正
實際執行位置正確,也無法過驗證,這就需要模擬人執行軌跡了,有加減速,拋物線移動···
僅提供思路,具體更多詳細借鑑帖子:
RPA大神之路|UiBot過滑動驗證碼檢測例項 - 知乎
如有更多建議或最佳化,歡迎跟帖交流
原始碼:
dim ob = “”
dim oc = “”
dim steps = “”
dim distance = “”
#icon(“@res:966i0rk9-tpe5-npev-67d2-bpfu3r5dn3e4。png”)
Image。Hover({“wnd”:[{“cls”:“Chrome_WidgetWin_1”,“title”:“* - Google Chrome”,“app”:“chrome”}]},{“height”:0,“width”:0,“x”:0,“y”:0},@res“966i0rk9-tpe5-npev-67d2-bpfu3r5dn3e4。png”,0。7,10000,{“bContinueOnError”:false,“iDelayAfter”:300,“iDelayBefore”:200,“bSetForeground”:true,“sCursorPosition”:“Center”,“iCursorOffsetX”:0,“iCursorOffsetY”:0,“sKeyModifiers”:[],“sSimulate”:“simulate”,“sMatchType”:“GrayMatch”,“iSerialNo”:1})
ob=Mouse。GetPos()
TracePrint(ob)
#icon(“@res:o5suc5k4-n3q1-1j56-thsm-nhlfmp1a14f5。png”)
Image。Hover({“wnd”:[{“cls”:“Chrome_WidgetWin_1”,“title”:“京東-歡迎登入 - Google Chrome”,“app”:“chrome”}]},{“height”:0,“width”:0,“x”:0,“y”:0},@res“o5suc5k4-n3q1-1j56-thsm-nhlfmp1a14f5。png”,0。9,10000,{“bContinueOnError”:false,“iDelayAfter”:300,“iDelayBefore”:200,“bSetForeground”:true,“sCursorPosition”:“Center”,“iCursorOffsetX”:0,“iCursorOffsetY”:0,“sKeyModifiers”:[],“sSimulate”:“simulate”,“sMatchType”:“GrayMatch”,“iSerialNo”:1})
oc=Mouse。GetPos()
TracePrint(oc)
Mouse。Click(“left”, “down”, [],{“iDelayAfter”:300,“iDelayBefore”:200})
distance = ob[“x”]+4-oc[“x”]
TracePrint(distance)
steps = getHuakuaiMovePath(distance)
huaKuaiMoveStep(steps)
Mouse。Click(“left”, “up”, [],{“iDelayAfter”:300,“iDelayBefore”:200})
// 變速運動路徑
Function getHuakuaiMovePath(distance)
Dim a,stack,v,back_stacks
distance = distance + 20
// 初速度
Dim v0 = 0
// 加減速度列表
Dim a_list = [3, 4, 5]
// 時間
Dim t = 0。2
// 初始位置
Dim s = 0
// 向前滑動軌跡
Dim forward_stacks = []
Dim md = distance * 3 / 5
Do While s < distance:
If s < md
a = a_list[cint(Rnd() * 2)]
Else
a = a_list[cint(Rnd() * 2)] * -1
End If
v = v0
stack = v * t + 0。5 * a * (t ^ 2)
// 每次拿到的位移
stack = Math。Round(stack,0)
s = s + stack
v0 = v + a * t
push(forward_stacks,stack)
Loop
back_stacks = [-1, -1, -2, -3, -2, -3, -2, -2, -3, -1]
return {‘forward_stacks’: forward_stacks, ‘back_stacks’: back_stacks}
End Function
/* 滑鼠模擬滑塊移動
* steps:勻加速運動軌跡。getHuakuaiMovePath(distance)的返回結果。
* getHuakuaiMovePath(distance)
* huaKuaiMoveStep(steps)
*/
Function huaKuaiMoveStep(steps)
Dim front=steps[“forward_stacks”]
Dim back=steps[“back_stacks”]
For Each value In front
Mouse。Move(value, 0, true)
Delay(12)
Next
For Each value In back
Mouse。Move(value, 0, true)
Delay(34)
Next
Delay(200)
End Function
如有更多建議或最佳化,歡迎跟帖交流
更過內容參考:
RPA大神之路|破解滑塊(極驗)驗證碼思路 - 知乎
成就RPA大神之路,來也自然靠得住!
關於來也科技
來也科技RPA+AI現已免費使用社群版,要想體驗智慧自動化平臺產品,您可點選連結試用!
更多關於LAIYE 智慧自動化等問題,歡迎登陸
來也科技(北京)有限公司官網
瞭解!更有免費專屬一對一教練為您提供解答疑惑!也可私信來也科技諮詢瞭解!
來也科技作為中國乃至全球的智慧自動化領軍品牌,為客戶提供變革性的智慧自動化解決方案,提升組織生產力和辦公效率,釋放員工潛力,助力政企實現智慧時代的人機協同。
來也科技的產品是一套智慧自動化平臺,包含機器人流程自動化(RPA)、智慧文件處理(IDP)、對話式AI(Conversational AI)等。基於這一平臺,能夠根據客戶需要,構造各種不同型別的軟體機器人,實現業務流程的自動化,全面提升業務效率。
目前,來也科技幫助電力,銀行,保險、通訊、零售等多行業的企業客戶,以及數字政府、公共醫療、高校職教在內的公共事業領域,實現了各種業務場景的深度突破與打通,構建起了端到端的自動化解決方案,已服務超過 200 家 500 強企業,200 餘個省市政府及上千家中小企業,2021年《財富》世界500強榜單前十名企業中,7 家在使用來也科技的智慧自動化產品。
同時來也科技擁有著最完善的RPA開發者生態社群,社群使用者目前近70W!擁有大量智慧自動化在各領域的應用案例!歡迎加入來也開發者社群交流!
關注來也科技,智慧自動化平臺等你來探索!