當我們登錄一些網站註冊的時候,需要進行驗證碼的操作,可以防止刷票,論壇的刷帖等行為。這篇文章給大家講解一下驗證碼的製作,驗證碼分為兩大類,第一類就是短信形式推送的由數字和字母組成的字符串,第二類就是登錄界面的驗證碼圖片。我們依次展開講解
數字和字母組成的字符串驗證碼
一般對於推送短信形式的驗證碼都是由四個數字或者字母構成,數字為0~9,字母為a~z,A~Z。我們使用python的random模塊來生成這個驗證碼字符串
<code>#生成0~9中的數字,a~z小寫字母,A~Z大寫字母 pool = [ str(i) for i in range(9) ] + [ chr(i) for i in range(65,91) ] + [ chr(i) for i in range(97,123) ]/<code>
每次pool中隨機的挑選一個元素,將挑選出來的元素拼接起來就生成了一個驗證碼
<code>for i in range(4): code += random.choice(pool) print code/<code>
注:小寫字母a~z的ascii值範圍是65~90,大寫字母A~Z的ascii值範圍是97~122
如圖,看一下連續生成的五個驗證碼字符串的效果
驗證碼圖片
有的網站可能不是推送短信,而是直接在登錄的界面顯示驗證碼的圖片用來驗證,那麼我們一塊看下驗證碼圖片的製作。python的強大與流行是有原因的,那就是豐富的模塊庫,python中的第三方庫captcha模塊是專門用來生成驗證碼的圖片
我們使用其中captcha模塊中的ImageCaptcha類生成圖形驗證碼,其中generate_image()方法接收一個字符串參數,這個方法返回具有驗證碼內容的image對象,通過show()方法將圖片渲染出來
<code>image = img.generate_image(str) image.show()/<code>
其中generate_image()方法接受的字符串參數,我們在第一部分已經生成過驗證碼的字符串,可以在第一部分的基礎上進行圖片的渲染
這是渲染出來的五個驗證碼圖片
看到這些驗證碼圖片了嗎,有沒有熟悉的感覺
其實驗證碼的作用就是為了辨別這是不是一個機器的操作,可以防止一些爬蟲等機器的行為。我們模擬生成驗證碼的過程並不複雜,這恰恰說明了python的功能確實很強大,擴展的第三方庫種類非常的豐富,在各個領域都能看到python的代碼,所以如果對python感興趣的話,一塊學習吧,一起感受python的魅力