
一.項(xiàng)目背景
滑塊驗(yàn)證碼,即用戶使用鼠標(biāo)將滑塊從某個(gè)位置拖動(dòng)到另一個(gè)位置,服務(wù)器通過用戶拖動(dòng)滑塊的軌跡來判斷當(dāng)前用戶是否為人類,本文主要介紹如何利用Selenium框架模擬滑塊移動(dòng)。
上篇Selenium模擬滑塊拖動(dòng)我們介紹了模擬豆瓣滑塊登錄,但是尚未成功,主要原因是豆瓣會(huì)檢測(cè)Chromium層指紋,需要抹除該指紋才能登錄成功,這塊相關(guān)知識(shí)點(diǎn)我們就不分享了。本篇在之前基礎(chǔ)上改進(jìn),增加了輪廓檢測(cè)部分,適用性更廣。
二.實(shí)現(xiàn)過程
1.構(gòu)建加速度函數(shù)
#獲取距離值
def get_tracks(distance):
'''
模擬人的滑動(dòng)行為,先勻加速后勻減速
勻變速基本公式
v=v0+at
s=vot+1/2at2
'''
#初速度
v=0
#設(shè)置時(shí)間
t=0.3
#存儲(chǔ)每段距離值
tracks=[]
#當(dāng)前距離
current=0
#中間位置為4/5距離處
mid=distance*4/5
while current
2.構(gòu)建位置檢測(cè)函數(shù)
#獲取圖片位置
def get_pos(img):
#高斯濾波
blurred=cv.GaussianBlur(img,(5,5),0)
#邊緣檢測(cè)
canny=cv.Canny(blurred,200,400)
#提取邊界的拓?fù)湫蛄? contours,hierarchy=cv.findContours(canny,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)
#遍歷點(diǎn)集
for i,contour in enumerate(contours):
m=cv.moments(contour)
if m['m00']==0:
cx=cy=0
else:
cx,cy=m['m10']/m['m00'],m['m01']/m['m00']
if 6000(contour)<8000>

