
一.項(xiàng)目背景
滑塊驗(yàn)證碼,即用戶使用鼠標(biāo)將滑塊從某個(gè)位置拖動到另一個(gè)位置,服務(wù)器通過用戶拖
動滑塊的軌跡來判斷當(dāng)前用戶是否為人類,本文主要介紹如何利用Selenium框架模擬滑塊
移動。
二.實(shí)現(xiàn)過程
1.構(gòu)建加速度函數(shù)
#獲取距離值
def get_tracks(distance):
    '''
    模擬人的滑動行為,先勻加速后勻減速
    勻變速基本公式
    v=v0+at
    s=vot+1/2at2
    '''
    
    #初速度
    v=0
    #設(shè)置時(shí)間
    t=0.3
    #存儲每段距離值
    tracks=[]
    #當(dāng)前距離
    current=0
    #中間位置為4/5距離處
    mid=distance*4/5
    while current
2.構(gòu)建請求頭參數(shù)
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from selenium.webdriver.chrome import options
#初始化選項(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正收到自動測試軟件的控制
opt.add_argument('disable-infobars')
#關(guān)閉開發(fā)者模式
opt.add_experimental_option("useAutomationExtension", False)
#以鍵值對的形式加入?yún)?shù)
opt.add_experimental_option("excludeSwitches", ['enable-automation'])
#禁用啟用Blink運(yùn)行時(shí)的功能
opt.add_argument('--disable-blink-features=AutomationControlled'
3.模擬滑塊移動
#請求網(wǎng)絡(luò)
browser=webdriver.Chrome(r'./chromedriver.exe',chrome_options=opt)
#窗口最大化
browser.maximize_window()
#訪問豆瓣官網(wǎng)
browser.get('https://www.douban.com')
#切換到iframe子頁面
login_frame=browser.find_element_by_xpath('//*[@id="anony-reg-new"]/div/div[1]/iframe')
#獲取登錄按鈕
browser.switch_to.frame(login_frame)
#密碼登錄
browser.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]').click()
#用戶名
browser.find_element_by_xpath('//*[@id="username"]').send_keys('xxx')
#密碼
browser.find_element_by_xpath('//*[@id="password"]').send_keys('xxx')
#點(diǎn)擊登錄
browser.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a').click()
#睡眠4秒鐘
time.sleep(4)
#獲取下一個(gè)iframe
auth_frame=browser.find_element_by_xpath('//*[@id="tcaptcha_iframe"]')
browser.switch_to.frame(auth_frame)
#獲取滑塊
element=browser.find_element_by_xpath('//*[@id="tcaptcha_drag_button"]')
#在滑塊上暫停
ActionChains(browser).click_and_hold(on_element=element).perform()
#拖動滑塊180像素
ActionChains(browser).move_to_element_with_offset(to_element=element,xoffset=182,yoffset=0).perform()
#拖動剩余像素
tracks=get_tracks(19)
#遍歷梅一段距離
for track in tracks:
    #滑塊移動響應(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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
                        舉報(bào)投訴
                    
                    - 
                                服務(wù)器
                                +關(guān)注關(guān)注 13文章 10029瀏覽量 90462
- 
                                框架
                                +關(guān)注關(guān)注 0文章 404瀏覽量 18266
- 
                                軌跡
                                +關(guān)注關(guān)注 0文章 46瀏覽量 9550
發(fā)布評論請先 登錄
相關(guān)推薦
                    熱點(diǎn)推薦
                  【安富萊原創(chuàng)】【STemWin教程】第55章 SLIDER-滑塊控件
GUIBulder建立滑塊控件 55. 4 總結(jié)  55.1控件介紹 滑塊控件的常見用途是:使用滑動條來修改各項(xiàng)數(shù)值。滑塊包含滑動條和滑動條旁邊的刻度標(biāo)記。 在拖動滑動條時(shí),這些刻度標(biāo)
    
                發(fā)表于 05-20 10:53        
                    
    
第55章 SLIDER-滑塊控件
 55. 4 總結(jié)55.1 滑塊控件介紹 滑塊控件的常見用途是:使用滑動條來修改各項(xiàng)數(shù)值。滑塊包含滑動條和滑動條旁邊的刻度標(biāo)記。 在拖動滑動條時(shí),這些刻度標(biāo)記可規(guī)定光標(biāo)按指定間距移動。
    
                發(fā)表于 10-18 11:20        
                    
    
