欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
驗證碼識別技術(shù)

驗證碼識別技術(shù)

模擬精靈是首個(gè)公開(kāi)最有效的驗證碼識別技術(shù)的軟件,
使用模擬精靈制作了大量的免費、商用群發(fā)軟件,對很多復雜BT的驗證碼都能成功的識別。
但是驗證碼仍然需要精湛的技術(shù)與足夠的耐心。請牢記這一點(diǎn)。
驗證碼識別不適合浮躁的人去做。

驗證碼識別是一項特殊的技術(shù),任何一個(gè)公開(kāi)的驗證碼識別代碼都會(huì )很快的失效。
因為代碼的公開(kāi)后相關(guān)網(wǎng)站都會(huì )很快的更改驗證碼。
所以下面我只會(huì )介紹其原理。

在這里討論驗證碼識別技術(shù)純粹基于技術(shù)研究目的。
公開(kāi)此技術(shù)也是為了讓更多的網(wǎng)站采取更有效的防范措施。
禁止任何人利用這里介紹的驗證碼識別技術(shù)濫發(fā)垃圾信息。

本文介紹的驗證碼識別適用于比較復雜的圖片驗證碼,也是大多數網(wǎng)站采用的方法。
有一些網(wǎng)站的驗證碼極簡(jiǎn)單,例如在網(wǎng)頁(yè)中直接顯示驗證碼字符而不是圖片,或者圖片的文件名直接就是驗證碼上的字符。
或者有其他規律可循,或者有其他明顯的漏洞可以利用(例如通過(guò)改寫(xiě)訪(fǎng)問(wèn)驗證碼頁(yè)面的源代碼使驗證碼不刷新)。

這一類(lèi)的驗證碼識別極其簡(jiǎn)單,只要熟練掌握web庫、element庫的函數即可,不需要使用下面介紹的方法。

一、下載驗證碼樣本

打開(kāi)c:\test文件夾,選“查看縮略圖”,
然后重復運行下面的LAScript腳本,每運行一次,就查看c:\test下自動(dòng)生成的圖片,把圖片上的字符改為文件名.
例如圖片上面顯示5,就把文件名改為5.jpg.

如果變化比較復雜的驗證碼,可以對每個(gè)字符多用幾個(gè)樣本,第一個(gè)字符為驗證碼字符,第二個(gè)字符可以為任意字符。
例如:5a.jpg , 5b.jpg , 5c.jpg ...........等等。
樣本多就會(huì )識別能力就越強。

img = image.new();

--下載圖像,沒(méi)有后綴名要顯示指定*.bmp格式


img:Crop(4 ,3 , 56 ,18 )
img:save("c:\\test\\test.jpg") --保存到硬盤(pán)


--折分圖片,指定一行四列
img2,img3,img4,img5 =

image.del(img);


如何確定圖片后綴名

二、生成驗證碼樣本數據庫

復制下面的代碼并
你就可以在A(yíng)peML源代碼最后面的「數據區塊」中看到生成的驗證碼樣本了。
將「數據區塊」的內容復制需要使用驗證碼識別的fap模擬程序中覆蓋「數據區塊」即可。

三、驗證碼識別

將下面的代碼添加到fap模擬程序最前面的init腳本區塊中即可

--從數據區塊讀取base64編碼的圖片數據
codekey = ape:loadTable("驗證碼樣本");
local timg = {}; --這是一個(gè)圖像數組,用來(lái)儲存還原后的驗證碼樣本的圖片數據
--必須進(jìn)行一個(gè)轉換,因為codekey里面只是base64編碼的普通字符串,而timg 將是真正的圖片對象(二進(jìn)制數據)
 
--還原到圖片對象
toImage = function(k,v)
    local img = image.new();
    local str = string.decode( v ,"");--首先進(jìn)行base64解碼,將純文本轉換為二進(jìn)制數據
    img:setBytes( str ,"*.jpg");--將二進(jìn)制數據還原為圖像
    timg[k] = img;
end;
 
--載入驗證碼樣本
tkey = ape:loadTable("驗證碼樣本");
for k,v in pairs(tkey) do  --驗證樣本
    toImage(k,v); --轉換為圖像
