在我们登录账号中常常会遇到各种验证码,如图片验证码,拖动滑块验证.....

滑块验证码只需要用户使用鼠标将滑块从某个位置拖动到另一个位置即可。程序通过记录用户拖动滑块的轨迹,这一串的轨迹数据采用模式识别的手段就可以判断出这是否是真人在操作。

滑块验证通常需要使滑块按照正常的加速度进行拖动,停靠在一个合适的位置,在使用selenium时通常需要设置一个合适的滑动加速度来使自己伪装的更像人类用户而不是计算机。

from selenium.webdriver import ActionChains这个类基本能够满足我们所有对鼠标操作的需求。

我们使用企查查这个网站来实践一下

from selenium.webdriver import ActionChains

from selenium import webdriver

import time

driver=webdriver.Chrome()

driver.get("https://www.qichacha.com/user_login")

time.sleep(1)

首先需要选中滑块,才能进行下一步操作

driver.find_element_by_xpath('//*[@id="normalLogin"]').click()

time.sleep(1)

huakuai=driver.find_element_by_xpath('//*[@id="nc_1_n1z"]')

需要自己设置一个函数来生成一个轨迹来模拟人类用户行为

def get_track(distance): # distance为传入的总距离

# 移动轨迹

track=[]

# 当前位移

current=0

# 减速阈值

mid=distance*4/5

# 计算间隔

t=0.2

# 初速度

v=1

while current

if current

# 加速度为2

a=4

else:

# 加速度为-2

a=-3

v0=v

# 当前速度

v=v0+a*t

# 移动距离

move=v0*t+1/2*a*t*t

# 当前位移

current+=move

# 加入轨迹

track.append(round(move))

return track

拖动滑块进行测试,由于测试没有输入账号密码...

drag_and_drop(source, target)拖拽

drag_and_drop_by_offset(source, xoffset, yoffset)将目标拖动到指定的位置

def move_to_gap(slider,tracks): # slider是要移动的滑块,tracks是要传入的移动轨迹

ActionChains(driver).click_and_hold(slider).perform()

for x in tracks:

ActionChains(driver).move_by_offset(xoffset=x,yoffset=0).perform()

time.sleep(0.5)

ActionChains(driver).release().perform()

if __name__ == '__main__':

move_to_gap(huakuai,get_track(340))

后面是全部代码,由于没有缺口位置,不需要设置到合适停止到正确的位置

from selenium.webdriver import ActionChains

from selenium import webdriver

import time

driver=webdriver.Chrome()

driver.get("https://www.qichacha.com/user_login")

time.sleep(1)

driver.find_element_by_xpath('//*[@id="normalLogin"]').click()

time.sleep(1)

huakuai=driver.find_element_by_xpath('//*[@id="nc_1_n1z"]')

def get_track(distance): # distance为传入的总距离

# 移动轨迹

track=[]

# 当前位移

current=0

# 减速阈值

mid=distance*4/5

# 计算间隔

t=0.2

# 初速度

v=1

while current

if current

# 加速度为2

a=4

else:

# 加速度为-2

a=-3

v0=v

# 当前速度

v=v0+a*t

# 移动距离

move=v0*t+1/2*a*t*t

# 当前位移

current+=move

# 加入轨迹

track.append(round(move))

return track

def move_to_gap(slider,tracks): # slider是要移动的滑块,tracks是要传入的移动轨迹

ActionChains(driver).click_and_hold(slider).perform()

for x in tracks:

ActionChains(driver).move_by_offset(xoffset=x,yoffset=0).perform()

time.sleep(0.5)

ActionChains(driver).release().perform()

if __name__ == '__main__':

move_to_gap(huakuai,get_track(340))

