成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別

python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別

熱門標(biāo)簽:如何在地圖標(biāo)注文字 n400電話申請(qǐng)多少錢 地圖標(biāo)注推廣單頁(yè) 長(zhǎng)春人工智能電銷機(jī)器人官網(wǎng) 廈門crm外呼系統(tǒng)如何 ai地圖標(biāo)注 女王谷地圖標(biāo)注 西藏快速地圖標(biāo)注地點(diǎn) 百應(yīng)ai電銷機(jī)器人鄭州

普通滑動(dòng)驗(yàn)證

以http://admin.emaotai.cn/login.aspx為例這類驗(yàn)證碼只需要我們將滑塊拖動(dòng)指定位置,處理起來比較簡(jiǎn)單。拖動(dòng)之前需要先將滾動(dòng)條滾動(dòng)到指定元素位置。

import time
from selenium import webdriver
from selenium.webdriver import ActionChains

# 新建selenium瀏覽器對(duì)象,后面是geckodriver.exe下載后本地路徑
browser = webdriver.Firefox()

# 網(wǎng)站登陸頁(yè)面
url = 'http://admin.emaotai.cn/login.aspx'

# 瀏覽器訪問登錄頁(yè)面
browser.get(url)

browser.maximize_window()

browser.implicitly_wait(5)


draggable = browser.find_element_by_id('nc_1_n1z')

# 滾動(dòng)指定元素位置
browser.execute_script("arguments[0].scrollIntoView();", draggable)

time.sleep(2)

ActionChains(browser).click_and_hold(draggable).perform()

# 拖動(dòng)
ActionChains(browser).move_by_offset(xoffset=247, yoffset=0).perform()

ActionChains(browser).release().perform()

拼圖滑動(dòng)驗(yàn)證

我們以歐模網(wǎng)很多網(wǎng)站使用的都是類似的方式。因?yàn)轵?yàn)證碼及拼圖都有明顯明亮的邊界,圖片辨識(shí)度比較高。所以我們嘗試先用cv2的邊緣檢測(cè)識(shí)別出邊界,然后進(jìn)行模糊匹配,匹配出拼圖在驗(yàn)證碼圖片的位置。

邊緣檢測(cè)

cv2模塊提供了多種邊緣檢測(cè)算子,包括Sobel、Scharr、Laplacian、prewitt、Canny或Marr—Hildreth等,每種算子得出的結(jié)果不同。這里我們用Canny算子,測(cè)試了很多算子,這種效果最好。

我們通過一個(gè)程序調(diào)整一下canny算子的閾值,使得輸出圖片只包含拼圖輪廓。

import cv2

lowThreshold = 0
maxThreshold = 100

# 最小閾值范圍 0 ~ 500
# 最大閾值范圍 100 ~ 1000

def canny_low_threshold(intial):
  blur = cv2.GaussianBlur(img, (3, 3), 0)
  canny = cv2.Canny(blur, intial, maxThreshold)
  cv2.imshow('canny', canny)


def canny_max_threshold(intial):
  blur = cv2.GaussianBlur(img, (3, 3), 0)
  canny = cv2.Canny(blur, lowThreshold, intial)
  cv2.imshow('canny', canny)


# 參數(shù)0以灰度方式讀取
img = cv2.imread('vcode.png', 0)

cv2.namedWindow('canny', cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO)
cv2.createTrackbar('Min threshold', 'canny', lowThreshold, max_lowThreshold, canny_low_threshold)
cv2.createTrackbar('Max threshold', 'canny', maxThreshold, max_maxThreshold, canny_max_threshold)
canny_low_threshold(0)

# esc鍵退出
if cv2.waitKey(0) == 27:
  cv2.destroyAllWindows()

測(cè)試了若干個(gè)圖片發(fā)現(xiàn)最小閾值100、最大閾值500輸出結(jié)果比較理想。

拼圖匹配