end;
   
--轉換圖片驗證碼到字符串的函數
function ImgToString(img)
    function test(imgX) --test是一個(gè)被包含在函數中的內部函數
        sleep(0);
        local limit = (60 * 20) + (60 * 20); --最小相似度 local關(guān)鍵字聲明為局部變量
        local chr = "A"; --讀取的字符
   
   
        --testimg是一個(gè)被包含在函數中的內部函數,作為table.foreach的回調函數,k參數表示鍵,v參數表示值
        testimg = function(k,v)

            --調用image.testXX()函數得出相似度,類(lèi)似的函數還有image.testX() image.test()
            local n = imgX:testXX(timg[k]);
            if(n<limit)then --比較最小相似度
                  limit = n;
                  chr = k.."";
            end;
        end;
   
        --遍歷timg表,并調用testimg函數
        for k,v in pairs(timg) do 
           testimg(k,v)
        end;

        return string.left(chr,1); --返回讀取到的字符串首字符(如果每個(gè)字符有多個(gè)樣本)
    end;
   
   
    --修剪圖片   
    image.Crop(img, 4 ,3 , 56 ,18 )
    img:bpp(1);
    img:bpp(24);
    --上面的過(guò)程必須與下載樣本時(shí)的代碼完全一致。
   
    --使用split函數分割圖片
    local img2,img3,img4,img5 = img:split(1,4);
    win.messagePrint("正在檢測圖片,請稍候....");
    return test(img2)..test(img3)..test(img4)..test(img5);
 
end;

需要識別驗證碼的地方添加類(lèi)似下面的代碼:

img = image.new()
img:getURL("http://www.***.com/test.asp","*.jpg")

--因為刷新了驗證碼與頁(yè)面不一致,把驗證碼畫(huà)到屏幕上
local x,y = mouse.getPos()
img:paint(x,y,60 ,20 )

local str = ImgToString(img);

--下面我們把驗證碼的每個(gè)字符都轉換為大寫(xiě),并控制鍵盤(pán)順序按鍵
code1 = string.upper( string.sub(str,1,1) );
code2 = string.upper( string.sub(str,2,2) );
code3 = string.upper( string.sub(str,3,3) );
code4 = string.upper( string.sub(str,4,4) );
key.press(100,code1,code2,code3,code4);

上面我們用了模擬按鍵的方法輸入驗證碼。
實(shí)際上大多時(shí)候可以用更簡(jiǎn)單的方法,如下:

ele = wb:getEle("驗證碼控件名字");
ele:setAttribute("value",str)

為什么我的驗證碼與頁(yè)面上不一樣

因為我們使用img:getURL讀取驗證碼時(shí)已經(jīng)刷新了驗證碼。
所以驗證碼與頁(yè)面上顯示的并不一樣,您只需要識別最新的驗證碼即可。

如何直接獲取頁(yè)面的上圖片,而不是重新下載

有些驗證碼是綁定頁(yè)面的,必須識別頁(yè)面上的驗證碼才行。
那么可以使用image.capture函數直接抓屏屏幕上的圖片即可。
請參考:image.capture函數。

更好的方法是使用函數直接拷貝頁(yè)面上的圖片到剪貼板。
然后使用
img:getClipBD() 獲取圖片。
請參考:函數 img:getClipBD()函數

四、關(guān)于剪切圖片



看上面的示意圖,Crop就是選取綠色方框內的區域去清除綠色方框外面的區域.
必須保證里面的面積正好可以平均分成四塊(假設這里是四個(gè)驗證碼字符)

這樣以后調用 img:split(1,4) 就正好分成四個(gè)字符了
分成四份的小圖片其寬度應當正好是上面的紅色小方塊的寬度。
高度

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
再談驗證碼識別技巧-解讀貼吧殺手3.0增強版源代碼
10行Python代碼能做出哪些有趣的事情?
用于車(chē)牌字符識別的SVM算法
如何使用Python檢測和識別車(chē)牌?
vim正則表達式
30 行代碼帶你用 Python 在命令行查看圖片
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久