真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python爬蟲怎么破解滑塊驗證碼

這篇文章主要介紹“Python爬蟲怎么破解滑塊驗證碼”,在日常操作中,相信很多人在Python爬蟲怎么破解滑塊驗證碼問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python爬蟲怎么破解滑塊驗證碼”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)服務(wù)項目包括通州網(wǎng)站建設(shè)、通州網(wǎng)站制作、通州網(wǎng)頁制作以及通州網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,通州網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到通州省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

1、啟動selenium,獲取驗證碼圖片,方便查看預(yù)覽

from selenium import webdriver
import time
import base64
from PIL import Image
from io import BytesIO
from selenium.webdriver.support.ui import WebDriverWait
 
def checkVeriImage(driver):
  # 等待畫布加載完畢
    WebDriverWait(driver, 5).until(
        lambda driver: driver.find_element_by_css_selector('.geetest_canvas_bg.geetest_absolute'))
    time.sleep(1)
    # 獲取有缺口的圖片
    im_info = driver.execute_script(
        'return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png");')
    # 得到base64編碼的圖片信息
    im_base64 = im_info.split(',')[1]
    # 轉(zhuǎn)為bytes類型
    im_bytes = base64.b64decode(im_base64)
    with open('./tempbg.png', 'wb') as f:
        # 保存圖片到本地,方便查看預(yù)覽
        f.write(im_bytes)
        
    image_data = BytesIO(im_bytes)
    bgImage = Image.open(image_data)
    # 計算offsetx的長度
    offsetX = VerifyImageUtil().getVerticalLineOffsetX(bgImage)
    # 獲取滑塊按鈕
    eleDrag = driver.find_element_by_css_selector(".geetest_slider_button")
    action_chains = webdriver.ActionChains(driver)
    # 拖動滑塊按鈕,注意滑塊距離左邊有 5~10 像素左右誤差
action_chains.drag_and_drop_by_offset(eleDrag,offsetX-10,0).perform()

2、修正拖動滑塊動作太快的問題。

使用 action_chains.move_by_offset(10,0)

action_chains = webdriver.ActionChains(self.driver)
# 點擊,準備拖拽
action_chains.click_and_hold(source)
action_chains.pause(0.2)
action_chains.move_by_offset(targetOffsetX-10,0)
action_chains.pause(0.6)
action_chains.move_by_offset(10,0)
action_chains.pause(0.6)
action_chains.release()
action_chains.perform()

3、也可以進行拖拽間隔時間和拖拽次數(shù)、距離的隨機化

 def simulateDragX(self, source, targetOffsetX):
        """
        模仿人的拖拽動作:快速沿著X軸拖動(存在誤差),再暫停,然后修正誤差
        防止被檢測為機器人,出現(xiàn)“圖片被怪物吃掉了”等驗證失敗的情況
        :param source:要拖拽的html元素
        :param targetOffsetX: 拖拽目標x軸距離
        :return: None
        """
        action_chains = webdriver.ActionChains(self.driver)
        # 點擊,準備拖拽
        action_chains.click_and_hold(source)
        # 拖動次數(shù),二到三次
        dragCount = random.randint(2, 3)
        if dragCount == 2:
            # 總誤差值
            sumOffsetx = random.randint(-15, 15)
            action_chains.move_by_offset(targetOffsetX + sumOffsetx, 0)
            # 暫停一會
            action_chains.pause(self.__getRadomPauseScondes())
            # 修正誤差,防止被檢測為機器人,出現(xiàn)圖片被怪物吃掉了等驗證失敗的情況
            action_chains.move_by_offset(-sumOffsetx, 0)
        elif dragCount == 3:
            # 總誤差值
            sumOffsetx = random.randint(-15, 15)
            action_chains.move_by_offset(targetOffsetX + sumOffsetx, 0)
            # 暫停一會
            action_chains.pause(self.__getRadomPauseScondes())
 
            # 已修正誤差的和
            fixedOffsetX = 0
            # 第一次修正誤差
            if sumOffsetx < 0:
                offsetx = random.randint(sumOffsetx, 0)
            else:
                offsetx = random.randint(0, sumOffsetx)
 
            fixedOffsetX = fixedOffsetX + offsetx
            action_chains.move_by_offset(-offsetx, 0)
            action_chains.pause(self.__getRadomPauseScondes())
 
            # 最后一次修正誤差
            action_chains.move_by_offset(-sumOffsetx + fixedOffsetX, 0)
            action_chains.pause(self.__getRadomPauseScondes())
 
        else:
            raise Exception("莫不是系統(tǒng)出現(xiàn)了問題?!")
 
        action_chains.release().perform()

到此,關(guān)于“Python爬蟲怎么破解滑塊驗證碼”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享題目:Python爬蟲怎么破解滑塊驗證碼
標題網(wǎng)址:http://weahome.cn/article/pcjopo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部