3.模擬滑塊移動(dòng)
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from selenium.webdriver.chrome import options
import requests
import cv2 as cv
#初始化選項(xiàng)
opt=options.Options()
#設(shè)置user-agent
ua='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
#添加user-agent
opt.add_argument(f"user-agent={ua}")
#去掉提示:Chrome正收到自動(dòng)測(cè)試軟件的控制
opt.add_argument('--disable-infobars')
#關(guān)閉開發(fā)者模式
opt.add_experimental_option("useAutomationExtension", False)
#以鍵值對(duì)的形式加入?yún)?shù)
opt.add_experimental_option("excludeSwitches", ['enable-automation'])
#禁用啟用Blink運(yùn)行時(shí)的功能
opt.add_argument('--disable-blink-features=AutomationControlled')
#獲取滑塊
element=browser.find_element_by_xpath('//*[@id="tcaptcha_drag_thumb"]')
#在滑塊上暫停
ActionChains(browser).click_and_hold(on_element=element).perform()
#拖動(dòng)滑塊180像素
ActionChains(browser).move_to_element_with_offset(to_element=element,xoffset=distance[0]/2-25,yoffset=0).perform()
#拖動(dòng)剩余像素
tracks=get_tracks(25)
#遍歷梅一段距離
for track in tracks:
#滑塊移動(dòng)響應(yīng)距離
ActionChains(browser).move_by_offset(xoffset=track,yoffset=0).perform()
#休息1s中
time.sleep(1)
#釋放滑塊
ActionChains(browser).release().perform()

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
服務(wù)器
+關(guān)注
關(guān)注
14文章
10250瀏覽量
91476 -
框架
+關(guān)注
關(guān)注
0文章
404瀏覽量
18416 -
軌跡
+關(guān)注
關(guān)注
0文章
46瀏覽量
9599
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
想將CY8CMBR3106S用于2個(gè)滑塊,這個(gè)IC是否支持2個(gè)滑塊同時(shí)工作?
我想將 CY8CMBR3106S 用于 2 個(gè)滑塊,這個(gè) IC 是否支持 2 個(gè)滑塊同時(shí)工作,我可以同時(shí)觸摸它們并獲得觸摸數(shù)據(jù)?
謝謝。
發(fā)表于 02-26 06:41
【安富萊原創(chuàng)】【STemWin教程】第55章 SLIDER-滑塊控件
`第55章 SLIDER-滑塊控件 本期教程講解STemWin支持的滑塊控件。 55. 1滑塊控件介紹 55. 2 官方DIALOG_SliderColor實(shí)例 55. 3 使用官方
發(fā)表于 05-20 10:53
第55章 SLIDER-滑塊控件
轉(zhuǎn)stemwin教程 本期教程講解STemWin支持的滑塊控件。 55. 1滑塊控件介紹 55. 2 官方DIALOG_SliderColor實(shí)例 55. 3 使用官方GUIBulder建立滑
發(fā)表于 10-18 11:20
滑塊刪除對(duì)話框滑塊值會(huì)怎么變化?
我想問一個(gè)滑塊的問題,你在滑動(dòng)滑塊的時(shí)候,它的值是會(huì)變化的,那么當(dāng)刪除這個(gè)對(duì)話框(滑塊創(chuàng)建在這個(gè)對(duì)話框上面)以后,滑塊的值會(huì)怎么變化呢?從我自己試驗(yàn)的結(jié)果來看,這個(gè)值好像是隨機(jī)的。 希
發(fā)表于 05-09 01:16
如何在Python中使用Selenium
行1:從selenium模塊導(dǎo)入webdriver · 代碼行2:從硒模塊導(dǎo)入鍵 · 代碼行3:用戶是一個(gè)空白變量,將用于存儲(chǔ)用戶名的值?! ?代碼行4:pwd也是一個(gè)空白變量。這將用于存儲(chǔ)密碼
發(fā)表于 09-08 18:17
使用handleDragEvent和handleClickEvent時(shí),點(diǎn)擊和拖動(dòng)的按鈕和滑塊等小部件不起作用怎么解決?
您好,當(dāng)我使用handleDragEvent和handleClickEvent時(shí),需要點(diǎn)擊和拖動(dòng)的按鈕和滑塊等小部件不再起作用。我怎么解決這個(gè)問題?
發(fā)表于 01-05 08:08
電力拖動(dòng)系統(tǒng)基礎(chǔ)
電力拖動(dòng)系統(tǒng)基礎(chǔ)1.了解電力拖動(dòng)系統(tǒng)的基本組成;2. 掌握電力拖動(dòng)系統(tǒng)運(yùn)動(dòng)方程式;3. 熟悉轉(zhuǎn)矩與飛輪矩的折算方法;4. 掌握生產(chǎn)機(jī)械的負(fù)載轉(zhuǎn)矩特性的分類;5.
發(fā)表于 11-19 22:01
?0次下載
廣州大彩串口屏工程技術(shù)筆記-進(jìn)度條控件和滑塊控件應(yīng)用
適合經(jīng)濟(jì)型、基本型、物聯(lián)型、86盒系列等串口屏產(chǎn)品。
進(jìn)度條控件,可以比較形象地對(duì)數(shù)據(jù)進(jìn)行顯示反映外部上傳到屏幕的數(shù)據(jù)真實(shí)現(xiàn)狀。
滑塊控件,通過對(duì)滑塊的拖動(dòng),可以對(duì)外部設(shè)備進(jìn)行控制,比如控制燈的亮度、控制電動(dòng)
發(fā)表于 05-25 14:03
?5次下載
一個(gè)openharmony滑塊/搜索欄案例
一個(gè)openharmony滑塊/搜索欄,但不同:-) 依賴項(xiàng) { 實(shí)現(xiàn)‘ io 。開放和諧。tpc 。第三庫(kù):ohos - slidr:1.0 。2 ’ } final Slidr slidr
發(fā)表于 04-01 09:12
?1次下載
Selenium在自動(dòng)化中有何用處
Selenium是一個(gè)開源的自動(dòng)化測(cè)試工具,可以輕松自動(dòng)化Web應(yīng)用程序。它還能夠自動(dòng)化我們的功能測(cè)試任務(wù)。Selenium是一組軟件工具,為 測(cè)試自動(dòng)化提供不同級(jí)別的支持。Selenium包括
Selenium模擬怎么滑塊拖動(dòng)
滑塊驗(yàn)證碼,即用戶使用鼠標(biāo)將滑塊從某個(gè)位置拖動(dòng)到另一個(gè)位置,服務(wù)器通過用戶拖
動(dòng)滑塊的軌跡來判斷當(dāng)前用戶是否為人類,本文主要介紹如何利用Selen
Python中使用selenium的準(zhǔn)備工作
定義 Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的自動(dòng)化測(cè)試工具。使用Selenium可以驅(qū)動(dòng)瀏覽器執(zhí)行特定的動(dòng)作,如點(diǎn)擊、下拉等操作,還可以獲取頁(yè)面信息,斷言頁(yè)面是否如預(yù)期。在工作中我們可以用
Selenium模擬怎么滑塊拖動(dòng)-2
評(píng)論