python爬蟲之模擬移動



爬蟲的一大難點就是破解驗證碼。驗證碼大致上分為文字識別、滑動、文字點擊、圖像識別等,本文講的是其中的滑動驗證碼。滑動驗證碼,需要我們將滑塊移至圖片缺口位置。實際上我們可以通過對比完整圖片和缺口圖片各個像素點的RGB值,得出缺口位置左上角的坐標,然后構造軌跡算法使用selenium模擬移動滑塊即可。


滑動驗證碼破解大致流程為:

1 - 獲取缺口圖片與原圖片
2 - 圖像對比,得出缺口左上角坐標
3 - 構造軌跡算法
4 - 使用selenium模擬移動滑塊



本篇主要針對模擬移動進行探討。

使用工具:python,selenium,chromedriver,chrom瀏覽器



操作步驟講解環(huán)節(jié)


下面就是喜聞樂見的操作步驟講解環(huán)節(jié)了(′???)



代碼部分:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 導本地包的模塊
import os
import sys
path = os.path.dirname(os.path.dirname(__file__))
sys.path.append(path)

import test
# 108這個值就是前面圖像對比后得出的缺口左上角的橫坐標
# 這里導入橫坐標,然后獲取先勻加速后勻減速的軌跡列表
track = test.get_track(108)
print(track)

driver = webdriver.Chrome()
url = 'http://www.geetest.com/Register'
wait = WebDriverWait(driver, 10, 0.5)
driver.get(url)
# 獲取到指定的元素
Phone_Number = driver.find_element_by_xpath('/html/body/div[1]/div/div[8]/div/div[2]/div[1]/div[2]/div/div[2]/div[1]/input')
Verification_Code = driver.find_element_by_xpath('/html/body/div[1]/div/div[8]/div/div[2]/div[1]/div[2]/div/div[2]/div[2]/input')
Code_Button = driver.find_element_by_xpath('/html/body/div[1]/div/div[8]/div/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[1]/div')

Phone_Number.send_keys('12345678910')
Code_Button.click()

# 等待className為geetest_slider_button的元素在元素表中出現
slider = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'geetest_slider_button')))
# 點擊和按住
ActionChains(driver).click_and_hold(slider).perform()
# 拖動
for x in track:
    ActionChains(driver).move_by_offset(xoffset=x, yoffset=0).perform()
time.sleep(2)
# 松開鼠標
ActionChains(driver).release().perform()

time.sleep(2)
driver.quit()





要點總結:
1 - 需要用到前面兩篇文章的參數,圖像對比得出缺口左上角的橫坐標,然后使用軌跡移動算法,獲取軌跡列表
2 - 使用selenium的鼠標操作方法完成滑塊拖動







那么本次的分享就到這里了,喜歡的話麻煩點贊關注一下;不喜歡的話可以去看下小編的其他文章,肯定有喜歡的;都不喜歡的話可以點個關注,萬一以后有喜歡的呢(??????)??

有疑問的小伙伴也可以在評論區(qū)留言哦,我會第一時間解答的。





你點了嗎? ???

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容