python模拟鼠标拖动滑块_Python+Selenium 拖动滑块 (一)相关推荐

  1. python模拟qq空间登录_python selenium模拟登录163邮箱和QQ空间

    最近在看python网络爬虫,于是我想自己写一个邮箱和QQ空间的自动登录的小程序, 下面以登录163邮箱和QQ空间和为例: 了解到在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用, ...

  2. python模拟登录163邮箱_python+selenium 模拟163邮箱登录

    代码如下: from selenium import webdriver from time import sleep driver=webdriver.Chrome() driver.get(&qu ...

  3. python模拟鼠标点击和键盘输入的操作_python模拟鼠标点击和键盘输入的操作

    所有代码都是网上百度出来的,通过个人实践找到适合自己的. 采用的python 库是 pymouse.pykeyboard 安装时直接pip安装的,pip install PyUserInput 安装不 ...

  4. python模拟鼠标 事件

    python模拟鼠标事件: 可以使用 pyautogui pyautogui 的安装:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple p ...

  5. python模拟网页点击_python模拟点击

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python怎么模拟点击网页按钮前提环境:python3 和 visual st ...

  6. python模拟鼠标键盘点击,简单自动化动物餐厅

    Python模拟鼠标键盘点击自动化 首先在玩动物餐厅的时候发现他需要连续点击才能完成任务,而这有是一项枯燥而复杂的任务,所以我就想到用python的鼠标模拟来自动完成 Python中模拟键盘和鼠标最著 ...

  7. Python - Python 模拟鼠标和键盘进行基本操作

    文章目录 Python - Python 模拟鼠标和键盘进行基本操作 相关内容:Python 实用内容 1.安装模块pyautogui 2.基本操作 Python - Python 模拟鼠标和键盘进行 ...

  8. python模拟鼠标拖动_Python+Selenium自动化篇-6-模拟鼠标操作

    在webdriver中,鼠标的一些操作如:双击.右击.悬停.拖动等都被封装在ActionChains类中,我们只用在需要使用的时候,导入这个类就可以了. 0.ActionChains类提供的鼠标常用方 ...

  9. python 模拟鼠标键盘_python之模拟鼠标键盘动作

    上个月就打算开发个还算好玩的项目,但是一直没时间.这篇是此项目用到的一部分, 处理好此部分基本还差通信等方面的了.首先模拟鼠标键盘按下释放的动作,本人利用X11 这个库,所以要了解X11编程;其次,本 ...

最新文章

  1. linux中shell脚本启动报错
  2. 字符串中统计单词个数
  3. (Prototype)原型模式的Java实现(转)
  4. SaaS全球普及面临三大门槛
  5. cheerio api
  6. java 按钮组_java中创建一个按钮组,有10个按钮,分别写着0,1,2,,3。。。。9
  7. C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...
  8. matplotlib的基本使用 附python代码详细讲解(基本图的绘制、样式、简单函数的使用)
  9. 深入代码详谈irqbalance【转】
  10. 一些推荐的深度学习、机器学习资料
  11. 必须要掌握的七种谈话技巧
  12. 【运维安全】-sqlmap使用
  13. android exifinterface 经纬度,Android10获取图片的地理位置信息[GPS位置]
  14. android自动点击开红包,自动点击连点器
  15. js 简单的鼠标指针小图标
  16. 一.微信公众号迁移流程 openid转换
  17. cdr 表格自动填充文字_常平办公软件培训分享之word表格自动填充序号
  18. 浏览器打开服务器上的图片无法显示,网页中的图片打不开怎么办?原因与解决办法...
  19. 学 Python 都用来干嘛的?
  20. C语言中,1U<<29的意思

热门文章

  1. Python递推表达式
  2. 以太坊智能合约开发 | 一个资深技术专家的心路历程
  3. IMDB影评分析实验
  4. V-REP 反向运动学教程
  5. 计算机屏幕面积有多少平方公里,北京和上海的面积各是多少
  6. php微信红包雨效果,【微信红包雨】 原来红包还可以这么玩!你造吗?
  7. Unable to initialize GTK: could not open display
  8. Jpcap JAVA捕捉并分析网络数据包
  9. 知识图谱之py2neo
  10. 【过零检测】市电过零检测电路参考设计