You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用2captcha API绕过旋转验证码:设置角度后验证失败

问题:2Captcha旋转验证码修改样式后验证失败

我正在尝试绕过2Captcha API演示页的旋转验证码,已完成API集成,但遇到JavaScript设置旋转角度的问题。观察发现,右键点击验证码图片每次旋转15度并更新img标签的style属性,点击11次可达到165度的正确角度。

我的脚本能成功修改style使图片显示为165度旋转,但点击验证按钮时仍失败。相关HTML代码:

<div class="_3i4YsKXQ1sT9uqskDtNNuA"><img src="/dist/web/43.png" alt="rotatecaptcha example" width="118" height="118" style="transform: rotate(165deg);"></div>

复现代码:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from time import sleep

option = webdriver.ChromeOptions()
# option.add_argument("--headless")
option.add_argument("--start-maximized")
driver = webdriver.Chrome(ChromeDriverManager().install(), options=option)

driver.get('https://2captcha.com/demo/rotatecaptcha')

image_element = driver.find_element(By.XPATH, '//img[@alt="rotatecaptcha example"]')
new_style = f"transform: rotate(165deg);"
driver.execute_script(f"arguments[0].setAttribute('style', '{new_style}')", image_element)

sleep(3)

try:
    driver.find_element(By.XPATH, '//button[@type="submit"]').click()
    sleep(15)
except:
    print('无法定位验证按钮')

原因与解决方案

直接修改img标签的style属性仅改变了视觉显示,页面的验证码验证逻辑不会读取这个值——这类验证码在用户点击旋转按钮时,会同步更新隐藏字段或内部状态变量来记录实际旋转角度,验证时依赖这些存储的数值,而非DOM的style属性。

解决办法:

  1. 模拟真实点击旋转按钮
    找到页面上的旋转按钮(右键点击验证码对应的触发元素),循环点击11次来达到165度:

    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium.webdriver.common.by import By
    from time import sleep
    
    option = webdriver.ChromeOptions()
    option.add_argument("--start-maximized")
    driver = webdriver.Chrome(ChromeDriverManager().install(), options=option)
    
    driver.get('https://2captcha.com/demo/rotatecaptcha')
    
    # 替换为实际旋转按钮的选择器(可通过浏览器开发者工具查看)
    rotate_btn = driver.find_element(By.CSS_SELECTOR, '.旋转按钮的类名')
    
    # 点击11次,每次旋转15度
    for _ in range(11):
        rotate_btn.click()
        sleep(0.3)  # 等待页面更新状态
    
    # 提交验证
    try:
        driver.find_element(By.XPATH, '//button[@type="submit"]').click()
        sleep(15)
    except:
        print('无法定位验证按钮')
    
  2. 直接调用页面旋转函数
    如果找不到旋转按钮,可通过浏览器开发者工具查看页面处理旋转的JavaScript函数(比如rotateCaptcha()),直接调用该函数11次:

    # 替换为页面实际的旋转函数名
    for _ in range(11):
        driver.execute_script("rotateCaptcha()")
        sleep(0.3)
    

内容的提问来源于stack exchange,提问作者usman Abbasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:53:00