# Python基于Selenium+CV2+Numpy實現登錄某大型電商系統
## 一、技術選型背景
大型電商系統通常采用動態驗證碼、行為驗證等反爬機制,傳統爬蟲難以突破。本文介紹結合以下技術實現自動化登錄:
- **Selenium**:模擬瀏覽器操作
- **OpenCV**(cv2):驗證碼圖像處理
- **NumPy**:矩陣運算輔助圖像分析
## 二、環境準備
```python
# 所需庫安裝
pip install selenium opencv-python numpy
需下載對應瀏覽器的WebDriver(如ChromeDriver)
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('https://www.example.com/login') # 替換為目標電商網址
import cv2
import numpy as np
def process_captcha(image_path):
# 讀取驗證碼圖片
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
# 二值化處理
_, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 使用輪廓檢測
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHN_APPROX_SIMPLE)
# 識別邏輯...
return captcha_text
def slide_verification(driver):
# 獲取滑塊和背景圖
slider = driver.find_element(By.XPATH, '//div[@class="slider"]')
bg_img = driver.find_element(By.XPATH, '//div[@class="bg-img"]')
# 使用OpenCV計算滑動距離
bg_cv = cv2.imdecode(np.frombuffer(bg_img.screenshot_as_png, np.uint8), 1)
# 圖像匹配算法...
# 模擬滑動
ActionChains(driver).drag_and_drop_by_offset(slider, distance, 0).perform()
def auto_login(username, password):
try:
# 輸入用戶名密碼
driver.find_element(By.ID, 'username').send_keys(username)
driver.find_element(By.ID, 'password').send_keys(password)
# 驗證碼處理
captcha_img = driver.find_element(By.XPATH, '//img[@class="captcha"]')
captcha_img.screenshot('captcha.png')
captcha = process_captcha('captcha.png')
# 提交表單
driver.find_element(By.ID, 'captcha').send_keys(captcha)
driver.find_element(By.ID, 'login-btn').click()
# 驗證登錄成功
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'user-center'))
)
except Exception as e:
print(f'登錄失敗: {str(e)}')
time.sleep(random.uniform(0.5, 2))
ActionChains
實現變速移動提示:本文僅作技術交流,實際應用請確保符合網站使用條款。 “`
(全文約698字)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。