自動識別圖形驗證碼
我先講講我是怎麼實現站外提交留言到一個網站的程式。
這個網站的留言版大致如下:
我一看這種簡單的4位數字驗證碼,馬上就感覺到有戲了。直覺告訴我讓電腦來識別這些圖片驗證碼據對簡單o(∩_∩)o...
首先我馬上在這個頁面用右鍵選單看原始碼
知道驗證碼獲取頁面後 你可以直接用 http://www.XXXX.com/imgchk/validatecode.asp 這樣去訪問你會發現你開啟的就是一個驗證碼圖片。
對的其實返回的就是圖片檔案的2進位制流而已。接著先用右鍵儲存一張驗證碼的圖片。因為要開始分析這張圖片了,什麼用什麼工具?PhotoShop????不用就一般的畫圖工具就可以了。我們要搞清楚的是 這幾個數字分別佔幾個畫素就可以了。
可以看出 一個數字5*9 也就是45個畫素。恩 這就可以了 另外我們可以看出 預設區域就是白色
(姑且說是白色因為我們肉眼看就是白色)
那麼我的程式識別原理就是固定去掃描這45個畫素點。看每個點的顏色是不是和預設的顏色一致
一致的話就標記為0 ,不一致就標記為1 。
如一個數子是2 那麼我的程式掃描出來的影象就應該是:
011110
100001
000001
000001
000010
000100
001000
010000
100000
111111
如果一個數字是7那麼掃描出來的影象就是:
111111
100001
000010
000010
000100
000100
001000
001000
010000
010000
恩,就這麼簡單呵呵。下面給出影象 掃描的java類 (不好意思,在我會的語言裡面除開java就剩sql了)
package com.util;
//~--- JDK imports ------------------------------------------------------------
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.*;
import javax.imageio.*;
import
/** *//**
* 登陸驗證圖片轉換為數字
*
*
* @version 1.0, 08/04/20
* @author 張健瀅
*/
publicclass ImgIdent ...{
// 數字字元位元表
privatefinallong[][] NUMERIC =...{
...{ 512104545, 562436190 }, // '0'
...{ 148931080, 136348222 }, // '1'
...{ 511971394, 69273663 }, // '2'
...{ 511971406, 17045598 }, // '3'
...{ 35168914, 586948743 }, // '4'
...{ 1065486398, 17045598 }, // '5'
...{ 239208494, 830871646 }, // '6'
...{ 1065623684, 69239824 }, // '7'
...{ 512104542, 562436190 }, // '8'
...{ 512104547, 486805660 }
}; // '9'
// 字框高
privateint intCharHeight =10;
// 字框橫向間隙
privateint intCharSpaceH =5;
// 字框縱向間隙
privateint intCharSpaceY =1;
// 字框寬
privateint intCharWidth =5;
privateint IntImgHeight;
private BufferedImage img;
privateint intBgColor;
privateint intCharColor;
privateint intImgWith;
privateint intMaxX;
privateint intMaxY;
privateint intMinX;
privateint intMinY;
// 座標原點
private Point pOrigin;
private String strNum;
/** *//**
* Constructs ...
*
*
* @param img
*
* @throws IOException
*/
public ImgIdent(BufferedImage img) throws IOException ...{
this.img = img;
init();
}
/** *//**
* 建構函式
* @param file 本地檔案
* @throws IOException
*/
public ImgIdent(File file) throws IOException ...{
img = ImageIO.read(file);
init();
}
/** *//**
* 建構函式
* @param url 遠端檔案
* @throws IOException
*/
public ImgIdent(URL url) throws IOException ...{
img = ImageIO.read(url);
init();
}
/** *//**
* 類初始工作
*/
privatevoid init() ...{
// 得到圖象的長度和寬度
intImgWith = img.getWidth();
IntImgHeight = img.getHeight();
// 得到圖象的背景顏色
intBgColor = img.getRGB(7, 4);
// System.out.println(intBgColor);
// 初始化圖象原點座標
pOrigin =new Point(0, 0);
}
/** *//**
* Method description
*
*/
privatevoid getBaseInfo() ...{
System.out.println(intBgColor +"|"+ intCharColor);
System.out.println(intMinX +"|"+ intMinY +"|"+ intMaxX +"|"+ intMaxY);
}
相關推薦
自動識別圖形驗證碼
現在大多數網站都採用了驗證碼來防止暴力破解或惡意提交。但驗證碼真的就很安全嗎?真的就不能被機器識別??我先講講我是怎麼實現站外提交留言到一個網站的程式。這個網站的留言版大致如下:我一看這種簡單的4位數字驗證碼,馬上就感覺到有戲了。直覺告訴我讓電腦來識別這些圖片驗證碼據對簡單o
利用Python識別圖形驗證碼!實現自動登入!室友驚訝的合不攏嘴!
驗證碼有圖形驗證碼、極驗滑動驗證碼、點觸驗證碼、宮格驗證碼。這回重點講講圖形驗證碼的識別。 雖說圖形驗證碼最簡單,但是對於我這等新手,還是要苦學一番。首先尋找測試網站,網站選的是如雲閣小說網,小網站不怕被封。他們的驗證碼一般如下:
Python識別圖形驗證碼,實現自動登陸(附視訊教程)
驗證碼有圖形驗證碼、極驗滑動驗證碼、點觸驗證碼、宮格驗證碼。這回重點講講圖形驗證碼的識別。 雖說圖形驗證碼最簡單,但是對於我這等新手,還是要苦學一番。首先尋找測試網站,網站選的是如雲閣小說網,小網站不怕被封。他們的驗證碼一般如下:視訊教程: &n
驗證碼識別——圖形驗證碼
img tex 下載 分享 int class 驗證碼 pre imp 先找了一個簡單的圖形驗證碼進行測試,比如知網,從網頁裏把驗證碼下載到本地 進行簡單的灰度處理和二值化處理,能夠提高不少識別正確率 驗證碼: 代碼: 1 import tess
[Python][爬蟲]利用OCR技術識別圖形驗證碼
releases 查找表 方法 jpg threshold tex ima 輸出 sim ocr圖片識別通常可以利用tesserocr模塊,將圖片中內容識別出來並轉換為text並輸出 Tesserocr是python的一個OCR識別庫,是對tesseract做的一層pyth
利用pytesser識別圖形驗證碼
簡單識別 1.一般思路 驗證碼識別的一般思路為: 圖片降噪 圖片切割 影象文字輸出 1.1 圖片降噪 所謂降噪就是把不需要的資訊通通去除,比如背景,干擾線,干擾畫素等等,只剩下需要識別的文字,讓圖片變成2進位制點陣最好。 對於彩色背景
mac使用python識別圖形驗證碼
前言 最近在研究驗證碼相關的操作,所以準備記錄下安裝以及使用的過程。雖然之前對驗證碼的破解有所瞭解的,但是之前都是簡單使用之後就不用了,沒有記錄一個詳細的過程,所以後面再用起來也要重新從網上查詢資料比較麻煩,所以這裡準備對研究過程的關鍵點做一個記錄。 首先這篇文章,主要是研究圖形驗證碼,後期會不定時拓展內
網路爬蟲以及自動化測試中圖形驗證碼識別解決思路以及方法
前言 做自動化測試的朋友都知道圖形驗證碼在整個自動化執行過程中,很可能是阻礙推進的問題,可以採用萬能驗證碼(開發哥哥會流出一個供自動化測試用的),如果不通過開發預留,有以下解決方案。 解決思路 1.python3自帶光學字元識別模組tesserocr與pytesseract,可以識別簡單驗證碼; 2.稍
python爬蟲時圖形驗證碼識別( tesserocr)
window環境下: 第一步:安裝tesseract:教程如下:https://www.cnblogs.com/jianqingwang/p/6978724.html 第二步:安裝 tesserocr : 到這裡下載whl版本 &
Python實現自動登入,強行突破圖形驗證碼!
驗證碼有圖形驗證碼、極驗滑動驗證碼、點觸驗證碼、宮格驗證碼。這回重點講講圖形驗證碼的識別。 學習Python中有不明白推薦加入交流群 號:516107834 &
295day(圖形驗證碼的識別,極驗滑動驗證碼識別原理)
《2018年7月24日》【連續295天】 標題:圖形驗證碼的識別,極驗滑動驗證碼識別原理; 內容: 圖形驗證碼: 測試: import tesserocr from PIL import Image image =Image.open('code.jpg')
圖形驗證碼識別技術
阻礙我們爬蟲的。有時候正是在登入或者請求一些資料時候的圖形驗證碼。因此這裡我們講解一種能將圖片翻譯成文字的技術。將圖片翻譯成文字一般被成力光學文字R別( optical Character Recognition),簡寫OCR。實現OCR的庫不是很多,特別是開源的 因為這塊存在一定的技術壁(需要大量
Python爬蟲之自動登入與驗證碼識別
轉自:http://blog.csdn.net/tobacco5648/article/details/50640691 在用爬蟲爬取網站資料時,有些站點的一些關鍵資料的獲取需要使用賬號登入,這裡可以使用requests傳送登入請求,並用Session物件來自動處理相關
Python驗證碼識別:利用pytesser識別簡單圖形驗證碼
https://my.oschina.net/jhao104/blog/647326?fromerr=xJxwPW5X 一、探討 識別圖形驗證碼可以說是做爬蟲的必修課,涉及到計算機圖形學,機器學習,機器視覺,人工智慧等等高深領域…… 簡單地說,計算機圖形學的主要
Python3.4---實戰專案-自動下載圖片驗證碼,並儲存到專門資料夾,使用圖片驗證碼庫識別,然後打印出來
Python3.4—實戰專案-自動下載圖片驗證碼,並儲存到專門資料夾,使用圖片驗證碼庫識別,然後打印出來 1、環境部署 參考文章《使用Python識別圖片驗證碼》內容,製造好圖片驗證碼識別庫msweb1.dat 1.1、對圖片驗證碼隨時下載的URL地址
圖形驗證碼的識別
sso div rda har poi The tps pan 掃描 OCR 技術: (1) 在爬蟲過程中,難免會遇到各種各樣的驗證碼,而大多數驗證碼還是罔形驗證碼,這時候我們可以直接用 OCR 來識別(2) OCR ,即 Optical Character Recogn
python3 網路爬蟲開發實戰 win10環境下 圖形驗證碼識別需要安裝的工具及地址
先下載安裝tesseract exe檔案 tesseract exe檔案安裝下載地址:https://digi.bib.uni-m
Jfinal框架登陸頁面的圖形驗證碼
ima 獲得 希望 刷新 body 是否 異步刷新 tor console 本文轉自,http://www.bubuko.com/infodetail-720511.html 驗證碼的工具類, 這個jfinal自帶的也有,但是下面這個和Jfinal自帶的有一點點小的改動
Tornado框架實現圖形驗證碼功能
tor length turn 黑客 body world 工作流 params fun 圖形驗證碼是項目開發過程中經常遇到的一個功能,在很多語言中都有對應的不同形式的圖形驗證碼功能的封裝,python 中同樣也有類似的封裝操作,通過繪制生成一個指定的圖形數據,讓前端HTM
java圖形驗證碼生成工具類及web頁面校驗驗證碼
組合 line des resp word buffere 需要 case ali 最近做驗證碼,參考網上案例,發現有不少問題,特意進行了修改和完善。驗證碼生成器:[ht