Python入門:驗證碼破解(二)
一、定位驗證碼元素
二、下載驗證圖片
三、破解驗證碼
#test.py
from selenium import webdriver
import os
import urllib
from PIL import Image
import pytesseract
import time
driver = webdriver.PhantomJS()
driver.get("http://10.70.18.33:8083/shopxx-mobile/password/find.jhtml")
pic_url = driver.find_element_by_id("captchaImage").get_attribute('src' )
pic_name = pic_url.split("=")[1] + '.jpeg'
pic_path = os.getcwd().split(os.path.basename(os.getcwd()))[0] + 'img/'
def loadPic(pic_url,pic_path,pic_name):
urllib.request.urlretrieve(pic_url,pic_path + pic_name)
def convert(pic_path,pic_open):
t = str(time.time()).split('.')[0]
imgrey = pic_open.convert('L' )
threshold = 150
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
#用列表生成一個圖片
out = imgrey.point(table,'1')
out.save(pic_path + (pic_name.split('.')[0] + '--' + t + '.jpeg'),'jpeg')
a = pic_path + (pic_name.split('.' )[0] + '--' + t + '.jpeg')
#用cv2讀取新圖片,0是flags欄位,代表灰色,還可以是1,代表是彩色
img = Image.open(a,'r')
vcode = pytesseract.image_to_string(img)
print(vcode)
return vcode
if __name__ == '__main__':
loadPic(pic_url,pic_path,pic_name)
pic_open = Image.open(pic_path + pic_name,'r')
convert(pic_path,pic_open)
封裝及可移植性修改
from selenium import webdriver
import os
import urllib
from PIL import Image
import pytesseract
import time
'''
driver = webdriver.PhantomJS()
driver.get("http://10.70.18.33:8083/shopxx-mobile/password/find.jhtml")
pic_url = driver.find_element_by_id("captchaImage").get_attribute('src')
pic_name = pic_url.split("=")[1] + '.jpeg'
pic_path = os.getcwd().split(os.path.basename(os.getcwd()))[0] + 'img/'
t = str(time.time()).split('.')[0]
'''
class Ver(object):
'''
給出不同的url地址和驗證碼的元素定位名(此元素定位名應該是id)
'''
def __init__(self,url,ele):
'''
:param url: 是目標驗證碼下載url
:param ele: 是該url下的驗證碼圖片html的id元素名
:return:
'''
self.driver = webdriver.PhantomJS()
self.driver.get(url)
self.pic_url = self.driver.find_element_by_id(ele).get_attribute('src')
self.pic_name = self.pic_url.split("=")[1] + '.jpeg'
#self.pic_path = os.getcwd().split(os.path.basename(os.getcwd()))[0] + 'img/'
self.pic_path = os.path.dirname(os.getcwd()) + '/img/'
if not os.path.exists(self.pic_path):
os.mkdir(self.pic_path)
self.t = str(time.time()).split('.')[0]
def loadPic(self):
'''
驗證碼圖片下載
'''
urllib.request.urlretrieve(self.pic_url,self.pic_path + self.pic_name)
self.pic_open = Image.open(self.pic_path + self.pic_name,'r')
def convert(self):
'''
驗證碼識別
'''
imgrey = self.pic_open.convert('L')
threshold = 150
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
#用列表生成一個圖片
out = imgrey.point(table,'1')
out.save(self.pic_path + (self.pic_name.split('.')[0] + '--' + self.t + '.jpeg'),'jpeg')
a = self.pic_path + (self.pic_name.split('.')[0] + '--' + self.t + '.jpeg')
#用cv2讀取新圖片,0是flags欄位,代表灰色,還可以是1,代表是彩色
img = Image.open(a,'r')
vcode = pytesseract.image_to_string(img)
print(vcode)
return vcode
if __name__ == '__main__':
aa = Ver("http://10.70.18.33:8083/shopxx-mobile/password/find.jhtml","captchaImage")
aa.loadPic()
aa.convert()
相關推薦
Python入門:驗證碼破解(二)
一、定位驗證碼元素 二、下載驗證圖片 三、破解驗證碼 #test.py from selenium import webdriver import os import urllib from PIL import Image import pytes
tensorflow實現驗證碼識別(二)
tfrecords 由於有個5W張圖片的訓練集,如果是placeholder的方式來把資料餵給graph的話,那可真蠢。。所以不如用tensorflow官方推薦的tfrecords來進行IO。這種IO方式主要是兩步: 1.先把資料dump成tfrecords檔案 2.用佇列來把資料餵
Python教程:進擊機器學習(二)--Python
如果有Python基礎或者有學習過的,可以直接跳過本教程。 本教程旨在快速認識和了解Python,作為機器學習的前調\壞笑。 瞭解Python Python作為一個高階程式語言,它有哪一些特性: * 不同於C語言(編譯型語言),Python是一
python入門:小白總結(乾貨)
作為一個剛剛用過幾回python的小白,看到室友和同學都要開始學習python,就做了一點總結,轉載了各種部落格,由衷感謝各位的分享,也希望這份總結可以對剛剛接觸python的同學有所幫助。 1、一張圖學會python語法 python的基礎: 2、python的優勢
Spring源碼:IOC原理解析(二)
main 節點 定義 nat ner multicast esp loading more 版權聲明:本文為博主原創文章,轉載請註明出處,歡迎交流學習! 接著上一章節的內容,我們來分析當new一個FileSystemXmlApplicationContext對
Spark源代碼分析之六:Task調度(二)
oge 3.4 總結 utili filter 相關 .com ram 順序 話說在《Spark源代碼分析之五:Task調度(一)》一文中,我們對Task調度分析到了DriverEndpoint的makeOffers()方法。這種方法針對接收到的Re
kaggle入門項目:Titanic存亡預測(二)數據處理
理解 ima 簡單 標識符 數據處理 let ger 好的 元素 原kaggle比賽地址:https://www.kaggle.com/c/titanic 原kernel地址:A Data Science Framework: To Achieve 99% Accuracy
智能合約從入門到精通:Lib工具庫(二)
空間 creator arr 進行 符號 libjson sos 介紹 ray 簡介:上一節,我們介紹智能合約開發中常用的Lib工具庫的第一部分。由於內容較長,工具庫我們將分兩部分介紹,本文將介紹Lib工具庫的第二部分:LibJson 、LibStack和LibLog。Li
兄弟連區塊鏈入門教程eth源碼分析p2p-udp.go源碼分析(二)
targe man sys who endpoint exp tex its too ping方法與pending的處理,之前談到了pending是等待一個reply。 這裏通過代碼來分析是如何實現等待reply的。pending方法把pending結構體發送給addpen
Python基礎【day03】:字典進階(二)
本節內容 深淺拷貝 迴圈方式 字典常用方法總結 一、深淺拷貝 列表、元組、字典(以及其他) 對於列表、元組和字典而言,進行賦值(=)、淺拷貝(copy)、深拷貝(deepcopy)而言,其記憶體地址是變化不通的。 賦值(=) 賦值只是建立一個變數,該變數指向原來的記憶體地址
【python】爬蟲篇:python對於html頁面的解析(二)
我,菜雞,有什麼錯誤,還望大家批評指出!! 前言: 根據自己寫的上一篇文章,我繼續更第二部分的內容,詳情請點選如下連結 【python】爬蟲篇:python連線postgresql(一):https://blog.csdn.net/lsr40/article/details/833118
《用Python玩轉資料》專案—線性迴歸分析入門之波士頓房價預測(二)
接上一部分,此篇將用tensorflow建立神經網路,對波士頓房價資料進行簡單建模預測。 二、使用tensorflow擬合boston房價datasets 1、資料處理依然利用sklearn來分訓練集和測試集。 2、使用一層隱藏層的簡單網路,試下來用當前這組超引數收斂較快,準確率也可以。 3、啟用函式
《用Python玩轉數據》項目—線性回歸分析入門之波士頓房價預測(二)
store mil ima 超參數 eval app lac on() break 接上一部分,此篇將用tensorflow建立神經網絡,對波士頓房價數據進行簡單建模預測。 二、使用tensorflow擬合boston房價datasets 1、數據處理依然利用sklearn
Spring源碼解析(二):obtainFreshBeanFactory
new 創建 get img inf context bstr 出現 關閉 spring的ApplicationContext容器的初始化流程主要由AbstractApplicationContext類中的refresh方法實現。 而refresh()方法中獲取新工廠的主要
python正則表示式詳解(二):特殊字元序列
內容提要: 說明:僅供學習交流使用 二、python正則表示式中的特殊字元序列 \number \A \Z \b \B \d \D \s \S \w \W \\ 2.1\number 以相同的序號代表的組所匹配的內容
Chrome外掛:本地程式實現驗證碼破解(瀏覽器與本地程序通訊)
利用chrome呼叫本地程式破解圖片驗證碼background.js var port = null, tabId, fname = "vcode.chrome.v1.item.01"; //對應登錄檔HKEY_CURRENT_USER\Software\Google\Chrome\Nat
Spring Boot + Spring Cloud 實現許可權管理系統 後端篇(十七):登入驗證碼實現(Captcha)
<el-form-item > <el-col :span="12"> <el-form-item prop="captcha"> <el-input type="test" v-model="loginForm.captcha" auto-
python手記(五):requests寫爬蟲(二):bs4處理文字資料
人生無趣且不易,一起找點樂子吧。歡迎評論,和文章無關的也可以。 上篇介紹了requests的基本用法,最後我們獲得了網頁的原始碼,並將其存到了文字中: 但是,我們需要的並不是全部的程式碼,我們需要的是文章的那一部分。其實requ
Scala入門到精通——第七節:類和物件(二)
本節主要內容 單例物件 伴生物件與伴生類 apply方法 應用程式物件 抽象類 單例物件 在某些應用場景下,我們可能不需要建立物件,而是想直接呼叫方法,但是Scala語言並不支援靜態成員,Scala通過單例物件來解決該問題。單例物件的建立方式如下:
滑動驗證碼破解(selenium+PIL)-嗶哩嗶哩bilibili
#本文思路通過selenium模擬瀏覽器空值瀏覽器進行驗證碼的操作,利用PIL圖片處理工具進行對圖片處理,識別到圖片要滑動過去的陰影距離 小知識點: 1、ActionChains方法是捕捉控制滑鼠進行操作,click_and_hold 點選不放,move_by_offset 按座