我們用cv2的matchTemplate方法進(jìn)行模糊匹配,匹配方法用CV_TM_CCOEFF_NORMED歸一化相關(guān)系數(shù)匹配。

幾種方法算法詳見。

【1】 平方差匹配 method=CV_TM_SQDIFF square dirrerence(error)
這類方法利用平方差來進(jìn)行匹配,最好匹配為0.匹配越差,匹配值越大.
【2】標(biāo)準(zhǔn)平方差匹配 method=CV_TM_SQDIFF_NORMED standard square dirrerence(error)
【3】 相關(guān)匹配 method=CV_TM_CCORR
這類方法采用模板和圖像間的乘法操作,所以較大的數(shù)表示匹配程度較高,0標(biāo)識(shí)最壞的匹配效果.
【4】 標(biāo)準(zhǔn)相關(guān)匹配 method=CV_TM_CCORR_NORMED
【5】 相關(guān)匹配 method=CV_TM_CCOEFF
這類方法將模版對(duì)其均值的相對(duì)值與圖像對(duì)其均值的相關(guān)值進(jìn)行匹配,1表示完美匹配,
-1表示糟糕的匹配,0表示沒有任何相關(guān)性(隨機(jī)序列).
【6】標(biāo)準(zhǔn)相關(guān)匹配 method=CV_TM_CCOEFF_NORMED

canndy_test.py:

import cv2
import numpy as np

def matchImg(imgPath1,imgPath2):

  imgs = []

  # 原始圖像,用于展示
  sou_img1 = cv2.imread(imgPath1)
  sou_img2 = cv2.imread(imgPath2)

  # 原始圖像,灰度
  # 最小閾值100,最大閾值500
  img1 = cv2.imread(imgPath1, 0)
  blur1 = cv2.GaussianBlur(img1, (3, 3), 0)
  canny1 = cv2.Canny(blur1, 100, 500)
  cv2.imwrite('temp1.png', canny1)

  img2 = cv2.imread(imgPath2, 0)
  blur2 = cv2.GaussianBlur(img2, (3, 3), 0)
  canny2 = cv2.Canny(blur2, 100, 500)
  cv2.imwrite('temp2.png', canny2)

  target = cv2.imread('temp1.png')
  template = cv2.imread('temp2.png')

  # 調(diào)整顯示大小
  target_temp = cv2.resize(sou_img1, (350, 200))
  target_temp = cv2.copyMakeBorder(target_temp, 5, 5, 5, 5, cv2.BORDER_CONSTANT, value=[255, 255, 255])

  template_temp = cv2.resize(sou_img2, (200, 200))
  template_temp = cv2.copyMakeBorder(template_temp, 5, 5, 5, 5, cv2.BORDER_CONSTANT, value=[255, 255, 255])

  imgs.append(target_temp)
  imgs.append(template_temp)

  theight, twidth = template.shape[:2]

  # 匹配拼圖
  result = cv2.matchTemplate(target, template, cv2.TM_CCOEFF_NORMED)

  # 歸一化
  cv2.normalize( result, result, 0, 1, cv2.NORM_MINMAX, -1 )

  min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

  # 匹配后結(jié)果畫圈
  cv2.rectangle(target,max_loc,(max_loc[0]+twidth,max_loc[1]+theight),(0,0,255),2)


  target_temp_n = cv2.resize(target, (350, 200))
  target_temp_n = cv2.copyMakeBorder(target_temp_n, 5, 5, 5, 5, cv2.BORDER_CONSTANT, value=[255, 255, 255])

  imgs.append(target_temp_n)

  imstack = np.hstack(imgs)

  cv2.imshow('stack'+str(max_loc), imstack)

  cv2.waitKey(0)
  cv2.destroyAllWindows()



matchImg('vcode_data/out_'+str(1)+'.png','vcode_data/in_'+str(1)+'.png')

