1. 程式人生 > >Python入門:驗證碼破解(二)

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 按座