100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Python 最新版破解滑块验证码自动登录QQ空间

Python 最新版破解滑块验证码自动登录QQ空间

时间:2020-03-05 23:20:26

相关推荐

Python 最新版破解滑块验证码自动登录QQ空间

本节所讲内容:

Selenium+Python环境搭建及配置

滑块验证码步骤分解

QQ空间破解滑块验证码登录(全部代码请看最后

1.1 selenium 介绍

1.2 selenium+Python环境配置

前提条件:已安装好Python开发环境(python3.7.2),这是最基本的呦~

安装步骤:

1.安装selenium:pip install selenium

2. 安装webdriver

各大浏览器webdriver地址可参见:/download/

Firefox/mozilla/geckodriver/releases/

Chrome:/a//chromedriver/或者

http://chromedriver./index.html

IEhttp://selenium-release./index.html

注:webdriver需要和对应的浏览器版本以及selenium版本对应

3. webdriver安装路径

Win:复制webdriver到Python安装目录下或者在path中配置下路径(方便python能快速寻找)

2.滑块验证码步骤分解

第一步:访问QQ空间登录网址,定位iframe登录标签,点击账号密码

代码实现:

driver = webdriver.Chrome()driver.set_window_position(900, 10)driver.maximize_window()driver.get(url)#切换framedriver.switch_to.frame('login_frame')#点击driver.find_element_by_id("switcher_plogin").click()

第二步:跳转到输入界面,然后清空每个输入框的数据然后在点击登录

代码实现:

# 输入用户名和密码driver.find_element_by_id('u').clear()driver.find_element_by_id('u').send_keys('3403073998')driver.find_element_by_id('p').clear()driver.find_element_by_id('p').send_keys('family521@#!')sleep(1)# 点击登录driver.find_element_by_id('login_button').click()sleep(5)

第三步:再次定位到iframe按钮操作并进行拖拽,距离我们保持固定180,图片让它更换底板图片

在这个地方需要注意点的是我们并没有对滑块移动的距离进行确定,

只是写一个distances=180这个固定的距离,

当然在这个拉取的过程中每次拉取也有可能失败,这是正常现象,请各位拿到代码后运行下

代码实现:

# 切换iframetry:iframe = driver.find_element_by_xpath('//iframe')except Exception as e:passsleep(2) # 等待资源加载driver.switch_to.frame(iframe)# 等待图片加载出来WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, "tcaptcha_drag_button")))try:button = driver.find_element_by_id('tcaptcha_drag_button')except Exception as e:passsleep(1)# 开始拖动 perform()用来执行ActionChains中存储的行为#distance 代表的是滑块移动的距离,我们这里直接写死distance = 180times = 0while True:try:action = ActionChains(driver)#点击鼠标并进行拖拽action.click_and_hold(button).perform()# 清除之前的actionaction.reset_actions()#模拟轨迹方程track = get_track(distance)#开始模拟拖拽for i in track:#y轴不偏移,x轴持续滑动action.move_by_offset(xoffset=i, yoffset=0).perform()action.reset_actions()sleep(0.5)#释放鼠标action.release().perform()sleep(5)times += 1print('这是第{}次'.format(times))except:print('登录成功')break

轨迹方程:(为了模仿人为的动作,防止整理)

def get_track(distance):"""根据偏移量获取移动轨迹:param distance: 偏移量:return: 移动轨迹"""# 移动轨迹track = []# 当前位移current = 0# 减速阈值mid = distance * 4 / 5# 计算间隔t = 1# 初速度# v = 0v = 0while current < distance:if current < mid:# 加速度为正2# a_b = 8a = 10else:# 加速度为负3a = -3# 初速度v0v0 = v# 当前速度v = v0 + atv = v0 + a * t# 移动距离x = v0t + 1/2 * a_b * t^2move = v0 * t + 1 / 2 * a * t * t# 当前位移current += move# 加入轨迹track.append(round(move))return track

3. QQ空间破解滑块模拟登录全部代码

#!/usr/bin/python# -*- coding: utf-8 -*-# @Time : /2/21 21:18# @Author : Xuegod Teacher For# @File : qq空间.pyfrom time import sleepfrom selenium import webdriverfrom selenium.webdriver import ActionChainsfrom mon.by import Byfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDriverWaiturl = ''def get_track(distance):"""根据偏移量获取移动轨迹:param distance: 偏移量:return: 移动轨迹"""# 移动轨迹track = []# 当前位移current = 0# 减速阈值mid = distance * 4 / 5# 计算间隔t = 1# 初速度# v = 0v = 0while current < distance:if current < mid:# 加速度为正2# a_b = 8a = 10else:# 加速度为负3a = -3# 初速度v0v0 = v# 当前速度v = v0 + atv = v0 + a * t# 移动距离x = v0t + 1/2 * a_b * t^2move = v0 * t + 1 / 2 * a * t * t# 当前位移current += move# 加入轨迹track.append(round(move))return trackdef main():driver = webdriver.Chrome()driver.set_window_position(900, 10)driver.maximize_window()driver.get(url)driver.switch_to.frame('login_frame')driver.find_element_by_id("switcher_plogin").click()sleep(1)# 输入用户名和密码driver.find_element_by_id('u').clear()driver.find_element_by_id('u').send_keys('你的QQ账号')driver.find_element_by_id('p').clear()driver.find_element_by_id('p').send_keys('你的QQ密码')sleep(1)# 点击登录driver.find_element_by_id('login_button').click()sleep(5)# 切换iframetry:iframe = driver.find_element_by_xpath('//iframe')except Exception as e:passsleep(2) # 等待资源加载driver.switch_to.frame(iframe)# 等待图片加载出来WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, "tcaptcha_drag_button")))try:button = driver.find_element_by_id('tcaptcha_drag_button')except Exception as e:passsleep(1)# 开始拖动 perform()用来执行ActionChains中存储的行为distance = 180times = 0while True:try:action = ActionChains(driver)#点击鼠标并进行拖拽action.click_and_hold(button).perform()# 清除之前的actionaction.reset_actions()#模拟轨迹方程track = get_track(distance)#开始模拟拖拽for i in track:#y轴不偏移,x轴持续滑动action.move_by_offset(xoffset=i, yoffset=0).perform()action.reset_actions()sleep(0.5)#释放鼠标action.release().perform()sleep(5)times += 1print('这是第{}次'.format(times))except:print('登录成功')breakprint(driver.title)sleep(2)driver.quit()print("finish~~")if __name__ == '__main__':main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。