① 求大神幫我寫一個按鍵精靈9用的 自動識別輸入驗證碼的腳本
驗證碼要做特徵碼十分麻煩。而且要把數字0-9.字母a-z全部做完。,有的不規則的還要扭曲變形。所以都是人民幣收費的。價格不菲。
另外有一種一人工代答。你可以網路搜索。自然也是要錢的。
在這里你是得不到答案的、況且、、你給的圖中。數字字母就幾個也做不了、
② java怎麼實現驗證碼識別
圖片驗證碼是什麼
圖片驗證碼,這個大家應該都見過。最普遍的圖片驗證碼就是一張圖片上面有4-6個歪歪扭扭的數字字母,圖片還有點看不清楚,但是基本可以肉眼識別出上面的數字字母。那為什麼要有這個東東呢?
其實驗證碼的出現為了區分人與機器。對於歪歪妞妞還有點看不清的數字字母圖片,由於人腦的特殊構造,是可以完全無障礙識別的,但是想讓奇跡識別出這些字母數字,就會出現識別錯誤。那為什麼要區別人與機器呢?假如一個一個系統沒有驗證碼,我知道了你的用戶名,並且知道你的登錄密碼是8位的數字,那我完全可以寫個腳本程序窮舉出所有的8位數組合,挨個去嘗試登錄,這個過程對於人來說可能耗時耗力,但是對於程序來說,so easy。所以驗證碼的出現就會阻止程序進行這樣的窮舉登錄。
隨著技術的發展,現在很多的驗證碼系統都可以通過圖像處理、機器學習深度學習等方式進行攻破,圖片驗證碼已經不再安全,即使是非常有名的12306驗證碼,也已經被利用深度學習達到了很高的識別精度。所以也出現了手機驗證碼、拖動滑塊圖片到指定位置的驗證碼等各種驗證碼。
③ 如何利用Python做簡單的驗證碼識別
1摘要
驗證碼是目前互聯網上非常常見也是非常重要的一個事物,充當著很多系統的防火牆功能,但是隨時OCR技術的發展,驗證碼暴露出來的安全問題也越來越嚴峻。本文介紹了一套字元驗證碼識別的完整流程,對於驗證碼安全和OCR識別技術都有一定的借鑒意義。
然後經過了一年的時間,筆者又研究和get到了一種更強大的基於CNN卷積神經網路的直接端到端的驗證識別技術(文章不是我的,然後我把源碼整理了下,介紹和源碼在這裡面):
基於python語言的tensorflow的『端到端』的字元型驗證碼識別源碼整理(github源碼分享)
2關鍵詞
關鍵詞:安全,字元圖片,驗證碼識別,OCR,Python,SVM,PIL
3免責聲明
本文研究所用素材來自於某舊Web框架的網站完全對外公開的公共圖片資源。
本文只做了該網站對外公開的公共圖片資源進行了爬取,並未越權做任何多餘操作。
本文在書寫相關報告的時候已經隱去漏洞網站的身份信息。
本文作者已經通知網站相關人員此系統漏洞,並積極向新系統轉移。
本報告的主要目的也僅是用於OCR交流學習和引起大家對驗證安全的警覺。
4引言
關於驗證碼的非技術部分的介紹,可以參考以前寫的一篇科普類的文章:
互聯網安全防火牆(1)--網路驗證碼的科普
裡面對驗證碼的種類,使用場景,作用,主要的識別技術等等進行了講解,然而並沒有涉及到任何技術內容。本章內容則作為它的技術補充來給出相應的識別的解決方案,讓讀者對驗證碼的功能及安全性問題有更深刻的認識。
5基本工具
要達到本文的目的,只需要簡單的編程知識即可,因為現在的機器學習領域的蓬勃發展,已經有很多封裝好的開源解決方案來進行機器學習。普通程序員已經不需要了解復雜的數學原理,即可以實現對這些工具的應用了。
主要開發環境:
python3.5
python SDK版本
PIL
圖片處理庫
libsvm
開源的svm機器學習庫
准備原始圖片素材
圖片預處理
圖片字元切割
圖片尺寸歸一化
圖片字元標記
字元圖片特徵提取
生成特徵和標記對應的訓練數據集
訓練特徵標記數據生成識別模型
使用識別模型預測新的未知圖片集
達到根據「圖片」就能返回識別正確的字元集的目標
- def get_feature(img): """
- 獲取指定圖片的特徵值,
- 1. 按照每排的像素點,高度為10,則有10個維度,然後為6列,總共16個維度
- :param img_path:
- :return:一個維度為10(高度)的列表 """
- width, height = img.size
- pixel_cnt_list = []
- height = 10 for y in range(height):
- pix_cnt_x = 0 for x in range(width): if img.getpixel((x, y)) == 0: # 黑色點
- pix_cnt_x += 1
- pixel_cnt_list.append(pix_cnt_x) for x in range(width):
- pix_cnt_y = 0 for y in range(height): if img.getpixel((x, y)) == 0: # 黑色點
- pix_cnt_y += 1
- pixel_cnt_list.append(pix_cnt_y) return pixel_cnt_list
關於環境的安裝,不是本文的重點,故略去。
6基本流程
一般情況下,對於字元型驗證碼的識別流程如下:
7素材准備
7.1素材選擇
由於本文是以初級的學習研究目的為主,要求「有代表性,但又不會太難」,所以就直接在網上找個比較有代表性的簡單的字元型驗證碼(感覺像在找漏洞一樣)。
最後在一個比較舊的網站(估計是幾十年前的網站框架)找到了這個驗證碼圖片。
原始圖:
然後就將圖片素材特徵化,按照libSVM指定的格式生成一組帶特徵值和標記值的向量文
④ 如何利用Python做簡單的驗證碼識別
先是獲取驗證碼樣本。。。我存了大概500個。
用dia測了測每個字之間的間距,直接用PIL開始切。
from PIL import Image
for j in range(0,500):
f=Image.open("../test{}.jpg".format(j))
for i in range(0,4):
f.crop((20+20*i,0,40+20*i,40)).save("test{0}-{1}.jpg".format(j,i+1))
上面一段腳本的意思是把jpg切成四個小塊然後保存
之後就是二值化啦。
def TotallyShit(im):
x,y=im.size
mmltilist=list()
for i in range(x):
for j in range(y):
if im.getpixel((i,j))<200:
mmltilist.append(1)
else:
mmltilist.append(0)
return mmltilist
咳咳,不要在意函數的名字。上面的一段代碼的意思是遍歷圖片的每個像素點,顏色數值小於200的用1表示,其他的用0表示。
其中的im代表的是Image.open()類型。
切好的圖片長這樣的。
只能說這樣切的圖片還是很粗糙,很僵硬。
下面就是分類啦。
把0-9,「+」,」-「的圖片挑好並放在不同的文件夾裡面,這里就是純體力活了。
再之後就是模型建立了。
這里我試了自己寫的還有sklearn svm和sklearn neural_network。發現最後一個的識別正確率高的多。不知道是不是我樣本問題QAQ。
下面是模型建立的代碼
from sklearn.neural_network import MLPClassifier
import numpy as np
def clf():
clf=MLPClassifier()
mmltilist=list()
X=list()
for i in range(0,12):
for j in os.listdir("douplings/douplings-{}".format(i)):
mmltilist.append(TotallyShit(Image.open("douplings/douplings-{0}/{1}".format(i,j)).convert("L")))
X.append(i)
clf.fit(mmltilist,X)
return clf
大概的意思是從圖片源中讀取圖片和label然後放到模型中去跑吧。
之後便是圖像匹配啦。
def get_captcha(self):
with open("test.jpg","wb") as f:
f.write(self.session.get(self.live_captcha_url).content)
gim=Image.open("test.jpg").convert("L")
recognize_list=list()
for i in range(0,4):
part=TotallyShit(gim.crop((20+20*i,0,40+20*i,40)))
np_part_array=np.array(part).reshape(1,-1)
predict_num=int(self.clf.predict(np_part_array)[0])
if predict_num==11:
recognize_list.append("+")
elif predict_num==10:
recognize_list.append("-")
else:
recognize_list.append(str(predict_num))
return ''.join(recognize_list)
最後eval一下識別出來的字元串就得出結果了。。
順便提一句現在的bilibili登陸改成rsa加密了,麻蛋,以前的腳本全部作廢,心好痛。
登陸的代碼。
import time
import requests
import rsa
r=requests.session()
data=r.get("act=getkey&_="+str(int(time.time()*1000))).json()
pub_key=rsa.PublicKey.load_pkcs1_openssl_pem(data['key'])
payload = {
'keep': 1,
'captcha': '',
'userid': "youruserid",
'pwd': b64encode(rsa.encrypt((data['hash'] +"yourpassword").encode(), pub_key)).decode(),
}
r.post("",data=payload)
⑤ 誰來教我怎麼用按鍵精靈做自動識別驗證碼的腳本
識別驗證碼,也就可以識別一些簡單的,復雜點的還是要涉及內存。
不過現在的腳本都是用遠程人工代答的。
學習腳本製作的話,可以網路搜索去學習TC,很不錯的一款腳本開發軟體。
⑥ 誰有自動識別驗證碼輸入驗證碼的腳本
是網頁的YZ碼嗎?
網頁可以使用木頭的網頁自動操作軟體,裡面有YZ碼識別功能呀,能夠自動識別輸入YZ碼。還可以完成刷新,點ji,提交操作!
⑦ 高手指教 驗證碼識別 本人用的按鍵精靈軟體 如何做識別驗證碼腳本,重疊點擊是否能點下一張繼續識別
無法教,製作這個工程價值500以上,驗證碼歪得很利害准確率也不會很高,建議用人工打碼。
⑧ 按鍵精靈腳本中如何自動識別並輸入驗證碼
驗證碼是圖片,畫的東倒西歪的,還有重疊的,有的人都不認識,軟體怎麼會認識呢?可以僱人填驗證碼,這是你不用自己動手的唯一選擇,任何人說他能用軟體做到自動填都是吹
⑨ 如何利用Python做簡單的驗證碼識別
最近在折騰驗證碼識別。最終的腳本的識別率在92%左右,9000張驗證碼大概能識別出八千三四百張左右。好吧,其實是驗證碼太簡單。下面就是要識別的驗證碼。
接下來對圖片進行分割。遍歷圖片中所有像素點,計算每一列像素為0的點的個數(jd)。對於相鄰兩列,若其中一列jd=0,而另一列jd!=0,則可以認為這一列是驗證碼中字元邊界,由此對驗證碼進行分割。這樣分割能達到比較好的效果,分割後得到的字元圖片幾乎能與模板完全相同。
(Width,Height) = img2.size
pix2 = img2.load()
x0 = []
y0 = []for x in range(1,Width):
jd = 0
# print x
for y in range(1,Height): # print y
if pix2[x,y] == 0:
jd+=1
y0.append(jd) if jd > 0:
x0.append(x)#分別對各個字元邊界進行判斷,這里只舉出一個 for a in range(1,Width): if (y0[a] != 0)&(y0[a+1] != 0):
sta1 = a+1
分割完成後,對於識別,目前有幾種方法。可以遍歷圖片的每一個像素點,獲取像素值,得到一個字元串,將該字元串與模板的字元串進行比較,計算漢明距離或者編輯距離(即兩個字元串的差異度),可用Python-Levenshtein庫來實現。
我採用的是比較特徵向量來進行識別的。首先設定了4個豎直特徵向量,分別計算第0、2、4、6列每一列像素值為0的點的個數,與模板進行比較,若小於閾值則認為該字元與模板相同。為了提高識別率,如果通過豎直特徵向量未能識別成功,引入水平特徵向量繼續識別,原理與豎直特徵向量相同。
另外,還可以通過局部特徵進行識別。這對於加入了旋轉干擾的驗證碼有很好效果。由於我寫的腳本識別率已經達到了要求,所以並沒有用到這個。
最後的結果是這樣的:
最終在模板庫只有25條的情況下,識別率在92%左右(總共測試了一萬六千張驗證碼)。好吧,只能說驗證碼太簡單。。
以上。
⑩ 怎麼用按鍵精靈腳本識別驗證碼里的數字(0~9)並同時輸入
簡單的辦法是,把圖分成五個區域來依次識別,畢竟你這個數字的字體是固定的
存好0-9的單數字圖片,找圖就可以了
另外是
把各數字的特徵點找出來,只要查到某點有白色,就可以判斷為該數字,這個你要先把每個數字的特徵點找到,放到畫筆裡面開大像素,慢慢找
說明:特徵點--每個數字都可以看成是5X8的黑白點組成的,每個數字都有一個白點是其它數字在這個位置上沒有的,只要找到這個白點,就是這個數字,指向性強,不易誤判