整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Element UI 組件庫提供了豐富的UI組件

          Element UI 組件庫提供了豐富的UI組件

          lement UI 組件庫提供了豐富的UI組件,涵蓋了頁面布局、表單、數據展示、導航、反饋等各個方面,能夠幫助開發者快速構建現代化的用戶界面。

          布局組件

          Container: 布局容器,用于劃分頁面區域。

          Flexbox: 布局容器,使用 flexbox 布局屬性進行布局。

          Grid: 布局容器,使用 CSS Grid 布局屬性進行布局。

          Spacer: 間隔塊,用于控制元素之間的間距。

          表單組件

          Form: 表單組件,用于收集用戶輸入的數據。

          FormItem: 表單項組件,用于表示表單中的一個字段。

          Input: 輸入框組件,用于用戶輸入文本。

          Select: 下拉選擇框組件,用于用戶選擇選項。

          Checkbox: 復選框組件,用于用戶選擇多個選項。

          Radio: 單選框組件,用于用戶選擇一個選項。

          Switch: 開關組件,用于用戶開啟或關閉功能。

          Slider: 滑動條組件,用于用戶選擇數值。

          Upload: 上傳組件,用于用戶上傳文件。

          數據展示組件

          Table: 表格組件,用于展示數據。

          Tree: 樹形控件組件,用于展示層級數據。

          Tag: 標簽組件,用于展示信息。

          Pagination: 分頁組件,用于對數據進行分頁。

          導航組件

          Menu: 菜單組件,用于提供導航功能。

          Breadcrumb: 面包屑組件,用于指示用戶的當前位置。

          Steps: 步驟條組件,用于引導用戶完成操作。

          反饋組件

          Dialog: 對話框組件,用于向用戶展示信息或收集用戶輸入。

          MessageBox: 消息框組件,用于向用戶提示信息。

          Tooltip: 浮動提示組件,用于向用戶展示額外的信息。

          Popover: 氣泡框組件,用于向用戶展示詳細的信息。

          其他組件

          Button: 按鈕組件,用于觸發操作。

          Icon: 圖標組件,用于展示圖標。

          Progress: 進度條組件,用于指示操作的進度。

          Badge: 徽章組件,用于展示提示信息。

          Alert: 警告組件,用于提示用戶錯誤或危險信息。

          以上只是 Element UI 組件庫的主要分類及其包含的組件,還有一些其他組件沒有列出,例如:

          Card: 卡片組件

          Avatar: 頭像組件

          Empty: 空狀態組件

          Rate: 評分組件

          開發者可以根據自己的需求選擇合適的組件進行使用。

          Element UI 組件庫提供了豐富的屬性和方法,用于配置和控制組件的行為。開發者可以查閱 Element UI 官方文檔來了解各個組件的詳細用法。

          Element UI 組件的優點

          Element UI 組件庫具有以下優點:

          功能豐富:提供了豐富的UI組件,能夠滿足大多數開發需求。

          易于使用:組件的API設計簡單易懂,上手容易。

          響應式設計:組件支持響應式設計,能夠自動適應不同設備的屏幕尺寸。

          主題定制:提供了豐富的主題,開發者可以根據自己的需求進行定制。

          社區活躍:擁有龐大的社區,開發者可以相互交流學習。

          應該都很熟悉

          點擊滑塊然后移動到圖片缺口進行驗證

          現在越來越多的網站使用這樣的驗證方式

          為的是增加驗證碼識別的難度

          那么

          對于這種驗證碼

          應該怎么破呢

          接下來就是

          打開 b 站的登錄頁面

          https://passport.bilibili.com/login

          image

          可以看到登錄的時候需要進行滑塊驗證

          按下 F12

          進入 Network

          看下我們將滑塊移到缺口松開之后做了什么提交

          可以看到是一個 GET 請求

          但是

          這請求鏈接也太特么長了吧

          我們來看看請求的參數是怎么樣的

          哇靠

          gt?

          challenge?

          w?

          這些都是什么鬼參數

          還加密了

          完全下不了手啊

          既然以請求的方式不好弄

          我們從它們的源代碼入手

          看看有什么突破口

          回到 b 站的登錄頁

          按下 F12

          進入 Element

          然后點擊滑塊出現了圖片

          定位一下

          發現有兩個 a 標簽

          一個 class 是 gt_bg gt_show

          一個 class 是 gt_fullbg gt_show

          和小帥b想的一樣

          這個驗證碼應該是有兩張圖片

          一張是完全的背景圖片

          一張是缺口的圖片

          那把這兩張圖片下載下來對比一下不就行了

          打開 a 標簽一看

          一張圖片被切割成很多小塊

          原來這張圖片是拼出來的

          我們看看原始圖片是怎么樣的

          記得私信小編【學習】領取Python學習教程哦。

          什么亂七八糟的

          再仔細看下源代碼

          原來是在同一張圖片通過偏移量合成了一張完整的圖片

          background-position: -277px -58px;
          

          看了一下缺口的圖片也是如此

          到這里

          我們的第一個思路就是

          下載這兩張原始圖片

          然后通過偏移量合成兩張真正的圖片

          背景圖

          image

          缺口圖

          ↓變身

          那么怎么做呢?

          因為我們還要模擬滑動滑塊

          所以呢

          我們要用到selenium

          打開b站的登錄頁

          然后等到那個滑塊顯示出來

          # 獲取滑塊按鈕
          

          接下來我們就獲取頁面的源碼

          driver.page_source

          然后使用bs 獲取兩張原始背景圖片的 url

          bs=BeautifulSoup(driver.page_source,'lxml')
          

          拿到了圖片地址之后

          將圖片下載下來

          # 將圖片格式存為 jpg 格式
          

          ok

          我們已經把兩張原始圖片下載下來了

          那么接下來就是要合成圖片了

          我們要根據圖片的位置來合成

          也就是源碼中的 background-position

          獲取每一個小圖片的位置

          我們可以通過字典的形式來表示這些位置

          然后將數據放到列表中

          # 存放每個合成缺口背景圖片的位置
          

          那么

          現在我們已經有了原始圖片

          還知道了每個位置應該顯示原始圖片的什么部分

          接下來我們就寫一個方法

          用來合成圖片

          # 寫入圖片
          

          那么問題又來了

          怎么合成啊

          我們再看看一開始分析的圖片

          這里圖片被分割成的每一個小圖片的尺寸是

          10 * 58

          所以我們也要將我們剛剛下載的原始圖片切割成相應的尺寸大小

          而且

          這張圖片是由上半部分的小圖片和下半部分的小圖片合成的

          所以我們定義兩個 list 來裝這些小圖片

          # 存放上下部分的各個小塊
          

          然后將原始的圖片切割好放進去

          image=Image.open(image_file)
          

          至此

          我們這兩個 list 就分別放好了各個切割的圖片了

          那么接下來就創建一張空白的圖片

          然后將小圖片一張一張(間距為10)的粘貼到空白圖片里

          這樣我們就可以得到一張合成好的圖片了

          # 創建一張大小一樣的圖片
          

          那么到現在

          我們可以得到網頁上顯示的那兩張圖片了

          一張完全的圖片

          一張帶缺口的圖片

          接下來我們就要通過對比這兩張圖

          看看我們要滑動的距離是多遠

          # 合成圖片
          

          可以通過圖片的 RGB 來計算

          我們設定一個閾值

          如果 r、g、b 大于這個閾值

          我們就返回距離

          def get_distance(bg_Image, fullbg_Image):
          

          現在

          我們知道了關鍵的滑動距離了

          激動人心的時刻到了

          我們使用 selenium

          拿到滑塊的元素

          然后根據這個距離拖動到缺口位置不就好了么

          馬上打開 selenium 的文檔

          看到了這個函數

          它可以使用左鍵點擊元素

          然后拖動到指定距離

          最后釋放鼠標左鍵

          knob=WAIT.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#gc-box > div > div.gt_slider > div.gt_slider_knob.gt_show")))
          

          運行一下試試看吧

          妖怪吃了拼圖了

          看來直接拖拽是不行的

          試著拖完滑塊讓它睡一下再釋放

          ActionChains(driver).click_and_hold(knob).perform()
          

          發現拼圖還是特么的被妖怪吃了

          有個叫勻速直線運動的東西

          什么 加速度

          什么 v=v0 + at

          什么 s=?at2

          什么鬼

          回到正題

          我們可以使用它來構造一個運動路徑

          該加速時加速

          該減速的時候減速

          這樣的話就更像人類在滑動滑塊了

          這次

          我們使用這個軌跡來滑動

          knob=WAIT.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#gc-box > div > div.gt_slider > div.gt_slider_knob.gt_show")))
          

          好了好了

          我們再來運行一下吧

          哈哈哈

          成功識別了

          當然了

          成功率不是 100%

          可以多調戲它幾次

          以上就是識別滑動驗證碼的具體過程了

          對于其它大部分的滑動驗證碼

          也是可以使用這招搞定的

          最后如果你依然在編程的世界里迷茫,不知道自己的未來規劃,對python感興趣,小編為初學者們準備的python入門教程!

          請私信回復:“學習”就可以拿到一份我為大家準備的Python學習資料!希望能幫助你更了解python,學習python。

          完整代碼:

          lexslider是一款基于的jQuery內容滾動插件。可以使用它輕松實現各種圖片輪播效果、焦點圖效果。而且可以自動播放,使用導航按鈕和鍵盤來控制。可定制性非常高。

          效果圖:

          具有特征:

          支持圖文混排,html元素。

          支持滑動和淡入淡出效果。

          支持水平、垂直方向滑動。

          支持鍵盤方向鍵控制。

          支持觸控滑動。

          自適應屏幕尺寸。

          可控制滑動單元個數。

          更多選項設置和回調函數。

          Flexslider的使用方法:

          首先載入jquery庫文件和Flexslider插件,還有Flexslider所需的基本css樣式文件。

          HTML代碼:

          我們使用了.flexslider來包括所有需要滾動的內容元素,然后使用<ul class="slides">這個class非常關鍵,內部的滾動內容都是針對.slides的,然后在<li>內部加入任意html元素,包括圖片和文字。

          JQuery調用Flexslider插件非常簡單,使用如下代碼:

          參數選項:


          主站蜘蛛池模板: 国产三级一区二区三区| 亚洲爽爽一区二区三区| 伊人久久大香线蕉AV一区二区 | 欧美激情国产精品视频一区二区| 国产在线一区视频| 福利一区二区三区视频在线观看| 香蕉久久ac一区二区三区| 一夲道无码人妻精品一区二区| 91一区二区视频| 亚洲国产激情一区二区三区| 中文日韩字幕一区在线观看| 国产成人AV一区二区三区无码| 精品国产一区二区三区无码| 亚洲中文字幕乱码一区| 婷婷亚洲综合一区二区| 国产在线精品一区二区夜色 | 在线观看亚洲一区二区| 国产高清在线精品一区| 香蕉久久一区二区不卡无毒影院| 国产自产在线视频一区| 国产经典一区二区三区蜜芽| 国产在线视频一区二区三区98| 亚洲福利精品一区二区三区| 精品熟人妻一区二区三区四区不卡| 日本高清一区二区三区| 久久综合一区二区无码| 无码av免费毛片一区二区| 精品人妻少妇一区二区| 欧美日韩精品一区二区在线观看| 亚洲第一区精品日韩在线播放| 国产高清一区二区三区| 久久精品一区二区三区中文字幕| AA区一区二区三无码精片| 激情内射日本一区二区三区| 国产乱码精品一区二区三区| 夜夜添无码一区二区三区| 能在线观看的一区二区三区| 91无码人妻精品一区二区三区L| 成人免费一区二区三区| 伊人久久精品一区二区三区| 久久国产精品免费一区|