我們測(cè)試幾組數(shù)據(jù),發(fā)現(xiàn)準(zhǔn)確率拿來玩玩尚可。max_loc就是匹配出來的位置信息,我們只需要按照位置進(jìn)行拖動(dòng)即可。

完整程序

完整流程

1.實(shí)例化瀏覽器

2.點(diǎn)擊登陸,彈出滑動(dòng)驗(yàn)證框

3.分別新建標(biāo)簽頁(yè)打開背景圖及拼圖

4.全屏截圖后按照尺寸裁剪

5.模糊匹配兩張圖片,獲取匹配結(jié)果位置信息

6.將位置信息轉(zhuǎn)為頁(yè)面上的位移距離

7.拖動(dòng)滑塊到指定位置

import time
import cv2
import canndy_test
from selenium import webdriver
from selenium.webdriver import ActionChains

# 新建selenium瀏覽器對(duì)象,后面是geckodriver.exe下載后本地路徑
browser = webdriver.Firefox()

# 網(wǎng)站登陸頁(yè)面
url = 'https://www.om.cn/login'

# 瀏覽器訪問登錄頁(yè)面
browser.get(url)

handle = browser.current_window_handle

# 等待3s用于加載腳本文件
browser.implicitly_wait(3)

# 點(diǎn)擊登陸按鈕,彈出滑動(dòng)驗(yàn)證碼
btn = browser.find_element_by_class_name('login_btn1')
btn.click()

# 獲取iframe元素,切到iframe
frame = browser.find_element_by_id('tcaptcha_iframe')
browser.switch_to.frame(frame)

time.sleep(1)

# 獲取背景圖src
targetUrl = browser.find_element_by_id('slideBg').get_attribute('src')

# 獲取拼圖src
tempUrl = browser.find_element_by_id('slideBlock').get_attribute('src')


# 新建標(biāo)簽頁(yè)
browser.execute_script("window.open('');")
# 切換到新標(biāo)簽頁(yè)
browser.switch_to.window(browser.window_handles[1])

# 訪問背景圖src
browser.get(targetUrl)
time.sleep(3)
# 截圖
browser.save_screenshot('temp_target.png')

w = 680
h = 390

img = cv2.imread('temp_target.png')

size = img.shape

top = int((size[0] - h) / 2)
height = int(h + ((size[0] - h) / 2))
left = int((size[1] - w) / 2)
width = int(w + ((size[1] - w) / 2))

cropped = img[top:height, left:width]

# 裁剪尺寸
cv2.imwrite('temp_target_crop.png', cropped)

# 新建標(biāo)簽頁(yè)
browser.execute_script("window.open('');")

browser.switch_to.window(browser.window_handles[2])

browser.get(tempUrl)
time.sleep(3)

browser.save_screenshot('temp_temp.png')

w = 136
h = 136

img = cv2.imread('temp_temp.png')

size = img.shape

top = int((size[0] - h) / 2)
height = int(h + ((size[0] - h) / 2))
left = int((size[1] - w) / 2)
width = int(w + ((size[1] - w) / 2))

cropped = img[top:height, left:width]

cv2.imwrite('temp_temp_crop.png', cropped)

browser.switch_to.window(handle)

# 模糊匹配兩張圖片
move = canndy_test.matchImg('temp_target_crop.png', 'temp_temp_crop.png')

# 計(jì)算出拖動(dòng)距離
distance = int(move / 2 - 27.5) + 2

draggable = browser.find_element_by_id('tcaptcha_drag_thumb')

ActionChains(browser).click_and_hold(draggable).perform()

# 拖動(dòng)
ActionChains(browser).move_by_offset(xoffset=distance, yoffset=0).perform()

ActionChains(browser).release().perform()

time.sleep(10)

tips:可能會(huì)存在第一次不成功的情況,雖然拖動(dòng)到了指定位置但是提示網(wǎng)絡(luò)有問題、拼圖丟失??梢赃M(jìn)行循環(huán)迭代直到拼成功為止。通過判斷iframe中id為slideBg的元素是否存在,如果成功了則不存在,失敗了會(huì)刷新拼圖讓你重新拖動(dòng)。

 if(isEleExist(browser,'slideBg')):
    # retry
  else:
    return

