在chrome已经不受自动化工具控制情况下,web自动化验证滑块登录还是提示登录失败
时间: 2023-06-08 09:05:49 浏览: 58
这可能是由于滑块登录的验证方法不只是简单的用户名和密码,还包括了鼠标轨迹、点击位置等信息。自动化工具很难模拟这些用户行为,因此会导致登录失败的提示。建议使用其他方式进行登录验证,比如手机号码验证或者邮箱验证。
相关问题
python自动化登录滑块处理
Python自动化登录滑块处理需要用到第三方库selenium和Pillow,具体步骤如下:
1. 安装selenium和Pillow库
```
pip install selenium
pip install Pillow
```
2. 下载Chrome浏览器驱动,将其路径添加到环境变量中
3. 编写代码,启动浏览器并打开登录页面,输入账号密码并点击登录按钮
```
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from PIL import Image
import time
# 启动浏览器
browser = webdriver.Chrome()
# 打开登录页面
browser.get('https://www.example.com/login')
# 输入账号密码
username = browser.find_element_by_id('username')
password = browser.find_element_by_id('password')
username.send_keys('your_username')
password.send_keys('your_password')
# 点击登录按钮
login_button = browser.find_element_by_id('login_button')
login_button.click()
```
4. 等待页面加载完成,获取滑块图片和滑块位置
```
# 等待页面加载完成
time.sleep(3)
# 获取验证码图片和滑块位置
captcha_image = browser.find_element_by_id('captcha_image')
captcha_slider = browser.find_element_by_id('captcha_slider')
captcha_image_url = captcha_image.get_attribute('src')
captcha_slider_location = captcha_slider.location
captcha_slider_size = captcha_slider.size
```
5. 下载验证码图片并裁剪出滑块图片
```
# 下载验证码图片
browser.get(captcha_image_url)
captcha_image_path = './captcha.png'
browser.get_screenshot_as_file(captcha_image_path)
# 裁剪出滑块图片
captcha_image = Image.open(captcha_image_path)
left = captcha_slider_location['x']
top = captcha_slider_location['y']
right = left + captcha_slider_size['width']
bottom = top + captcha_slider_size['height']
captcha_slider_image = captcha_image.crop((left, top, right, bottom))
captcha_slider_image.save('./captcha_slider.png')
```
6. 使用Pillow库计算滑块移动距离
```
# 计算滑块移动距离
captcha_slider_image = Image.open('./captcha_slider.png')
captcha_bg_image = Image.open('./captcha_bg.png')
width, height = captcha_slider_image.size
for x in range(width):
for y in range(height):
if is_pixel_equal(captcha_slider_image, captcha_bg_image, x, y) is False:
distance = x - 6 # 滑块初始位置
break
distance -= 8 # 减去滑块左侧空白部分的距离
```
7. 使用selenium模拟拖动滑块完成登录
```
# 模拟拖动滑块完成登录
slider_button = browser.find_element_by_id('slider_button')
ActionChains(browser).click_and_hold(slider_button).perform()
ActionChains(browser).move_by_offset(distance, 0).perform()
ActionChains(browser).release().perform()
```
完整代码如下:
```
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from PIL import Image
import time
# 判断像素是否相同
def is_pixel_equal(image1, image2, x, y):
pixel1 = image1.load()[x, y]
pixel2 = image2.load()[x, y]
threshold = 60
if abs(pixel1[0] - pixel2[0]) < threshold and abs(pixel1[1] - pixel2[1]) < threshold and abs(
pixel1[2] - pixel2[2]) < threshold:
return True
else:
return False
# 启动浏览器
browser = webdriver.Chrome()
# 打开登录页面
browser.get('https://www.example.com/login')
# 输入账号密码
username = browser.find_element_by_id('username')
password = browser.find_element_by_id('password')
username.send_keys('your_username')
password.send_keys('your_password')
# 点击登录按钮
login_button = browser.find_element_by_id('login_button')
login_button.click()
# 等待页面加载完成
time.sleep(3)
# 获取验证码图片和滑块位置
captcha_image = browser.find_element_by_id('captcha_image')
captcha_slider = browser.find_element_by_id('captcha_slider')
captcha_image_url = captcha_image.get_attribute('src')
captcha_slider_location = captcha_slider.location
captcha_slider_size = captcha_slider.size
# 下载验证码图片
browser.get(captcha_image_url)
captcha_image_path = './captcha.png'
browser.get_screenshot_as_file(captcha_image_path)
# 裁剪出滑块图片
captcha_image = Image.open(captcha_image_path)
left = captcha_slider_location['x']
top = captcha_slider_location['y']
right = left + captcha_slider_size['width']
bottom = top + captcha_slider_size['height']
captcha_slider_image = captcha_image.crop((left, top, right, bottom))
captcha_slider_image.save('./captcha_slider.png')
# 下载验证码背景图片
captcha_bg_image_url = 'https://www.example.com/captcha_bg'
browser.get(captcha_bg_image_url)
captcha_bg_image_path = './captcha_bg.png'
browser.get_screenshot_as_file(captcha_bg_image_path)
# 计算滑块移动距离
captcha_slider_image = Image.open('./captcha_slider.png')
captcha_bg_image = Image.open('./captcha_bg.png')
width, height = captcha_slider_image.size
for x in range(width):
for y in range(height):
if is_pixel_equal(captcha_slider_image, captcha_bg_image, x, y) is False:
distance = x - 6 # 滑块初始位置
break
distance -= 8 # 减去滑块左侧空白部分的距离
# 模拟拖动滑块完成登录
slider_button = browser.find_element_by_id('slider_button')
ActionChains(browser).click_and_hold(slider_button).perform()
ActionChains(browser).move_by_offset(distance, 0).perform()
ActionChains(browser).release().perform()
```
pycharm web自动化登录
要在PyCharm中进行Web自动化登录,你可以使用Selenium库来模拟浏览器行为。以下是一个简单的示例代码:
```python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 创建一个Chrome浏览器实例
driver = webdriver.Chrome()
# 打开登录页面
driver.get("https://example.com/login")
# 找到用户名和密码的输入框,并输入相应的值
username_input = driver.find_element_by_name("username")
password_input = driver.find_element_by_name("password")
username_input.send_keys("your_username")
password_input.send_keys("your_password")
# 提交表单
password_input.send_keys(Keys.RETURN)
# 等待登录完成,可以根据具体情况设置等待时间
driver.implicitly_wait(10)
# 执行其他操作,例如访问需要登录才能访问的页面
# 关闭浏览器
driver.quit()
```
请注意,你需要根据实际情况修改示例代码中的URL、输入框名称以及用户名和密码。另外,你还需要安装Selenium和Chrome浏览器驱动程序。你可以通过执行`pip install selenium`来安装Selenium,然后从Chrome浏览器官网下载对应版本的浏览器驱动程序并配置到系统路径中。
希望这可以帮助到你!如果有任何问题,请随时提问。