滑塊刪除對話框滑塊值會怎么變化?
我想問一個(gè)滑塊的問題,你在滑動滑塊的時(shí)候,它的值是會變化的,那么當(dāng)刪除這個(gè)對話框(滑塊創(chuàng)建在這個(gè)對話框上面)以后,滑塊的值會怎么變化呢?從我自己試驗(yàn)的結(jié)果來看,這個(gè)值好像是隨機(jī)的。 希
    
                發(fā)表于 05-09 01:16        
                    
    
如何在Python中使用Selenium
  Python是一種高級的面向?qū)ο蟮哪_本語言。Python使用簡單,容易理解。與其他任何編程語言相比,它的語法復(fù)雜性較低。而Selenium支持Python,因此可以與Selenium一起用于測試
    
                發(fā)表于 09-08 18:17        
                    
    
使用handleDragEvent和handleClickEvent時(shí),點(diǎn)擊和拖動的按鈕和滑塊等小部件不起作用怎么解決?
您好,當(dāng)我使用handleDragEvent和handleClickEvent時(shí),需要點(diǎn)擊和拖動的按鈕和滑塊等小部件不再起作用。我怎么解決這個(gè)問題?
    
                發(fā)表于 01-05 08:08        
                    
    
廣州大彩串口屏工程技術(shù)筆記-進(jìn)度條控件和滑塊控件應(yīng)用
適合經(jīng)濟(jì)型、基本型、物聯(lián)型、86盒系列等串口屏產(chǎn)品。
    進(jìn)度條控件,可以比較形象地對數(shù)據(jù)進(jìn)行顯示反映外部上傳到屏幕的數(shù)據(jù)真實(shí)現(xiàn)狀。
    滑塊控件,通過對滑塊的拖動,可以對外部設(shè)備進(jìn)行控制,比如控制燈的亮度、控制電動
    
                發(fā)表于 05-25 14:03        
                ?5次下載    
    
Selenium在自動化中有何用處
  Selenium是一個(gè)開源的自動化測試工具,可以輕松自動化Web應(yīng)用程序。它還能夠自動化我們的功能測試任務(wù)。Selenium是一組軟件工具,為 測試自動化提供不同級別的支持。Selenium包括
    
    
Selenium模擬怎么滑塊拖動-2
滑塊驗(yàn)證碼,即用戶使用鼠標(biāo)將滑塊從某個(gè)位置拖動到另一個(gè)位置,服務(wù)器通過用戶拖動滑塊的軌跡來判斷當(dāng)前用戶是否為人類,本文主要介紹如何利用
    
    
                     
    
Katalium簡介:讓Selenium和TestNG變得簡單
Katalium保留了Selenium和TestNG的標(biāo)準(zhǔn)功能——但是,我們的團(tuán)隊(duì)獨(dú)家定制了框架,使其更輕量并且可供所有用戶使用。Katalium縮短了學(xué)習(xí)曲線和過渡的工作,讓您能夠更快、更高效地執(zhí)行項(xiàng)目。
    
    
Python中使用selenium的準(zhǔn)備工作
定義 Selenium是一個(gè)用于Web應(yīng)用程序測試的自動化測試工具。使用Selenium可以驅(qū)動瀏覽器執(zhí)行特定的動作,如點(diǎn)擊、下拉等操作,還可以獲取頁面信息,斷言頁面是否如預(yù)期。在工作中我們可以用
    
    
                     
    
GUI中Scale移動滑塊代碼
Scale 移動滑塊 Scale(移動滑塊)用于在指定的數(shù)值區(qū)間,通過滑塊的移動來選擇值 實(shí)操代碼 """scale 滑塊的使用測試【示例】使用 Scale(移動
    
    
                     
    
 
           
        
 
         Selenium模擬怎么滑塊拖動
Selenium模擬怎么滑塊拖動 
                 
  
     
            
             
             
                 
             工商網(wǎng)監(jiān)
工商網(wǎng)監(jiān)
        
評論