def isEleExist(browser,id):
  try:
    browser.find_element_by_id(id)
    return True
  except:
    return False

以上就是python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別的詳細(xì)內(nèi)容,更多關(guān)于python 模擬網(wǎng)站登錄的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python網(wǎng)絡(luò)爬蟲之模擬登錄 自動(dòng)獲取cookie值 驗(yàn)證碼識(shí)別的具體實(shí)現(xiàn)
  • 教你怎么用python批量登錄帶有驗(yàn)證碼的網(wǎng)站
  • python解決12306登錄驗(yàn)證碼的實(shí)現(xiàn)
  • 用python登錄帶弱圖片驗(yàn)證碼的網(wǎng)站
  • 基于Python實(shí)現(xiàn)原生的登錄驗(yàn)證碼詳情

標(biāo)簽:拉薩 內(nèi)江 渭南 廊坊 亳州 黔東 綿陽(yáng) 興安盟

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別》,本文關(guān)鍵詞  python,模擬,網(wǎng)站,登錄,滑塊,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于python 模擬網(wǎng)站登錄——滑塊驗(yàn)證碼的識(shí)別的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日本一区二区动态图| 希岛爱理一区二区三区av高清| www.青青青| 色啪免费观看视频| 日韩av一区二区三区| 91精品综合久久| 亚洲精品极品少妇16p| 国产欧美精品一区二区三区| 亚洲欧美在线免费| 亚洲成av人乱码色午夜| 日本高清不卡在线观看| 女人又爽又黄免费女仆| 高清在线观看免费| 精品久久久久久久大神国产| 亚洲图片小说视频| 国产性猛交普通话对白| 久久青青视频| 97国产视频| 国产欧美日韩综合精品一区二区三区| 国产一区欧美一区| 少妇精品视频一区二区| 欧美5-7sexvideos处| 毛片手机在线观看| av在线精品| 久久一区二区三区四区| 97久久伊人激情网| 在线视频一区二区免费| 91极品尤物在线播放国产| 最新av免费在线| 日本视频在线观看一区二区三区| 精品国产一区二区三区四区精华| 91精品国产777在线观看| 精品久久久久久亚洲国产300| 国语对白做受69| 精品中文在线| 久久er这里只有精品| 微拍福利一区二区| 在线xxxxx| 亚洲国产精品尤物yw在线观看| 最近2019中文字幕在线高清| 在线成人激情视频| 日本一区二区三区电影免费观看| 91麻豆免费视频| 欧美性xxxx极品高清hd直播| 在线成人综合色一区| 91午夜伦伦电影理论片| 丰满少妇又爽又紧又丰满电影| 日韩午夜电影在线观看| av福利在线观看| 26uuu国产电影一区二区| 白白在线精品| 中文人妻熟女乱又乱精品| 麻豆av免费在线| 欧美色视频日本高清在线观看| 青青青国产精品| 91蝌蚪|人| 欧美xoxoxo| 在线三级电影| 国产日韩欧美在线一区| 精品无码久久久久久久动漫| 色狠狠综合天天综合综合| 欧洲成人在线观看| 国产精品久久久久久久久久久久久| 亚洲欧美aⅴ...| 成人有码在线视频| av理论在线观看| www网站在线观看| 你懂的在线观看视频| 给我免费播放片在线观看| 人人干人人草| 成人免费黄色网| 国产又大又黄又粗的视频| 亚洲成人精品久久| 欧美福利影院| 波多野结衣中文字幕一区二区三区| 国产精品青草久久久久福利99| 日本一区免费观看| 男人天堂2017| 久久视频免费在线播放| 国产三级三级三级精品8ⅰ区| 久久综合五月天婷婷伊人| 国产伊人网av.| 日韩大陆毛片av| 欧美jizz19性欧美| 国产精品欧美经典| 久久久久国产一区二区三区| 午夜精品久久久久久久99水蜜桃| 久草在线网址| 日本一二三区不卡| 狠狠鲁狠狠操| 亚洲女优在线观看| 国产69精品久久久久久| 国产jizz18女人高潮| 一二三四国产精品| 黄页视频在线免费观看| 18禁免费无码无遮挡不卡网站| 99精品在线免费在线观看| 国产5g影院天天爽天天看| 激情网址大全| 国产三级精品三级| 国产日产欧产精品推荐色| 欧美aⅴ99久久黑人专区| 精品国产一区二区三区久久影院| 久久精品免费看| 欧美日韩精品免费观看| 川上优av一区二区线观看| 日本在线观看网站| 激情综合视频| 天堂成人在线观看| 不卡av在线网站| 最近2019中文字幕第三页视频| 成人天堂资源www在线| 精品在线视频一区二区三区| 欧美精品一区二区三区在线看午夜| 久久午夜鲁丝片| 青青草视频在线视频| 国产免费观看久久黄| 亚洲精品美女| 毛茸茸free性熟hd| 免费av成人在线| 永久免费未满蜜桃| 欧美乱偷一区二区三区在线| 欧美野外猛男的大粗鳮| 免费vip影院| 阿v免费在线观看| 日韩av男人的天堂| 成人av毛片| 欧美黄色网络| 午夜久久久久久| 亚洲免费黄色录像| 久久久久国产精品午夜一区| 日日草天天草| 色天堂在线视频| 99国产精品私拍| 免费日韩av电影| 亚洲自拍偷拍色片视频| 深夜成人在线| 天堂中文字幕在线| 日本一区二区三区dvd视频在线| 男人日女人bb视频| 91精品人妻一区二区三区蜜桃2| 久久亚洲午夜电影| 欧美国产精品一二三| 天天综合视频在线观看| 天堂av网手机版| 日日干天夜夜| 毛片在线导航| 超碰网在线观看| 国产字幕视频一区二区| 欧美在线视频免费观看| 国产成人精品在线视频| 久久精品国产av一区二区三区| 1024精品视频| 日本高清久久久| 成人性色生活片免费看爆迷你毛片| 欧美xxxx做受欧美.88| 成人免费看片网站| 久久久www成人免费精品张筱雨| 亚洲综合在线电影| 美女网站免费观看| 夜夜嗨网站十八久久| 国产又粗又猛视频免费| 久久久国产精品亚洲一区| 精品视频在线免费| 欧美日韩一区综合| yy111111少妇嫩草影院| 亚洲国产精品二区| 高清日韩av电影| 在线观看亚洲精品福利片| 成人在线黄色| 亚洲一区二区三区爽爽爽爽爽| 久久伊人精品| 777片理伦片在线观看| 毛毛毛毛毛毛毛片123| 亚洲成色999久久网站| 999这里只有精品| 成人免费直播在线| 亚洲精品福利资源站| 成人综合在线视频| 成人中心免费视频| 无码无套少妇毛多18pxxxx| 波多野结衣中文字幕一区| 亚洲国产91| 国产精品第四页| 国产aⅴ精品一区二区四区| 成人av一级片| 亚洲一区二区三区四区精品| 在线精品视频播放| 新的色悠悠久久久| 欧美性猛交xxxxxx富婆| 色老板视频在线观看| 色屁屁www国产馆在线观看| 国产日产欧美精品| 欧美人与性动交xxⅹxx| 色在线免费视频| 亚洲综合国产激情另类一区| 91精品福利观看| 国产精品丝袜久久久久久不卡| 亚洲激情中文字幕| 欧美爱爱免费视频| 欧美国产先锋| 欧美一区国产在线| 1069视频| 电影一区二区在线观看| 天天射—综合中文网| 女同互忝互慰dv毛片观看| 国产女人18毛片水真多18精品| 欧美精品午夜视频| 中文字幕亚洲在线| 亚洲三级在线免费观看| 国产大学生粉嫩无套流白浆| 欧美视频一区在线| 99热在这里有精品免费| 四季av中文字幕| 欧美亚洲国产bt| 久久亚洲精品中文字幕| 天天综合天天干| 在线观看国产亚洲| 成本人h片动漫网站在线观看| 国产精品视频一区二区三区不卡| av大片免费观看| 1区2区在线观看| 国语对白中文字幕| 亚洲美女网站| 国产精品115| 99久久这里只有精品| 国产日韩欧美三级| 欧美亚洲高清| 91精品视频免费看| 中日韩美女免费视频网站在线观看| 成品网站w灬+源码1| 久久综合伊人77777蜜臀| 91视视频在线直接观看在线看网页在线看| 国产综合色一区二区三区| 欧美三级一区二区| 亚洲一区二区在线免费观看视频| 999久久久91| 美女精品视频在线| 最新国产精品久久| 黄色a级片免费看| 综合在线影院| www在线观看播放免费视频日本| 在线免费视频福利| 国产一区二区三区在线| 国产精品国模大尺度私拍| 日韩一区二区三区在线观看视频| japanesexxxx在线播放| 欧洲大片精品免费永久看nba| 香蕉影院在线| 91超碰国产在线| 日韩视频亚洲视频| 日本欧美韩国| 亚洲激情自拍视频| 中文字幕乱码亚洲精品一区| 天天综合入口| 男人添女人荫蒂免费视频| 少妇高潮 亚洲精品| 日本中文字幕中出在线| 亚洲一区二区3| 亚洲在线观看视频网站| 国产精品免费视频久久久| 国产传媒视频在线| 久久精品www| 久久久午夜视频| 折磨小男生性器羞耻的故事| 精品精品国产国产自在线| 亚洲电影网站| 欧美另类69xxx| 四虎永久免费| 日韩爱爱小视频| av手机天堂网| 欧美在线一级va免费观看| 貂蝉被到爽流白浆在线观看| 91最新在线视频| 成人va在线观看| 午夜精品久久久久久久久久蜜桃| 亚洲一区在线视频| 精品1区2区3区4区| 久久久久女教师免费一区| 欧美精品一区三区在线观看| 成熟亚洲日本毛茸茸凸凹| 激情六月天婷婷| 精品中文字幕视频| 日韩精品一区二区三区老鸭窝| 偷拍与自拍一区| 91精品一久久香蕉国产线看观看| 99精品欧美| 无码国产精品一区二区免费16| 欧美日韩在线第一页| 你懂的国产精品永久在线| 欧美xxxx老人做受| 欧美v亚洲v综合ⅴ国产v| 欧美一级电影久久| 久久久久女教师免费一区| 亚洲综合精品视频| 亚洲日本精品一区| 欧美日韩va| 91精品一区二区三区蜜桃| h片精品在线观看| 欧美伊人亚洲伊人色综合动图| 国产女优裸体网站| 久久青草久久| 久久蜜桃av一区二区天堂| 毛片视频免费观看| 日本三级视频在线| 欧美 国产 综合| 色视频在线观看在线播放| 极品日韩久久| 国产一区二区三区18| 波多一区二区| 国产又猛又黄又爽| 在线看免费av| 青青草久久伊人| 1000部精品久久久久久久久| 午夜日韩激情| 国产精品视频精品视频| 日韩极品少妇| 一区二区三区四区乱视频| 亚洲毛片在线播放| 日本www视频| av在线女优影院| 亚州av综合色区无码一区| www.国产精品.com| 精品在线观看国产| 懂色av蜜臀av粉嫩av喷吹| 国产视频不卡| 狠狠狠狠狠狠狠| 欧美精品一区二区三|